5.
#include void {
int t; while(m *s, int fun(int m, int n) {t=s[m]; s[m]=s[n]; s[n]=t; m++; n--;} } main() { Int a[5]={1,2,3,4,5},k; fun(a,0,4); for(k=0;k<5;k++) printf(\ } 6. int fun(char s[]) { int n=0; while(*s<='9'&&*s>='0') { n=10*n+*s-'0'; s++; } return(n); } main() { char s[10]={'6','1','*','4','*','9','*','0','*'}; printf(\ } 7. #include { int y; if(x==0||x==1) y=x*x-fun(x-2) return } main() { int x,y; y; return(3); Int fun(int x) \ x=fun(3); y=fun(4); printf(\ } 8. fun(int n,int *s) { int f1, f2; if(n==1 || n==2) else { fun(n-1, &f1); fun(n-2, &f2); *s=f1+f2; } } main() { int x; fun(6,&x); printf(\ } *s=1; 三、填空题 1. 以下程序实现了计算 x 的 n 次方,请将程序填写完整。 float power(float x,int n) { int i; float t=1; for(i=1;i<=n;i++) t=t*x; 【 1 】 ; } main( ) {float x,y; int n; scanf(\ y=power(x,n); printf(\ } 2. 以下程序实现了求两个数的最大公约数,请将程序填写完整。 int divisor(int a,int b) { int r; r=a%b; while( 【 2 】 ) { a=b;b=r;r=a%b;} return b; } void main() { int a,b,d,t; scanf(\ if (a { t=a; a=b; b=t; } d=divisor(a,b); printf(\ } 3. 以下函数 my_cmp( )的功能是比较字符串 s 和 t 的大小,当 s 等于 t 时返回 0,否则返 回 s 和 t 的第一个不同字符的 ASCII 码差值,即 s>t 时返回正值, s my_cmp(char *s,char *t) { while(*s == *t) { if ( 【 3】 ) return 0; ++s; ++t; } return 【4】 ; } 4. 以下程序的功能是 :删去一维数组中所有相同的数 ,使之只剩一个。数组中的数已按由小到大 的顺序排列 ,函数返回删除后数组中数据的个数。请将程序填写完整。 例如 ,若一维数组中的数据是 : : 2223445666677899101010 2345678910 。 删除后 ,数组中的内容应该是 #include #define N 80 int fun(int a[], int n) {int i,j=1; for(i=1;i if(a[j-1] 【 5 】 a[i]) a[j++]=a[i]; return 【6 】; } main( ) { int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19; printf(\ for(i=0;i printf( “%d ”,a[i]); n=fun(a,n); printf(\ for(i=0; i printf( “%d ”,a[i]); } 四、编程题 1. 请用自定义函数的形式编程实现, 2. 请用自定义函数的形式编程实现求 3. 请编写两个自定义函数, 求 s=m!+n!+k! ,m、n、k 从键盘输入 (值均小于 7)。 10 名学生 1 门课程成绩的平均分。 分别实现求两个整数的最大公约数和最小公倍数, 并用主函数 调用这两个函数,输出结果(两个整数由键盘输入得到)。 4. 已知二阶 Fibonacci 数列: 0 Fib(n) 1 若 n=0 若 n=1 其他情况 Fib(n-1)+Fib(n-2) 请编写一个递归函数,实现求 Fib(n) 。 第 6 章 一、选择题 B 2. C 3. 12. A 22. D 1. B 4. B 5. C 6. 16. D C 7. D 8. C 9. D 10. D 20. A 11. A 21. A 30. A 13. C 23. C 14. D 24. B 15. D 25. A 17. B 18. A 19. A 26. 【1】A 26. 【2】D 27. 【1】B 27. 【2】D 33. 【3】A 36. 【1】D 38. 【1】C 27. 【3】C 31. D 34. 【1】D 36. 【2】B 38. 【2】B 40. 【2】B 28. 【1】D 32. 【1】B 34. 【2】C 36. 【3】A 38. 【3】A 40. 【3】D 28. 【2】 C 32. 【2】 A 35. 【1】 C 37. 【1】 A 39. 【1】 C 29. 【1】 C 33. 【1】 C 35. 【2】 A 37. 【2】 B 39. 【2】 B 29.【 2】D 33.【 2】B 35.【 3】B 37.【 3】A 39.【 3】A 40. 【1】C 1. 2. 3. 4. 5. 6. 7. 8. 31 15 二、读程序写结果: asd af aa z67 *p1=20,*p2=10 x=10,y=20 5 4 3 2 61 6,15 8 1 三、填空题 1 .【 1 】 return t 2 .【 2 】 r!=0 3 .【 3 】 *s == ,\\0? 【 4 】 *s-*t 4.【 5】 != 【 6 】 j 四、编程题 1. #include while(x>0) { y*=x; x--; } return(y); } main() { int m,n,k; printf(\ scanf(\ printf(\ } 2 . #include float average(float array[]) { int i=0; float s=0; for(i=0;i s+=array[i]; s=s/N; return s; } main() { float score[N],i; float ave; printf(\for(i=0;i scanf(\ ave=average(score); printf(\ } 3. #include { a=b;