类型一:与*号有关的操作
43. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。 int i,j=0; for(i=h;i< n-e ;i++) a[j++]=a[i]; a[j]= ‘\0’ ; 改错:[1] fun(int x,int y,int z) [2] return j; 填空:[1]N [2]substr [3]0 | 45.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G**********。在编写函数时,不得使用C语言提供的字符串函数。 int i=0,n=0 ; char *p ; p=a; while (*p=='*') {n++ ; p++; } while (*p) { a[i]= *p ; i++; p++ ; } while(n!=0) { a[i]= '*' ;i++ ;n-- ; } a[i]= '\0' ; 改错:[1] s[j++]=s[i];[2] s[j]='\0'; 填空:[1] struct student [2] a.name [3] a.score[i] |
31、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 编程:int i=0, k=0; char *p, *t; p=t=a; while(*t=='*') {k++; t++;} if(k>n) { while(*p) { a[i]= *(p+k-n) ; i++; p++; } a[i]='\0'; } 填空:[1] [M][2] N[3]'\0' 改错:[1] t=1.0;[2]while(t>=eps) [3]return(s*2); | 18套:.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。 编程:while(*a!='\0') a++; a--; while(*a=='*') a--; *(a+1)='\0'; 填空:N i -1 改错:改为:a2=k/10; 改为:return i; |
类型二:套用公式计算型
37.请编写函数fun,其功能是:计算并输出下列多项式 值:例如,若主函数从键盘给n输入50后,则输出为 S=1.960784。s=1+1/(1+2)+1/(1+2+3)+..1/(1++50) int i; double s=0.0,s1=0.0; for(i=1;i<=n;i++) { s1=s1+i; s=s+1.0/s1; } return s; 改错:[1] if(t==0) [2] * zero=count; 填空:[1]n%10 [2]break [3]break | 40. 请编写函数fun,其功能是:计算并输出下列多项式值: Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 例如,若主函数从键盘给n输入15,则输出为s=2.718282。注意:n的值要求大于1但不大于100。 double t,sn=1.0; int i,j; for(i=1;i<n;i++) { t=1.0; for(j=1;j<=i;j++) t*=j; sn+=1.0/t;} return sn; 改错:[1] for(i=1;i<=3;i++) 填空:[2] if((k>=1&&k<=6)&&(i!=0&&j!=0)||k==0) [1]x [2]n [3]fabs(t) |
9、请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n) 例如,若主函数从键盘给n输入8后,则输出为S=0.662872。 int i; double sum=0.0; if (n>1&&n<=100) {for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);} return sum; 填空 [1]a[i] [2]0[3]0 改错 [1]sum=j=0;[2]if(sum%4==2) | 11、请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n) 例如,若主函数从键盘给n输入8后,则输出为S=0.662872。 编程:int i; double sum=0.0; if (n>1&&n<=100) { for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);} return sum; 填空 [1]a[i][2]0[3] 0 改错 [1]sum=j=0;[2]if(sum%4==2) |
13、请编写函数fun,其功能是:计算并输出 S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5) 例如,若主函数从键盘给n输入20后,则输出为s=534.188884。 编程 int i; double s=0.0,s1=0.0; for(i=1;i<=n; i++) {s1=s1+pow(i,0.5); s=s+s1; } return s; 填空:[1]a[2]a[3]b 改错 [1]c=c+32;[2]c=c+5; | 32、请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。 编程:int i,j=0; double s=0; for (i=3;i<=n;i++) { for (j=2;j<=i;j++) if (i%j==0) break; if(j==i) s=s+sqrt(i); } return s; 填空 [1]i[2]t++[3]count 改错 [1]int fun(int a,int b,int c) [2]return 3; [3]else return 1; |
30、请编写函数fun,其功能是:计算并输出给定10个数的方差: 例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0, 56.0,则输出为S=11.730729。编程:double x1=0.0, s=0.0; int i; for(i=0;i<10;i++) x1=x1+x[i]; x1=x1/10; for(i=0;i<10;i++) s=s+(x[i]-x1)*(x[i]-x1); return sqrt(s/10); 填空:[1]x[2]n[3]t 改错:[1] k=i;[2]b=k%10;[3]c=k/10; | 21套:请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n) 例如,若主函数从键盘给n输入8后,则输出为S=0.662872。 编程:int i; double sum=0.0; if (n>1&&n<=100) {for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);} return sum; 填空:[1]j=2[2]i[3]j改错:改为:if(*r == '\0') 改为:if(sum%4==2) |
23套:请编写函数fun,其功能是:计算并输出当x<0.97时下列多项 式的值,直 到|Sn-S(n-1)|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+ 0.5(0.5-1)(0.5-2).....(0.5-n+1)/n!x(n) 例如,若主函数从键盘给x输入0.21后,则输出为s=1.100000。 double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do {s0=s1;sum+=s0;t*=n;p*=(0.5-n+1)*x; s1=p/t; n++;}while(fabs(s1-s0)>1e-6); return sum; 填空:[1] x[2]n[3]fabs(t) 改错:[1]改为:for(i=1;i<=y;i++) [2]改为:t=t%1000; | |
类型三:调整一个数的个、十、百、千位
2、请编写函数fun,其功能是:将两个两位数的正整数 a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数 的十位和个位数依次放在c数的千位和十位上。 例如,当a=45,b=12,调用该函数后c=1524。 *c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10 ; 填空:[1]sturct student [2]a.name [3]a.score[i] 改错:[1]if(p==n) return -1;[2]a[i]=a[i+1]; | 6、请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12,调用该函数后c=4152。 *c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10 ; } 填空:[1]STYPE [2]FILE[3]fp 改错:[1]for(i=0;i< sl;i ++)[2]t[2*sl]='\0'; |
26、请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。 例如,当a=45,b=12,调用该函数后c=2514。 本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。 *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10 ; } 填空:[1]fp [2]fclose(fp)[3]fname 改错:[1]for(i=j+1;i<n;i++) [2]p=i; | |
类型四:与下标或ASCII码有关
38. 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 int i,j=0; for(i=0;s[i]!= '\0' ;i++) if(i%2==0 && s[i]%2==0) t[j++]=s[i]; t[j]='\0'; 改错:[1] while(i<j) [2] *c=‘\0' 填空:[1]j [2]k [3]p | 49编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。 int i,j,t; for(i=1;i<num-2;i++) for(j=i+1;j<num-1;j++) if(s[i]<s[j]) { t=s[i];s[i]=s[j];s[j]=t;. 改错:[1] if(* p == ' ')[2] * (p-1)=toupper(*(p - 1)); 填空:[1] ss[i] [2]n+j [3]1 |
50. 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl23456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246。 int i,j=0; for(i=0;s[i]!= '\0' ;i++) if(i%2==0 && s[i]%2==0) t[j++]=s[i]; t[j]='\0'; 改错:[1] if (d%2==0) [2] s/= 10; 填空:[1]”r” [2]fs [3]ft | 24套:请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 编程:int i=0; for(;*s!='\0';s++) if(*s%2==1) t[i++]=*s; t[i]='\0'; 填空:STU std[i].num std[i] 改错: 改为:r++; p++; 改为:if(*r == '\0') |
类型五:数组和矩阵操作
39. 下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。 int i,j; for(i=0; i<N; i++) for(j=N-1; j>=i; j--) a[i][j]*=m; 改错:[1] float fun(int n) [2] for (i=2;i<=n;i++) 填空:[1] *av [2]i [3]x[j] | 44. 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:若二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 int sum=0,i; for(i=0;i<N;i++) sum+=a[0][i]+a[M-1][i]; for(i=1;i<M-1;i++) sum+=a[i][0]+a[i][N-1]; return sum; 改错:[1] num[k]=0;[2] switch(*s) 填空:[1] x[i]/N [2] j++ [3]i++ |
46. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:若n的值为3,a数组中的值为 ,则返回主程序后a数组中的值应为。 int i,j; for(i=0; i<N; i++) for(j=0; j<=i; j++) a[i][j]*=n; 改错:[1] if(k > 0) [2] else if(k==0) 填空:[1] STU [2] score[i] [3] &std | 48. 编写程序,实现矩阵(3行3列)的转置(即行列互换)。 int i,j,t; for(i=0;i<2;i++) for(j=i+1;j<3;j++) {t=array[i][j];array[i][j]=array[j][i];array[j][i]=t; 改错;[1] sum=0 [2] scanf("%d",&a[i][j]); 填空:[1]N [2]break [3]n |
4、请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。该题用for(i=0;i<N;i++)来控制一列一列地,而内嵌循环for(j=0;j<M;j++)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)。 编程:int i,j; c语言二维数组转置 for(i=0;i<N;i++) { pp=tt[0][i]; for(j=0;j<M;j++) if(tt[j][i]<pp[i]) pp[i]=tt[j][i];} 填空:[1] std[0] [2] std[i].age[3]max.name 改错:[1]void fun(int *a,int *b) [2]t=*b; *b=*a; *a=t; | 29、下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:若a数组中的值为 则返回主程序后s的值应为3.375。注意不能重复计算,第一个for循环求出第一列与最后一列的和,第二个for循环求出第一行与最后一行(已除去两头元素),要注意第二个for中起始为1,最后为N-2。 编程:int i,t=0; double s=0; for(i=0;i<N;i++) {s+=w[i][0]+w[i][N-1];t+=2;} for(i=1;i<N-1;i++) { s+=w[0][i]+w[N-1][i];t+=2;} s=s/t;return s; 填空:[1]*av[2]i[3]x[j] 改错:[1] # include “stdio.h” [2]upfst(char *p) |
20套:下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 编程: int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0; 填空:[1]std[ ][2]PERSON[3]Std 改错:[1]改为:int k,q,i; [2]改为:pt[i]=str[k][i]; | |
类型六:学生分数操作
36. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。 int k,i; (*s).s=a[0].s; for( i=0;i<N; i++) if (a[i].s<(*s).s) { (*s).s=a[i].s; k=i; } strcpy ( (*s).num, a[k].num); 改错:[1] double fun(int m) [2] for(i=100;i<=m;i += 100) 填空:[1]*av [2]i [3]x[j] | 10、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 编程:int i; *s=a[0]; for( i=1;i<N; i++) if (a[i].s>(*s).s) *s=a[i]; 填空 [1]STU[2]std[i].num [3]std[i] 改错 [1]IsPrime(int n)[2]if (!(n%i)) |
16、请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。 编程:float av=0.0; int i; for(i=0;i<n;i++) av=av+a[i]; return (av/n); 填空:[1]x[2] p[3]x 改错:[1]long k=1;[2] num/=10; | 27、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 编程:int i,j=0, n=0, min ; min=a[0].s ; for (i=0 ; i<N ; i++) if( a[i].s<min) min=a[i].s ; for (i=0 ; i<N ;i++) if( a[i].s==min) { *(b+j)=a[i] ; j++; n++; } return n ; 填空:[1]*fw[2]str[3]str 改错:[1]void fun (long s,long *t)[2]while(s > 0) |
25、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 编程:int i;double av= 0.0 ; *n=0; for(i=0;i<N;i++) av=av+a[i].s; av=av/N; for(i=0;i<N;i++) if(av<=a[i].s) { b[*n]=a[i];*n=*n+1;} return av ; 填空:[1]STU[2]score[i][3]&std 改错:[1]double fun(double a,double x0) [2]if(fabs(x1-x0)>=0.00001) | 1、去掉一个最高分和一个最低分求平均值 编程没答案 填空:[1]a[i]=0[2]m%10[3]m/10 改错:[1] b[i] = a[i][0]; [2]for (j=1; j<=N-1; j++) [3]if ( b[i] > a[i][j] ) |
类型七:字符和字符串操作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论