第一套:
1.程序填空题
在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include
#include
void fun(___1___,int n)
{
double count=0.0;
double average=0.0;
int i=0;
for(i=0;i ___2___; average=___3___; for(i=0;i if(a[i] { if(i%5==0) printf("\n"); printf("%d,",a[i]); } } main() { int a[1000]; int i=0; printf("\nPlease enter datas(end with 0):"); do { scanf("%d",&a[i]); }while(a[i++]!=0); fun(a,i-1); } 2.程序修改题 给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值: y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m) 例如:若m中的值为5,则应输出1.463611。 请改正程序中的错误,使其能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include double fun(int m) { double y=1.0; int I; /**********found**********/ for(i=2;i /**********found**********/ y+=1/(i*i); return(y); } main() { int n=5; printf("\nThe result is %lf\n", fun(n)); } 3.程序设计题 函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG 123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应是“246”。 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 #include #include void fun(char s[], char t[]) { } main() { char s[100],t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s,t); printf("\nThe result is: %s\n",t); }【解析】 (1)本题主要考查对奇偶数的判断以及库函数strlen的使用。根据题意可知,只保留下标为偶数、同时ASCII值也为偶数的字符,这就需要用循环变量k将字符串查看一遍,逐个字符判断是否满足条件k%2== 0 && s[k]%2==0,并将满足条件的字符复制到t中,再设一个计数器变量n,统计复制到t的字符数。复制完毕,在串尾设字符串结束符'\0'。(2)按上述分析写出的函数是: 第二套: 1.程序填空题 给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include #define N 4 void fun(inta[][N],int b[]) { int I,j; for(i=0; i { /**********found**********/ b[i]=___1___; for(j=1;j /**********found**********/ if(b[i]___2___a[j][i]) b[i]= a[j][i]; } } main() { int x[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],I,j; printf("\nThe matrix :\n"); for(i=0;i { for(j=0; j printf("%4d",x[i][j]); printf("\n"); } /**********found**********/ fun(___3___); printf("\nThe result is:"); for(i=0; i printf("\n"); } 2.程序修改题 给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积。 例如,若输入252,则输出应该是20;若输入202,则输出应该是0。 请改正程序中的错误,使其能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include long fun(long num) { /**********found**********/ long k; do { k*=num%10 ; /**********found**********/ num\=10; }while(num); return (k); } main() { long n; printf("\Please enter a number:"); scanf("%ld",&n); printf("\n%ld\n",fun(n)); } 3.程序设计题 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:使N×N的二维数组左下三角元素中的值乘以n。 例如:若n的值为3,a数组中的值为: 1 9 7 2 3 8 4 5 6 则返回主程序后a数组中的值应为: 3 9 7 6 9 8 12 15 18 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 #include #include #define N 5 int fun(int a[][N],int n) { } main() { int a[N][N],n,I,j; printf("***The array***\n"); for(i=0;i { for(j=0;j { a[i][j]=rand()%10; printf( "%4d", a[i][j] );} printf("\n"); } do n=rand()%10; while(n>=3); printf("n=%4d\n",n); fun(a,n); printf ("***THE RESULT***\n"); for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } } 第三套: 1.程序填空题 请补充函数fun,该函数的功能是:统计所有小于等于x(x>2)的素数的个数,素数的个数作为函数值返回。例如,输入x=20,结果:2,3,5,7,11,13,17,19。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include int fun(int x) { int I,j,count=0; printf("\nThe prime number between 2 to %d\n",x); for(i=2;i<=x;i++) { for(___1___;j if(___2___%j==0) break; if(___3___>=i) { count++; printf(count%15 ? "%5d" : "\n%5d",i); } } return count; } main() { int x=20,result; result=fun(x); printf("\nThe number of prime is : %d\n",result); } 2.程序修改题 给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正程序中的错误,使其能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include void fun(char *s) { int i,j; for(i=0,j=0;s[i]!='\0';i++) if(s[i]>='0'&&s[i]<='9') /**********found**********/ s[j]=s[i]; /**********found**********/ s[j]="\0"; } main() { char item[80]; printf("\nEnter a string:"); gets(item); printf("The string is:%s\n",item); fun(item); printf("The string of changing is:%s\n",item); } 3.程序设计题 请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为:71.80。 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 #include float fun(float *a,int n) { } main() { float score[30]={90.5,72,80,61.5,55}, aver; aver=fun(score,5); printf("Average score is:%5.2f\n", aver); } 第四套: 1.程序填空题 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回: S=1*3/(2*2)+3*5/(4*4)+5*7/(6*6)+…+(2n-1)*(2n+2)/ (2n)*(2n) 例如:当行参n的值为10时,函数返回9.612558。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序已给出。不得增行或删行,也不得更改程序的结构! #include double fun(int n) { int i; double s,t; /**********found**********/ s=___1___; /**********found**********/ for(i=1;i<=___2___;i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/___3___; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("The result is: %f\n",fun(n)); } 2.程序修改题 在给定程序中,fun函数的功能是:将n个无序整数从小到大排序。 请改正程序中的错误,使其能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include fun(int n,int a[]) { int i,j,p,t; for(j=0;j { p=j; /**********found**********/ for(i=j+1;i if(a[p]>a[i]) /**********found**********/ t=I; if(p!=j) {t=a[j];a[j]=a[p];a[p]=t;} } } putarr(int n,int z[]) { int i; for(i=1;i<=n;i++,z++) { printf("%4d",*z); if(!(i%10)) printf("\n"); } printf("\n"); } main() { int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11; printf("Before sorting%d numbers:\n",n); putarr(n,aa); fun(n, aa); printf("After sorting%d numbers:\n",n); putarr(n,aa); } 3.程序设计题 请编写一个函数unsigned fun(unsigned n),n是一个大于10的无符号整数,若n是m(m≥2)位的整数,则函数求出n的后m-1位的数作为函数值返回。 例如,若n的值为1234,则fun()函数值为234。 第五套: 1.程序填空题 给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。 例如,输入一个整数:27638496,函数返回值为:64862。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include unsigned long fun(unsigned long n) { unsigned long x=0; int t; while(n) { t=n%10; /**********found**********/ if(t%2==___1___) /**********found**********/ x=___2___+t; /**********found**********/ n=___3___; } return x; } main() { unsigned long n=-1; while(n>99999999||n<0) { printf("input(0 scanf("%ld",&n); } printf("The result is: %ld\n",fun(n)); } 2.程序修改题 下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。 请改正程序中的错误,使其能得到正确的结果。 注意:不要改动main函数,不能增行或删行,也不得更改程序的结构。 #include int fun(int x,int y,int z) { int I,temp,n,m; /*******found*********/ i=1; temp=m=n=1; /********found********/ while(temp!=0 && m!=0 && n!=0) { i=i+1; temp=i%x; m=i%y; n=i%z; } return I; } main() { int a,b,c,I; printf("Input a b c: "); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d \n",a,b,c); i=fun(a,b,c); printf("The minimal common multipleis:%d\n",i); }【答案】 3.程序设计题 编写函数fun,其功能是:根据以下公式计算s,将结果作为函数值返回;n通过形参传入:S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…n) 例如:若n的值为11时,函数的值为:1.833333 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 #include float fun(int n) { } main() { int n; float s; printf("\nPlease enter N:"); scanf("%d", &n); s=fun(n); printf("the result is: %f\n", s); } 第六套: 1.程序填空题 给定程序中,函数fun的功能是计算下式: S=1*3/(2*2)+3*5/(4*4)+5*7/(6*6)+…+(2n-1)*(2n+1)/(2n*2n) 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include double fun(double e) { int i double s,x; /**********found**********/ s=0; i=___1___; x=1.0; while(x>e) { /**********found**********/ ___2___; /**********found**********/ x=(2*i-1)*(2*i+1)/(___3___*(2*i)); s=s+x; } return s; } main() { double e=1e-6; printf("The result is: %f\n",fun(e)); } 2.程序修改题 下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入adf,则应输出adf。 请改正程序中的错误,使其能得到正确的结果。 注意:不要改动main函数,不能增行或删行,也不得更改程序的结构。 #include #include void fun(char s[]) { char ch; int i,j; /*******found********/ for(i=strlen(s);I;i--) for(j=0;j /********found*******/ if(s[j] { ch=s[j]; s[j]=s[j+1]; s[j+1]=ch; } } main() { char str[81]; printf("\nPlease enter a character string: "); gets(str); printf("\n\nBefore sorting:\n %s ",str); fun(str); printf("\nAfter sorting decendingly:\n%s",str); } 3.程序设计题 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的变量r。 例如,若c数组中的值为: 则返回主程序后r的值应为4.625000。 注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。 #include #include #include #define N 3 double fun(int b[][N]) { } main() { int c[N][N]={1,8,4,7,5,3,3,9,2}; int I,j; FILE *out; double r; printf("**********\n"); for(i=0;i { for(j=0;j { printf("%4d",c[i][j]); } printf("\n"); } r=fun(c); printf("THE RESULT\n"); printf("The r is %lf\n",r); out=fopen("outfile.dat","w"); fprintf(out,"%lf",r); fclose(out); } 第七套: 1.程序填空题 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include #include #define N 5 #define M 10 /**********found**********/ void fun(char (ss_[10]_, int k) { int i=0 ; /**********found**********/ while(i<__N__){ /**********found**********/ ss[i][k]=___3___; i++; } } main() { char x[N][M]={"Create","Modify","Sort","skip","Delete"}; int i; printf("The original string\n"); for(i=0;i printf("\n"); fun(x,4); printf("The string after deleted :\n"); for(i=0;i printf("\n"); } 2.程序修改题 下列给定程序中,函数fun的功能是:计算并输出以下数列的前m项之和SN,直到SN+1 大于p为止,p的值通过形参传入。 例如,若p的值为10.0,则函数值为9.592857。 请改正程序中的错误,使其能得到正确的结果。 注意:不要改动main函数,不能增行或删行,也不得更改程序的结构。 #include #include double fun(double p) { int m; double s,t; m=2; s=2.0; while(s<=p) { t=s; /*******found********/ s=s+(m+1)/m; m++; } printf("n=%d\n",m); /*******found********/ return s; } main() { printf("%f\n",fun(10)); } 3.程序设计题 函数fun的功能是:逐个比较x、y两个字符串对应位置中的字符,把ASCII相等或值小的字符依次存放到z数组中,形成一个新的字符串。例如,若x中的字符串为AbceDEfG,y 中的字符串为ABdefgC,则z中的字符串应为ABceDEC。 (自己写答案) 第八套: 1.程序填空题 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! #include #define N 20 void fun(int a[]) { int i,x,n=0; x=rand()%20; /**********found**********/ while (n<___1___) { for(i=0; i /**********found**********/ if(x==a[i])___2___; /**********found**********/ if(i==___3___){a[n]=x; n++;} x=rand()%20; } } main() { int x[N]={0},I; fun(x); printf("The result : :\n"); for(i=0;i { printf("%4d",x[i]); if((i+1)%5==0) printf("\n"); } printf("\n\n"); } 2.程序修改题 给定程序中,函数fun()的功能是:求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。 请改正程序中的错误,使其能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #include #include #define N 20 void fun(int *a,int n) { int I,m,t,k; /**********found**********/