第一次试验
Posted T.X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一次试验相关的知识,希望对你有一定的参考价值。
试验一:用递归函数计算1+2+....+100的值。
#include<stdio.h> int sum(int n); int main() { int num=0; num=sum(100); printf("%d",num); return 0; } int sum(int n) { if(n==1) return 1; else return n+sum(n-1); }
试验二:用递归函数将int 483 转换为字符串 483.
#include<stdio.h> void ver(int a); int main() { ver(483); return 0; } void ver(int a) { int b=0; char c; if(a!=0) { ver(a/10); b=a%10; c=b+\'0\'; printf("%c",c); } }
试验三:在子函数中用指针将主函数中的两个数交换数值。
#include<stdio.h> void f(int *a,int *b); int main() { int a,b; printf("请输入两个数。\\n"); scanf("%d%d",&a,&b); f(&a,&b); printf("%d\\t%d",a,b); return 0; } void f(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; }
实验四:将整数用递归转换为字符串。
#include<stdio.h> void ver(int n,char a[]); int main() { int b=0; char a[100]; scanf("%d",&b); ver(b,a); puts(a); return 0; } void ver(int n,char a[]) { static i=1; int q=n,num=0,b=0; while(q!=0) { q=q/10; num++; } if(n!=0) { b=n%10; a[num]=b+\'0\'; i++; ver(n/10,a); } else { a[i]=\'\\0\'; } }
总结:想清楚递归的思路,它是如个一次一次调用本身,并当到临界条件时,又一次次返回到第一次调用的。
在子函数中交换主函数中的两个数值,比如向形参传递地址,而非数值,如果传递数值,那么在子函数中交换的只是形参,当函数调用结束后,形参内存释放,主函数中数值并没有改变。传递地址,通关指针间接访问主函数中的两个数值,交换主函数中的数值。
以上是关于第一次试验的主要内容,如果未能解决你的问题,请参考以下文章
Sublime Text自定制代码片段(Code Snippets)