1、1. 下 列 程 序 定 义 了 nn 的 二 维 数 组 , 并 在 主 函 数 中 自 动 赋 值 。 请 编 写 函 数 fun(int an),该 函 数 的 功 能 是 : 使 数 组 左 下 半 三 角 元 素 中 的 值 全 部 置 成 0。答案:int fun(int aN) int I,j; for(i=0;iN;i+) for(j=0;j=I;j+) aij=0; 2. 请编写函数 fun,对长度位 7 个字符的字符串,除首尾字符外,将其余 5 个字符按 ascii码降序排列。 答案: void fun(char *s,int num) char t; int I,j; f
2、or(i=1;inum-2;i+)for(j=i+1;jnum-1;j+)3. 请编写函数 fun,其功能是:将 s 所指字符串中除了下标为偶数、同时 ascii 值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在 t 所指的一个数组中。答案: void fun(char *s,char t) int I,j=0,n;n=strlen(s); for(i=0;I,n;i+) if(i%2=0 j+; tj=0; 4. 请编写函数 fun,该函数的功能是:将 m 行 n 列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 答案: void fun(char (*s)n,
3、char *b) int i,j,k=0; for(j=0;jn;j+)for(i=0;im;i+) bk=*(*(s+i)+j) k+; bk=0; 5. 请编写函数 fun,其功能是:将所有大于 1 小于整数 m 的非素数存入 xx 所指的数组中,非素数的个数通过 k 传回。 答案: void fun(int m,int *k,int xx) int i,j; int n=0; for(i=4;i=0 else if(a=10 else if(a=20 else if(a=30 else if(a=40 else if(a=50 else if(a=60 else if(a=70 else
4、 if(a=80 else if(a=90else b10+=1; 7. 请编写函数 fun,其功能时:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中,合并的方式是:将 a 数的十位和个位数依次放在 c 数的十位和千位上,b 的十位和个位整数依次放在 c 数的百位和个位上。 答案: void fun(int a,int b,long *c) *c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10; 8. 请编写函数 fun,其功能使:将两个两位正整数 a b 合并形成一个整数放在 c 中。合并的方式使:将 a 数的十位和个位数依次放在 c 数的百位和个位上
5、,b 数的十位和个位数依次放在 c 数的千位和十位上。 答案: void fun(int a,int b,long *c) *c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10; 9. 请编写函数 fun,其功能是:将两个两位数的正整数 a b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 的十位和千位上,b 数的十位和个位数依次放在 c 数的个位和百位上。 答案: void fun(int a, int b, long *c) *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10; 10. m 个 人
6、 的 成 绩 存 放 在 score 数 组 中 , 请 编 写 函 数 fun,它 的 功 能 是 : 将 低 于 平 均 分 的 人作 为 函 数 值 返 回 , 将 低 于 平 均 分 的 分 数 放 在 below 所指定的函数中。答案: int fun(int score)int m,int below int i,k=0,aver=0; for(i=0;is;Do if(q-smax) max=q-s; q=q-next; while(q!=0);return max; 14. 请编写函数 fun,其功能是:将 s 所指字符串中除了下标为奇数、同时 ascii 值也为奇数的字符之外
7、,其余的所有字符都删除,串中剩余字符所形成的一个新串放在 t 所指的一个数组中。 答案: void fun(char *s,char t) int I,j=0,n;n=strlen(s); for(i=0;I,n;i+) if(i%2!=0 j+; tj=0; 15. 下列程序定义了 nn 的二维数组,并在主函数中自动赋值。请编写函数 fun(int an,int n),该函数的功能是:将数组右上半三角元素中的值乘以 m。 答案: void fun(int an,int m) int i,j; for(j=0;jn;j+)for(i=0;i=j;i+)aj=aj*m; 16. 已知学生的记录是
8、由学号和学习成绩构成,n 名学生的数据已存入 a 机构体数组中。请编写函数 fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数( 规定只有一个最高分)。 答案: void fun(stu a,stu *s) int i,max; max=a0.s; for (i=0;in;i+) if(a.smax) max=a.s; *s=a; 17. 编写一个函数 fun,它的功能是:实现两个字符串的连接(不使用库函数 strcat),即把p2 所指的字符串连接到 p1 所指的字符串后。 答案: void fun(char p1,char p2)int i=0,n=0; char *p=p
9、1,*q=p2;while (*p)p+; n+;i=n; while(*p)p1=*q; q+; i+; p1=0; 18. 编写一个函数,该函数可以统计一个长度为 2 的字符串在另一个字符串中出现的次数。答案: int fun(char *str,char *substr) int n; char *p,*r;n=0; while(*str)p=str; r=substr;while(*r)if(*r=*p)r+; p+;else break; if(*r=0) n+; str+;return n; 19. 请编写函数 fun,其功能是:将 s 所指字符串中下标位偶数同时 ascii 值为
10、奇数的字符删除,s 中剩余的字符形成的新串放在 t 所指的数组中。 答案: void fun(char *s,char t)int i,j=0,n=strlen(s);for(i=0;in;i+)if(i%2=0 j+; tj=0; 20. 请编写函数 fun,该函数的功能是:实现 b=a+a,即把矩阵 a 加上 a 的转置,存放在矩阵b 中。计算结果在 main 函数中输出。 答案: void fun(int a33,int b33) int i,j,at33;for(i=0;i=l j+; return j; 25. 编写函数藏服那,它的功能是:求 n 以内(不包括 n)同时能被 3 与
11、7 整除的所有自然数之和的平方根 s,并作为函数值返回。 答案: double fun(int n)double s=0.0; int i; for(i=1;in;i+) if(i%3=0 s=sqrt(s); return s;26. 请编写函数 fun,该函数的功能是:将 m 行 n 列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参 n 所指的储存单元中。 答案: void fun(int(*s)10,int *b,int *n,int mm,int nn)int i,j; for(i=0;imm;i+)for(j=0;jnn;j+) b*n=*(*(s+
12、i)+j); *n=*n+1; 27. 请别写函数 fun,该函数的功能是:将放在字符串数组中的 m 个字符串( 每串的长度不超过 n),按顺序合并组成一个新的字符串。 答案: void fun(char amn,char *b) int i,j,k=0; for(i=0;im;i+) for(j=0;jn;j+) if(*(*(a+i)+j)bk=*(*(a+i)+j) k+; else break; bk=0; 28. 请编写函数 fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 答案:int fun(in
13、t a,int n)int i,t,j=0,*p=a; t=p0; for(i=0;i=n;i+) if(t=p) ;else aj=t; t=p; j+;if(i=n) aj=t;return j; 29. 程序定义了 nn 的二维数组,并在主函数中自动赋值。请编写函数 fun,该函数的功能是:使数组左下半三角元素中的值乘以 n。 答案: fun(int an,int n)int i,j; for(i=0;in;i+)for(j=0;j=i;j+) aj=aj*n; 30. 请编写函数 fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词
14、由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。 答案: int fun (char *s) int i,n=0; for(i=0;istrlen(s);i+) if(s=a return sum; 45. 请编写一个函数 fun,其功能是:将两个两位数的正整数 ab 合并形成一个整数放在 c中。合并方式是:将 a 数的十位和个位数依次放在 c 数的个位和百位上,b 数的十位和个位数依次放在 c 数的十位和千位上。 答案: void fun(int a,int b,long *c) *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10; 46. 请编写
15、函数 fun,其功能是:将 s 所指字符串中 ascii 值为偶数的字符删除,串中剩余字符形成一个新串放在 t 所指的数组中。 答案: void fun(char *s,char t)int i,j=0,n=strlen(s);for(i=0;in;i+) if (s%2!=0)tj=s; j+; tj=0; 47. 请 编 写 一 个 函 数 void fun(int m,int k,int xx),该 函 数 的 功 能 是 : 将 大 于 整 数m 且紧靠 m 的 k 各 素 数 存 入 xx 所指的数组中。答案:void fun(int m, int k, int xx) int g=
16、0,I,j,flag=1; for(i=m+1;i=i) if (k=0) xxg+=i; k-; else break; 48. 已知学生的记录由学号和学习成绩构成,n 名学生的数据已存入 a 结构体数组中。请编写函数 fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数( 规定只有一个最低分)。 答案: void fun(stu a,stu *s)int i,min;min=a0.s; for(i=0;in;i+)if(a.smin)min=a.s; *s=a; 49. n 名学生的成绩已在主函数中放入一个带头节点的链表结构中,h 指向链表的头节点。请编写函数 fun,它的功
17、能是:求出平均分,由函数值返回。 答案: double fun(strec *h)double aver=0.0; while(h!=null)aver+=h-s; hy=h-next;aver/=n; return aver; 50. 请编写函数 fun,计算并输出给定 10 个数的方差。 答案: double fun(double x10) int i,j; double s=0.0,s1=0.0;for(i=0;i10;i+) s1+=x;s1/=10; for(j=0;j10;j+) s+=(xj-s1)*(xj-s1);s/=10; s=pow(s,0.5);return s; 5
18、1. 请编写函数 fun,其功能是:将两个两位数的正整数 a b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的千位和十位上,b 数的十位和个位数依次放在 c 数的个位和百位上。 答案: void fun(int a,int b,long *c) *c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10; 52. 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数亚时,不得使用 c 语言提供的字符串函数。 答案: void fun(char *a) in
19、t i=0;char *p=a; while(*p i+; p+; while(*p) if(*p!=*) a=*p; i+; p+; a=0; 53. 学生的记录是由学号和成绩组成,n 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能是:把高于等于平均分的学生数据放在 b 所指的数组中,高于等于平均分的学生人数通过形参 n 传回,平均分通过函数值返回。 答案: double fun(strec *a,strec *b,int *n) double aver=0.0;int i,j=0; for(i=0;in;i+) aver+=a.s;aver/=n; for(i
20、=0;in;i+) if(a.s)=aver*(b+j)=a; j+;*n=j; return aver; 54. 请编写函数 fun,其功能是:计算并输出下列多项式值:sn=(1-1/2)+(1/3-1/4)+(1/(2n-1)1/2n). 答案: sn=(1-1/2)+(1/3-1/4)+.+(1/(2n-1)1/2n). double fun(int n) int i; double sn=0.0; for(i=1;i=n;i+) sn+=(1.0/(2*i-1)-1.0/(2*i);return sn; 55. 请编写函数 fun,它的功能是:求出 1 到 100 之内能被 7 或者
21、11 整除,但不能同时北7 和 11 整 除 的 所 有 证 书 , 并将他们放在 a 所 指 的 数 组 中 , 通过 n 返 回 这 些 数 的 个 数 。答案:Void fun(int *a, int *n) int i,j=0; for(i=2;imax) max=si; *k=I; 59. 编写函数 fun,功 能 是 : 根 据 以 下 攻 势 计 算 s,计 算 结 果 作 为 函 数 值 返 回 ; N 通过形参传入。S=1+1/(1+2)+1/(1+2+3)+.+1/(1+2+3+4+n) 答案:float fun (int n) int i; float s=1.0, t=
22、1.0; for(i=2;i=n;i+) t=t+i; s=s+1/t; return s; 60. 编写一个函数 fun, 它 的 功 能 是 : 根 据 以 下 公 式 求 p 的 值 , 结 果 由 函 数 值 带 回 。 M 与n 为 两 个 正 整 数 , 且 要 求 mn。p =m!/n!(m-n)! 答案:float fun(int m, int n) float p,t=1.0; int I; for (i=1;i=m;i+) t=t*I; p=t; for(t=1.0,i=1;i= n;i+) t=t*I; p=p/t; for(t=1.0,i=1;i= m-n;i+) t=
23、t*I; p=p/t; return p; 61. 编写函数 fun,它的功能是:利 用 以 下 的 简 单 迭 代 方 法 求 方 程 cos(x)-x=0 的一个实根。迭代步骤如下:(1)取 x1 初值为 0.0;(2)x0=x1,把 x1 的值赋各 x0; (3)x1=cos(x0),求出一个新的 x1; (4)若 x0-x1 的 绝 对 值 小 于 0.000001,则执行步骤(5),否则执行步骤(2); (5)所求 x1 就是方程 cos(x)-x=0 的 一 个 实 根 , 作 为 函 数 值 返 回 。 程序将输出 root=0.739085。答案:float fun() flo
24、at x1=0.0,x0; do x0=x1; x1=cos(x0); while(fabs(x0-x1)1e-6); return x1; 62. 请编写函数 fun,它的功能是计算下列级数和,和值由函数值返回。 S=1+x+x(2)/2!+x(3)/3!+x(n)/n! 答案: double fun(double x, int n) double s=1.0, p=1.0; int I,j,t; for(i=1;i=n;i+)t=1; for(j=1;j=i;j+) t=t*j;p=p*x; s=s+p/t; return s; 63. 请编写函数 fun,其功能是:计算并输出 s=1+(
25、1+2(0.5)+(1+2(0.5)+3(0.5)+(1+2(0.5)+3(0.5)+n(0.5) 答案: double fun(int n) int I; double =1.0,p=1.0; for(i=2;i=n;i+) p+=pow(I,0.5); s+=p; 64. 规定输入字符串中只包含字母和*号。请编写函数 fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。 答案: void fun(char *a) int i=0;char *p=a; while(*p while(*p) ai=*p; i+; p+; ai=0; 65. *号不得多于 n 个;若多
26、于 n 个,则删除多于的*号;若少于或等于 n 个,则什么也不做。字符串中间和尾部的*号不删除。 答案: void fun(char *a, int n) int i=0,k=0;char *t=a; while(*t=*)k+; t+; t=a;if(kn) t=a+k-n;while( *t) ai=*t; i+; t+; ai=0; 66. 请编写函数 fun,其功能使:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 答案: double fun(double x9) double sum=0.0;int I,j=1; for(i=0;i9;i+) if(j=8)
27、 sum+=sqrt(xi+xi+1)/2.0);j+; return sum; 67. 请编写函数 fun,其功能是:计算并输出下列多项式值: s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+50) 答案: double fun(int n) int I,j; double sum=0.0, t; for(i=1;i=n;i+) t=0.0; for(j=1;j=I;j+) t+=j; sum+=1.0/t; return sum; 68. 请编写函数 fun,它的功能是:计算并输出 n(包括 n)以内能被 5 或 9 整除的所有自然数的倒数之和。 答案: double fun
28、(int n) int I; double sum=0.0; for(i=1;i=n;i+) if(i%5=0 | i%9=0) sum+=1.0/I;return sum; 69. 请编写函数 fun ,其功能是:计算并输出 3 到 n 之间所有素数的平方根之和。 答案: double fun(int n) int m,k,I; double s=0.0; for(m=3;m=n;m+) k=sqrt(m); for(i=2;i=k;i+)if(m%i=0) break;if(i=k+1) s+=sqrt(m); return s; 70. 请编写函数 fun,该函数的功能是:判断字符串是否
29、为回文?若是则函数返回 1,主函数中输出 yes,否则返回 0,主函数中输出 no。回文是指顺读和倒读都是一样的字符串。答案: int fun(char *str) int I,n=0;fg=1;char *p=str;while (*p) n+;p+; for(i=0;in/2;i+) if (stri=strn-1-i);Else fg=0;break; return fg;71. 学生的记录由学号和成绩组成,n 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能使:把分数最高的学生数据放在 h 所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学
30、生的人数。 答案: int fun (STREC *a, STREC *b) int I,j=0,n=0, max;max=a0.s; for(i=0;iN;i+)if(ai.smax) max=ai.s; for(i=0;iN;i+)if(ai.s=max) *(b+j)=ai; j+; n+; return n; 72. 请编写一个函数 fun,它的功能是:将一个字符串转换为一个整数(不得调用 c 语言提供的将字符串转换为整数的函数)。 答案: long fun (char *p) long s=0,t; int i=0,j,n=strlen(p),k,s1;if(p0=-) i+; fo
31、r(j=I;j=m) p=s;else p=t; return p; 74. 请编写一个函数 fun,它的功能是:根据以下公式求 x 的值(要求满足精度 0.0005,即某项小于 0.0005 时停止迭代):x/2=1+1/3+12/35+123/357+1234/3579+123n/357(2n+1) 程序运行后,如果输入精度 0.0005,则程序输出为 3.14。 答案: double fun(double eps) double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0;while(fabs(s)=eps) pi+=s; t=n/(2*n+1);s*=t
32、; n+; pi=pi*2;return pi; 75. 请编写一个函数 fun,它的功能是:求除 1 到 m 之内(含 m)能北 7 或 11 整除的所有整数放在数组 a 中,通过 n 返回这些数的个数。 答案: void fun(int m, int *a, int *n) int I,j=0; *n=0;for(i=1;i=m;i+) if (i%7=0 | i%11 =0) aj=I; j+;*n=j; 76. 请编写一个函数 fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中 x 是数组名,n
33、 是 x 中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。答案: void fun (int a,int n, int *max, int *d) int I; *max=a0; *d=0; for(i=0;In;i+)if(ai*max) *max=ai; *d=I; 77. 请编写一个函数 fun,它的功能是:将 ss 所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 答案: void fun(char *ss) int I,n; n=strlen(ss); for(i=1;i=areturn max; 79. 假定输入的字符串中只
34、包含字母和*号。请编写函数 fun,它的功能是:使字符串中尾部的*号不得多于 n 个;若多于 n 个,则删除多于的*号;若少于或等于 n 个,则什么也不做,字符串中间和前面的*号不删除。 答案: void fun(char *a,int n) int i=0;k=0; char *p, *t;p=t=a; while (*t) t+; t-; while(*t=*)k+; t-;t+;if(kn) while (*p i+; p+; ai=0; 80. 请编写一个函数,用来删除字符串中的所有空格。 答案: void fun(char *str) int i=0; char *p=str;whi
35、le (*p) if(*p!=) stri=*p; i+; p+; stri=0; 81. 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 答案: void fun(char *a) int i=0,n=0; char *p; p=a; while (*p=*)n+; p+; while (*p) ai=*p; i+; p+; while(n!=0) ai=*; i+; n-; ai=0; 82. 某学生的记录由学号、8 门课程成绩和平均分组成,学号和 8 门课程的成绩已在主函数中给出。请编写函数 fun,它的功能是:求出该学生的
36、平均分放在记录的 ave 成员中。请自己定义正确的形参。 答案: void fun(STREC *p) double av=0.0; int i: for(i=0;iN;i+)av+=p-si;av/=N; p-ave=av; 83. 请编写函数 fun,它的功能是:求出 ss 所指字符串中指定字符的个数,并返回此值。答案: int fun(char *ss, char c) int n=0;while (*ss) if(*ss=c) n+;ss+; return n; 84. 请编写函数 fun,该函数的功能是:移动一维数组中的内容,若数组中由 n 个整数,要求把下标从 0 到 p(p 小于
37、等于 n1)的数组元素平移到数组的最后。 答案: void fun(int *w, int p,int n) int bN, i, j=0;for(i=0;i=p;i+) bi=wi; j+; for(i=0;i=p;i+) wj=bi; j+; 85. 请编写一个函数 fun,它的功能使:计算 n 门课程的平均分,计算结果作为函数值返回。答案: float fun(float *a,int n) float ave=0.0; int i; for(i=0;in;i+) ave+=a; ave/=n; return ave; 86. 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的
38、功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。 答案: void fun(char *a) int i=0;char *p,*q; p=q=a; while(*p) p+; p-; while(*p=*) p-; while(q=p) A=0; 87. 请编写函数 fun,其功能是:将两个两位数的正整数 a b 合并形成一个整数放在 c 中,合并的方式是:将 a 数的十位和个位数依次放在 c 的个位和百位上,b 数的十位和个位数依次放在 c 数的千位和十位上。 答案: void fun(int a,int b,long *c) c=(b/10)*1000+(a%10)*100+(
39、b%10)*10+a/10; 88. 请 编 写 一 个 函 数 void fun(char a,char,int n),其 功 能 是 : 删 除 以 各 字 符 串 中 指定 下 标 的 字 符 。 其 中 , a 指 向 原 字 符 串 , 删 除 后 的 字 符 串 存 放 在 b 所 指 的 数 组 中 , n 中存放指定的下标。答案:void fun(char a,char b, int n) int I,j=0; for (i=0;iLEN;i+) if (i!=n) bj=ai; j+; bj=0; 89. 编写一个函数,从传入的 num 个字符串中找出一个最长的一个字符串,并通过形参指针 max 传回该串地址(用*作为结束输入的标志)。 答案: char *fun(char (*a)81,int num) int i; char *max;max=a0; for(i=0;inum;i+) if(strlen(max)strlen(a) max=a; return max;