完美WORD格式
swap2(&x,&y) ;
printf(\}
【提示】注意指针变量做函数参数时,改变形参的值就等同与改变了实参的值。 【解答】3,5 3,5 5,3
6.下列程序运行的结果为 。 long fib(int g) {
switch(g) {
Case 0: return 0; case 1:
case 2: return 1; }
return(fib(g-1)+fib(g-2)); }
main() {
long k; k=fib(7);
printf(\,k); }
【提示】注意函数递归调用的条件。 【解答】k=13 二.编程题
1.已知圆的半径为R,求它的面积。
#include
float area(float); /* 函数area的原型 ,即函数说明 */ float r,s; /* 主函数中的局部变量定义 */ printf(“ 请输入半径: \\n”); scanf(“%f”,&r);
s=area(r); /* 调用area函数 */ printf(“圆的半径为:%f\\n”,r); printf(“圆的面积为:%f\\n”,s); }
float area(float a) /* 定义函数area */ { float d; d=PI*a*a;
专业整理 知识分享
完美WORD格式
return(d); /* 返回计算结果 */
}
【提示】本程序由主函数main()和自定义函数area()组成。程序的前2句是文件包含语句,即把输入、输出标准函数和数学函数的文件包含到本程序中。第3句是宏定义语句,即用标识符PI来代替数字3.14159。
运行:请输入半径: 1.1 ↙ 显示:圆的半径为:1.1
圆的面积为:3.801324
2.编写一个函数输出三个数中的最大值。
【提示】在main()函数中输入数据,调用求3个数最大值函数。 int max(int x,int y,int z) {
int t ;
if(x>=y) t=x ; else t=y; if(t main() { int x,y,z; printf(\scanf(\ printf(\} 3.编写一个函数,将一个任意三位数n逆序输出。即若n=456,则输出654。 【提示】将一个三位数n分解为个位、十位和百位分别放入c,b,a中,然后逆序输出。 int rec(int x) { int a,b,c ; a=x/100; b=x0/10; c=x; return(c*100+b*10+a); } main() { int rec(int x); int y,z; printf(\ scanf(\ z=rec(y); printf(\} 专业整理 知识分享 完美WORD格式 4.编写比较两字符串是否相等的函数。 【提示】 按ASCII码值大小比较,将两个字符串自左至右逐个字符相比,直到出现不同的字符或遇到'\\0'为止。如果全部字符相同,则认为相等,如果出现不同的字符,则以第一个不同的字符的比较结果为准。比较结果由函数值带回。 参考代码: #include int resu; char s1[100],s2[100]; printf(\gets(s1) ; printf(\gets(s2); resu=cmp(s1,s2); printf(\与%s的比较结果是%d.\} int cmp(s1,s2) char s1[ ],s2[ ]; {int i=0; while((s1[i]==s2[i])&&(s1[i]!=0)&&(s2[i]!=0)) i++; if(s1[i]==’\\0’&&s2[i]==’\\0’) return 0; else return(s1[i]-s2[i]); } 5.编写求字符串长的函数。 【提示】字符串的长度不包括'\\0'在内。 参考代码: #include {int test(); int n; char str[100]; gets(str); n=test(str); printf(\} int test(str) char str[]; {int n=0; while(str[n]!=’\\0’) 专业整理 知识分享 完美WORD格式 n++; return(n); } 6.编写一个函数判定一个数是否是素数,在主函数中调用该函数,输入一个整数,输出是否是素数的信息。 【分析与提示】由主函数任意输入一个整数m,将其值传递给子函数isprime(m)由子函数判断这个数是否为素数,是return(1),否则return(0)。 参考代码: #include printf(\scanf(\isprime (m); } isprime(int n) { int i,k; k=n/2; for(i=2;i<=k;i++) if (n%i==0) break; if(i>=k+1) printf(\ else printf(\} 7.用指针写一个删除字符串中空格的函数。 【提示】用指针p1指向待处理的字符串,用*p1从串头到串尾逐一走动,每走到一个字符判断其是否为空格,若不是空格,则将其保存到指针*p2中。 参考代码: #include char *p1,*p2; for(p1=p2=str;*p1!=’\\0’;p1++) if(*p1==’ ’) continue; else *p2++=*p1; *p2='\\0'; } main( ) { char str[100]; gets(str); dele(str); puts(str); 专业整理 知识分享 完美WORD格式 } 8.用指针写合并两个字符串的函数。 【分析与提示】先将字符串str1从串头到串尾逐一拷贝到字符串str3中,接着将字符串str2从串头到串尾逐一拷贝到字符串str3中。 参考代码: #include char unitestring(char *str1,char *str2,char *str3) /*合并函数*/ { int i=0; while((*str1)!=’\\0’) { *(str3+i)=*str1; i++; str1++; } while((*str2)!=’\\0’) {*(str3+i)=*str2; i++; str2++; } *(str3+i)=’\\0’; /*不能自动加入\\0*/ } main( ) { char p[50],q[50],r[100]; /*r为连接后的字符串*/ printf(\ gets(p); /*输入字符串*/ printf(\ gets(q); /*输入字符串*/ unitestring(p,q,r); puts(r); /*输出结果*/ } 9.输入15个正整数,放在a数组中,要求:奇数放在a数组前部,偶数放在a数组后部。再分别对奇数和偶数排序。 【分析与提示】在main函数中将数组中的奇数放在a数组前部,偶数放在a数组后部。在分别两次调用sort函数将奇数和偶数进行排序。 参考代码: void sort(); main() { int a[15]; int i,j=14,n=0,t; for(i=0;i<15;i++) scanf(\i=0; 专业整理 知识分享