首页 2005~2011年全国计算机二级C语言机试题库

2005~2011年全国计算机二级C语言机试题库

举报
开通vip

2005~2011年全国计算机二级C语言机试题库下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+… f(n)的值。 例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)=  请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/ f(doubl...

2005~2011年全国计算机二级C语言机试题库
下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+… f(n)的值。 例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)=  请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题 中考模拟试题doc幼小衔接 数学试题 下载云南高中历年会考数学试题下载N4真题下载党史题库下载 程序: #include  #include  #include  #include  /*************found**************/ f(double x) { if(x==0.0||x==2.0)     return 0.0; else if(x<0.0)     return(x-1)/(x-2); else     return(x+1)/(x-2); } double fun(int n) {   int i;  double s=0.0,y;   for(i=-n; i<=n;i++)     { y=f(1.0*i); s+=y;} /*************found**************/   return s } void main() { system("CLS");   printf("%f\n", fun(5)); } 【参考答案】 (1)错误:f(double x)      正确:double f(double x) (2)错误:return s          正确:return s; t=1+1/2+1/3+1/4+…+1/m 例如,若输入5,则应输出2.283333。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include double fun(int m) {   double t=1.0;   int I;   for(I=2;I<=m;I++) /*************found**************/       t+=1.0/k; /*************found**************/   return I; } void main() {int m; system("CLS"); printf("\nPlease enter 1integer number: "); scanf("%d",&m); printf("\nThe result is %1f\n", fun(m)); } 【参考答案】 (1)错误:t+=1.0/k;      正确:t+=1.0/I; (2)错误:return I;        正确:return t; 下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数 。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include /*********found***********/ void fun(char *s,int a,int b) {     while(*s)     {         /*********found***********/         if(*s>='A' && *s<='Z')             a++;         /*********found***********/         if(*s>='a' && *s<='z')             b++;         s++;     } } main() {     char s[100];     int upper=0,lower=0;     printf("\nplease a string :");     gets(s);     fun(s,&upper,&lower);     printf("\n upper=%d lower=%d\n",upper,lower); } 【参考答案】 (1)错误:void fun(char *s, int a, int b) 正确:void fun(char *s, int *a, int *b)  (2)错误:a++;    正确:(*a)++; (3)错误:b++;    正确:(*b)++; 下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输 入252,则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include long fun(long num) { /*************found**************/ long k; do {     k *=num%10;     /*************found**************/     num \=10; }while(num); return(k); } main() { int  n; printf("\Please enter a number: "); scanf("%ld",&n); printf("\n%ld\n",fun(n)); } 【参考答案】 (1)错误:long k;    正确:long k=1; (2)错误:num\=10;      正确:num/ =10; 下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  double fun(int  n) { double result =1.0;   /*************found**************/   if n==0     return 1.0;   while(n>1&&n<170) /*************found**************/     result=n--;   return result; } void main() { int  n; printf("Input  N:"); scanf("%d",&n); printf("\n\n%d!=%lf\n",n,fun(n)); } 【参考答案】 (1)错误:if n==0        正确:if(n==0) (2)错误:result =n--;    正确:result *=n--; 下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整 除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include int fun(int k) { int m=0,mc=0, j;   while((k>=2)&&(mc<10))     { /*************found**************/       if((k%13=0)||(k%17=0))         { m=m+k;mc++;}       k--; /*************found**************/       return m; } void main() {system("CLS");   printf("%d\n ",fun(500)); } 【参考答案】 (1)错误:if((k%13=0)||(k%17=0)) 正确:if((k%13==0)||(k%17==0)) (2)错误:缺少大括号    正确:加 } 下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值:   请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include double fun(int m) {double y=1.0;   int I; /*************found**************/   for(I=2;I #include double  fun(int x[]) { /*************found**************/ int sum=0.0; int  c=0, I=0; while(x[I]!=0)     {       if(x[I]>0)         {           sum+=x[I];           c++;         }       I++;     } /*************found**************/ sum=sum\c; return  sum; } 【参考答案】 (1)错误:int sum=0.0;    正确:double sum=0.0; (2)错误:sum\=c;          正确: sum/=c; 下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返 回0。在main函数中,若fun()返回1则输出"YES",若fun()返回0则输出"NO!"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  int fun(int m) { int k=2;   while (k<=m&&(m%k)) /*************found**************/         k++  /*************found**************/   if(m=k)       return 1;   else return 0; } void main() { int n;   system("CLS");   printf("\nPlease enter n: "); scanf("%d",&n);   if(fun(n)) printf("YES\n");   else printf("NO!\n"); } 【参考答案】 (1)错误:k++        正确:k++; (2)错误:if(m=k)        正确:if(m==k) 下列给定程序中,函数fun的功能是:按如下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  /*************found**************/ int fun(n) {   int c; /*************found**************/   if(n=1)     c=10;   else     c=fun(n-1)+2;   return(c); } void main() {   int  n;   printf("Enter n: ");   scanf("%d",&n);   printf("The result: %d\n\n" ,fun(n)); } 【参考答案】 (1)错误:int fun(n)        正确:int fun (int n) (2)错误:if (n=1)        正确:if (n==1) 下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n项的值 。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项 的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include long fun(int g) { /*************found**************/    switch(g);     {case 0:return 0; /*************found**************/       case 1; case 2:return 1;     }   return (fun(g-1)+fun(g-2)); } void main() {   long fib; int n;   printf("Input n:");scanf("%d",&n);   printf("n=%d\n",n);   fib=fun(n);   printf("fib=%d\n\n",fib); } 【参考答案】 (1)错误:switch(g);  正确:去掉分号 (2)错误:case 1;case 2: return 1; 正确:case 1:case 2:return 1; 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和 a[0]中的数对调、次最大数和 a[1] 中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #define    N  20 /*************found**************/ void fun(int *a,int n); { int  I,  m, t, k; for(I=0; Ia[m])         m=k;     t=a[I];     a[I]=a[m];     a[m]=t;   } } main() {   int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;   system("CLS");   for(i=0; i #include /*************found**************/ void fun(int m,int k); { int aa[20], i;   for(i=0;m;i++)   {     /*************found**************/     aa[i]=m/k;     m/=k;   }   for(;i;i--)     /*************found**************/     printf("%d",aa[i]); } main() {   int b,n;   printf("\nPlease enter a number and a base:\n");   scanf("%d%d",&n,&b);   fun(n,b);   printf("\n "); } 【参考答案】 (1)错误:void fun(int m, int k); 正确:void fun(int m, int k) (2)错误:aa[i]=m/k ; 正确:aa[i]=m%k; (3)错误:printf("%d", aa[i]) ; 正确:printf("%d", aa[i-1]); 下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y) 的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,z的值为15时,函 数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  /*************found**************/ #define FU(m,n) (m/n) float fun(float a,float b,float c) { float value;   value=FU(a+b,a-b)+FU(c+b,c-b); /*************found**************/   return(Value); } void main() { float x,y,z,sum;   printf("Input x y z:: ");   scanf("%f%f%f",&x,&y,&z);   printf("x=%f,y=%f,z=%f\n ",x,y,z);   if(x==y||y==z) { printf("Data error! \n "); exit(0);}   sum=fun(x,y,z);   printf("The result is:%5.2f\n ",sum); } 【参考答案】 (1)错误:#define FU(m,n) (m/n) 正确:#define FU(m,n) (m)/(n) (2)错误:return(Value); 正确:return (value); 下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然 后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的 字符串应为EDCBAABCDE。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  #include  void fun (char *s, char *t ) {   int I,s1;   s1=strlen(s);      for (I=0;I int fun(int x,int y,int z) { int j,t,n,m;   /*************found**************/   j=1;   t=m=n=1;   /*************found**************/   while (t!=0 && m!=0 && n!=0)   {     j=j+1;     t=j%x;     m=j%y;     n=j%z;   }   return j; } void main() {   int x1,x2,x3,j;   printf("Input x1 x2 x3: ");   scanf("%d%d%d",&x1,&x2,&x3);   printf("x1=%d,x2=%d,x3=%d \n",x1,x2,x3);   j=fun(x1,x2,x3);   printf("The minimal common multiple is: %d\n",j); } 【参考答案】 (1)错误:j=1;      正确:j=0; (2)错误:while (t!=0 && m!=0 && n!=0) 正确:while (t!=0 || m!=0 || n!=0) 下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生 人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8 名学生的成绩: 80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为4(平均分为75.5625)。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #define N 20 int fun(float *s, int n,float *aver) { float ave ,t=0.0;   int count=0,k,i;   for(k=0;k #include  #include  void fun(char s[],int n)  { char a[80],*p; int I; /*************found**************/ s=p;  for(I=0;I #include  #include  fun(char *p) { int i, t; char c[80];   for(i=0,t=0;p[i];i++)       if(!isspace(*(p+i))) c[t++]=p[i]; /*************found**************/   c[t]="\0";   strcpy(p,c); } void main() {char c,s[80]; int i=0; printf("Input a string: "); c=getchar(); while(c!='#')       { s[i]=c;i++;c=getchar();} s[i]='\0'; fun(s); puts(s); } 【参考答案】 (1)错误:c[t]="\0";        正确:c[t]='\0'; 下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元 素的值,然后输出主对角线元素之和。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include void fun() { int a[3][3],sum; int i,j; /*************found**************/ sum=1; for (i=0;i<3;i++)     { for (j=0;j<3;j++) /*************found**************/       scanf("%d",a[i][j]);     } for(i=0;i<3;i++)     sum=sum+a[i][i]; printf("Sum=%d\n",sum); } void main() { fun(); } 【参考答案】 (1)错误:sum=1;        正确:sum=0; (2)错误:scanf("%d",a[i][j]); 正确:scanf("%d",&a[i][j]); 下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地址, 通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是 abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到 的信息"Not found!"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include #include char *fun(char *s,char *t) { char *p,*r,*a; /*************found**************/ a=Null; while(*s)   { p=s;r=t;     while(*r) /*************found**************/         if(r==p) {r++;p++;}         else break;     if(*r=='\0') a=s;     s++;   } return a; } void main() {char s[100],t[100],*p; system("CLS"); printf("\nPlease enter string S: "); scanf("%s",s); printf("\nPlease enter substring t: "); scanf("%s",t); p=fun(s,t); if(p) printf("\nThe result is:%s\n ",p); else printf("\nNot found!\n "); } 【参考答案】 (1)错误:a=Null;        正确:a=NULL; (2)错误:if(r==p) { r++;p++;} 正确:if(*r==*p) { r++;p++;} 下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字 母,其他字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  char *fun(char tt[]) { int I; /*************found**************/ for(I=0;tt[I];I++)     if(('a'<=tt[I])||(tt[I]<= 'z'))     /*************found**************/     tt[I]+=32; return(tt); } main() { char tt[81]; system("CLS"); printf("\nPlease enter a string: "); gets(tt); printf("\nThe result string is: \n%s",fun(tt)); } 【参考答案】 (1)错误:||    正确:&& (2)错误:tt[i]+= 32    正确: tt[i]-=32; 下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目, 并作为函数值返回。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正 确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  #include  #define N 80 int fun(char *s,char *t) { int n;   char *p, *r;   n=0;   /*************found**************/   p=&s[0];   *r=t;   while(*p)   {     if(*r==*p)     {         r++;         if(*r=='\0')         {                n++;             /*************found**************/             【1】;         }     }       p++;   }   return n; } void main() {char a[N],b[N]; int m; system("CLS"); printf("\nPlease enter string a: "); gets(a); printf("\nPlease enter substring b: "); gets(b); m=fun(a,b); m=printf("\nThe result is :m=%d\n",m); } 【参考答案】 (1)错误:*r=t;    正确:r=t; (2)应填:r=t;或r=&t[0]; 下列给定程序中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构 成一个新数放在t中。高位仍在高位,低位仍在低位。例如当s中的数为87653142时 ,t中的数为7531。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  void fun(long s,long *t) {int d; long s1=1; /*************found**************/ t=0; while(s>0)     { d=s%10; /*************found**************/       if(d%2==0)         {*t=d*s1+*t;         s1*=10;         }     s/=10;     } }  void main() {long s, t; system("CLS"); printf("\nPlease enter s: "); scanf ("%ld",&s); fun(s,&t); printf("The result is :%ld\n",t); } 【参考答案】 (1)错误:t=0;    正确:*t=0; (2)错误:if(d%2==0)    正确:if(d%2!=0) 下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入 60和65,输出为:a=65 b=60 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include /*************found**************/ void fun(int a,b) { int t; /*************found**************/   t=b;b=a;a=t; } void main() {int a,b;   system("CLS");   printf("Enter a, b: "); scanf("%d%d",&a,&b);   fun(&a, &b);   printf("a=%d  b=%d\n ", a,b); } 【参考答案】 (1)错误:void fun(int a,b) 正确:void fun(int *a,int *b) (2)错误:t=b;b=a;a=t; 正确:t=*b;*b=*a;*a=t; 下列给定程序中,函数 fun 的功能是:将一个由八进制数字字符组成的字符串转换 为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。 例如,若输入77777,则输出将是32767。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include int fun(char *p) {     int n;     /*********found********/     n=*p-'o';     p++;     while(*p!=0)     {     /*********found********/         n=n*7+*p-'o';         p++;     }     return n; } main() {     char s[6];     int i;     int n;     printf("Enter a string (octal digits): ");     gets(s);     if(strlen(s)>5)     {         printf("Error:string too longer!please input again ! \n\n");         exit(0);     }     for(i=0;s[i];i++)         if(s[i]<'0'||s[i]>'7')         {             printf("Error:%c not is octal digits!\n\n ! \n\n",s[i]);             exit(0);         }     printf("The original string:");     puts(s);     n=fun(s);     printf("\n%s is convered to intege number:%d\n\n",s,n); } 【参考答案】 (1)错误:n=*p-'o'      正确:n=*p-'0' (2)错误:n=n*7+*p-'o'      正确:n=n*8+*p-'0' 下列给定程序中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行 排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  #define MAXLINE 20 /*************found**************/ fun(char *pstr[6]) { int I, j;   char *p;   for(I=0;I<5;I++)       {for(j=I+1;j<6;j++) /*************found**************/         { if(strcmp(*(pstr+I),pstr+j)>0)               {                 p=*(pstr+I); /*************found**************/                 *(pstr+I)=pstr+j;                 *(pstr+j)=p;               }           }       } } void main() { int i;   char *pstr[6],str[6][MAXLINE];   system("CLS");   for(i=0;i<6;i++)       pstr[i]=str[i];   printf("\nEnter 6 string(1 string at each line):\n ");   for(i=0;i<6;i++)       scanf("%s",pstr[i]);   fun(pstr);   printf("The strings after sorting:\n ");   for(i=0;i<6;i++)       printf("%s\n ",pstr[i]); } 【参考答案】 (1)错误:fun(char *pstr[6]) 正确:void fun(char *pstr[6]) (2)错误:if(strcmp(*(pstr+i),pstr+j)>0) 正确:if(strcmp(*(pstr+i),*(pstr+j))>0) (3)错误:*(pstr+i)=pstr+j; 正确:*(pstr+i)= *(pstr+j); 下列给定的程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的 顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #define N 20 void fun(int a[],int n) {int I,j,t,p; for(j=0;jhigh,查找结束。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #define  N  10 /*************found**************/ void fun(int a[],int m) { int low=0,high=N-1,mid;   while(low<=high)       {  mid=(low+high)/2;         if(m=a[mid])             low=mid+1;         else  return(mid);       } return(-1); } void main() {  int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;   printf("a数组中的数据如下:");   for(i=0;i=0)       printf("m=%d,index=%d\n",m,k);   else       printf("Not be found!\n"); } 【参考答案】 (1)错误:void fun(int a[],int m) 正确:int fun(int a[],int m) (2)错误:else if(m>=a[mid]) 正确:else if(m>a[mid]) 下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作 为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include typedef struct aa { int data;   struct aa *next; } NODE; int fun (NODE *h) { int sum=0;   NODE *p;   p=h->next; /*************found**************/   while(p->next)       { if(p->data%2==0)             sum+=p->data; /*************found**************/           p=h->next;       }   return sum; } NODE *creatlink(int n) {   NODE *h,*p,*s;   int i;   h=p=(NODE*)malloc(sizeof(NODE));   for(i=1;idata=rand()%16;     s->next=p->next;     p->next=s;     p=p->next;   }   p->next=NULL;   return h; } outlink(NODE *h) { NODE  *p;   p=h->next;   printf("\n\n The LIST :\n\n HEAD");   while(p)     { printf("->%d",p->data);       p=p->next;}   printf("\n"); } void main() { NODE *head; int sum;   system("CLS");   head=creatlink(10);   outlink(head);   sum=fun(head);   printf("\nSUM=%d",sum); } 【参考答案】 (1)错误:while (p->next)      正确:while (p!=NULL) (2)错误:p=h->next;      正确:p=p->next; 下列给定程序中,函数fun的功能是:求表达式s=aa…aa-…-aa-aa-a(此处aa…aa表 示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include long fun(int a,int n) {   int j; /*************found**************/   long s=0,t=1;  /*************found**************/   for(j=0;j<=n;j++)     t=t*10+a;   s=t;   for(j=1;j #include  double fun (int m) { double y=1.0;   int i; /*************found**************/   for(i=2;i #define N 20 int fun(int n, int *a) /*************found**************/  { int I,j,k,sum;   sum=0;   for(k=3,I=0;I #include  #include  #include  /*************found**************/ fun(int k) { int n; float s, w, p, q;   n=1;   s=1.0;   while(n<=k)       { w=2.0*n;         p=w-1.0;         q=w+1.0;         s=s*w*w/p/q;         n++;         } /*************found**************/   return s } void main() { system("CLS");   printf("%f\n ",fun(10)); } 【参考答案】 (1)错误:fun(int k)    正确:double fun(int k) (2)错误:return s    正确:return s; 下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上( 含平均值)的实数个数。例如, n=8时,输入 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平 均值为195.838745,在平均值以上的实数个数应为5。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  int fun(float x[], int n) /*************found**************/  int j, c=0; float  xa=0.0; for (j=0; j=xa)         c++; return c; } void main() { float x[100]={ 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};   system("CLS");   printf("%d\n",fun (x,8)); } 【参考答案】 (1)错误:缺{          正确:加{ 下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=1/(1+A (n-1)) 例如,若n=10,则应输出0.617977。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ int fun(int n) { float A=1;int I; /*************found**************/   for(I=2;I #define  N  100 int  fun(int *s, int  n) { int I,j,k,a,b,c;   j=0;   for(I=100; I 1000); num= fun(a,n); printf("\n\nThe result :\n"); for(i=0; i #include  long fun(int k) { /*************found**************/   if k>1     return(k*fun(k-1));   return 1; } void main() {int k=10; system("CLS"); printf("%d!=%ld\n ",k,fun(k)); } 【参考答案】 错误:if k>1    正确:if(k>1) 下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m 例如,若输入5,则应输出-0.283333。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  double fun(int m) {   double t=1.0;   int I;   for(I=2;I<=m;I++) /*************found**************/       t=1.0-1/I; /*************found**************/           ; } void main() {int m; system("CLS"); printf("\nPlease enter 1 integer numbers:\n"); scanf("%d",&m); printf("\n\nThe result is %1f\n", fun(m)); } 【参考答案】 (1)错误:t=1.0-1/i;    正确:t-=1.0/i; (2)错误:;    正确:return t; 下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U) 的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ fun(char *s, int num[5]) { int k, i=5;   for(k=0;k=0)       num[i]++;       } } void main() { char s1[81]; int num1[5], i;   system("CLS");   printf("\nPlease enter a string: "); gets(s1);   fun(s1, num1);   for(i=0;i<5;i++) printf("%d ",num1[i]); printf("\n"); } 【参考答案】 (1)错误:fun(char *s, int num[5]) 正确:void fun(char *s, int num[5]) (2)错误:num[i]=0;    正确:num[k]=0; (3)错误:switch(s)    正确:switch(*s) 下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶 数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组 中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组 有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #define SIZE 20 fun (double *s,double *w) {  int k,i; double sum;   for(k=2,i=0;i #include  #include  int fun( int m) { int I,k;   for (I=m+1; ;I++)     { for (k=2;k=i) 下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。 high由主函数传给函数fun。例如high的值为100,则函数的值为732。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  int  fun(int  high) {   int sum=0,n=0, j, yes;   while((high>=2)&&(n<10))     {       yes = 1;       for(j=2; j<=high/2; j++) /*************found**************/           if(high%j==0)             {               yes=0;               break             }       if(yes)           {             sum+=high;             n++;           }       high--;     }   return  sum; } void main() { system("CLS"); printf("%d\n",fun(100)); } 【参考答案】 (1)错误:break    正确:break; 下列给定程序中,函数fun的功能是:计算整数n的阶乘。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double fun(int n) { double result=1.0; while(n>1&&n<170) /*************found**************/       result*=--n; /*************found**************/ return; } void main() {int n; system("CLS"); printf("Enter an integer: "); scanf("%d",&n); printf("\n\n%d!=%1g\n\n ",n,fun(n)); } 【参考答案】 (1)错误:result*=--n;      正确:result*=n--; (2)错误:return;      正确:return result; 下列给定程序中,函数fun的功能是:应用递归算法求某数a的平方根。求平方根的 迭代公式如下: 例如,2的平方根为1.414214。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  /*************found**************/ fun(double a,double x0) { double x1,y;   x1=(x0+a/x0)/2.0; /*************found**************/   if(fabs(x1-x0)>0.00001)       y=fun(a,x1);   else  y=x1;   return y; } void main() { double x;   printf("Enter x: "); scanf("%lf",&x);   printf("The square root of %lf is %1f\n",x, fun(x,1.0)); } 【参考答案】 (1)错误:fun(double a,double x0) 正确:double fun(double a,double x0) (2)错误:if(fabs(x1-x0)>0.00001) 正确:if(fabs(x1-x0)>=0.00001) 下列给定程序中,函数fun的功能是根据输入的3个边长(整型值),判断能否构成三 角形:若能构成等边三角形,则返回3,若是等腰三角形,则返回2,若能构成三角形则 返回1,若不能,则返回0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  int fun(int a,int b,int c) { if(a+b>c&&b+c>a&&a+c>b)     {if(a==b&&b==c) /*************found**************/       return 1;       else if(a==b||b==c||a==c)       return 2; /*************found**************/       else return 3;     }   else return 0; } void main() {   int a,b,c,shape;   printf("\nInput a,b,c: ");   scanf("%d%d%d",&a,&b,&c);   printf("\na=%d, b=%d, c=%d\n",a,b,c);   shape=fun(a,b,c);   printf("\n\nThe shape :%d\n",shape); } 【参考答案】 (1)错误:return 1;    正确:return 3; (2)错误:return 3;    正确:return 1; 下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将 其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun函数之 前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ fun(char *p) { char max, *q;int I=0;   max=p[I];   while (p[I]!=0)       {if (maxp) 下列给定程序中,函数fun的功能是:求出两个数的最大公约数,并作为函数值返回 。例如,若给num1和num2输入49和21,则输出的最大公约数为7;若给num1和num2分 别输入27和81,则输出最大公约数为27。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  int fun (int a, int b) { int r,t;   if(a /*************found**************/ void fun(char a) { if(*a)   {     fun(a+1);     printf("&c",*a);   } } main() { char s[10]="abcd";   printf("处理前字符串=%s\n处理后字符串=",s);   fun(s);   printf("\n"); } 【参考答案】 (1)错误:void fun(char a)    正确:void fun(char *a) 下列给定程序中,函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次 方为15625,此值的低3位值为625。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  long fun(int x, int y, long *p) { int i;   long t=1; /*************found**************/   for(i=1;i #include  #include  #include  #define    N  80 void  fun(char *s, char t[]) {   int  I, j=0; /*************found**************/   for(I=0; I<(int)strlen(s);I++)       if(I%2 && s[I]%2==0)            t[j++]=s[I] ; /*************found**************/   t[I]='\0'; } void main() {   char s[N], t[N];   system("CLS");   printf("\nPlease enter string  s :");   gets(s);   fun(s,t);   printf("\nThe result is :%s\n",t); } 【参考答案】 (1)错误:if (i%2 && s[i]%2 ==0) 正确: if(i%2 || s[i]%2==0) 或 if(i%2 !=0 || s[i]%2==0)  (2)错误:t[i] ='\0' 正确:t[j]= '\0';或t[j]=0; 下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后 将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指 数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为 abcdefg,b所指字符串中的内容为1234时,c所指数组中的内容应该为a4b3c2d1efg; 而当a所指字符串中的内容为1234,b所指字符串中的内容为abcdefg时,c所指数组 中的内容应该为1g2f3e4dcba。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  void fun(char *a,  char *b,  char  *c) {   int I, j; char ch;   I=0; j=strlen(b)-1; /*************found**************/   while (I>j)        {ch=b[I];  b[I]=b[j]; b[j]=ch;        I++; j--;       }   while (*a||*b)       { if (*a){*c=*a; c++; a++;}         if(*b){*c=*b; c++; b++;}       } /*************found**************/   *c=0 ; } void main() {   char s1[100],s2[100],t[200];   system("CLS");   printf("\nEnter s1 string: ");   scanf("%s",s1);   printf("\nEnter s2 string: ");   scanf("%s",s2);   fun(s1,s2,t);   printf("\nThe result is :%s\n",t); } 【参考答案】 (1)错误:while(i>j)    正确:while(i #include  #include  double fun(double eps) {double s,t; int n=1; s=0.0; /*************found**************/ t=1; /*************found**************/ while(t>eps)     { s+=t;       t=t*n/(2*n+1);       n++;     } /*************found**************/ return (s); } void main() { double x;   printf("\nPlease enter a precision: "); scanf("%lf",&x);   printf("\nPi=%1f\n ",fun(x)); } 【参考答案】 (1)错误:t=1;    正确:t=1.0; (2)错误:while(t>eps)    正确:while(t>=eps) (3)错误:return(s);    正确:return(s*2); 下列给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构 成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142 时,t中的数为8642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  void fun(long s,long *t) /*************found**************/ { int d;   long s1=0;   *t=0;   while(s>0)       { d=s%10;         if(d%2==0)             {*t=d*s1+*t;             s1*=10;             } /*************found**************/         s\=10;       } } void main() { long s,t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is :%ld\n",t); } 【参考答案】 (1)错误:long s1=0;    正确:long s1=1; (2)错误:s\=10;                  正确:s/=10; 下列给定程序中,函数fun的功能是:交换主函数中两个变量的值。例如,若变量a中 的值为8,b中的值为3,则程序运行后a中的值为3,b中的值为8。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ void fun(int x,int y) { int t; /*************found**************/   t=x;x=y;y=t; } void main() { int a,b;   a=8;   b=3;   fun(&a, &b);   printf("%d  %d\n ", a,b); } 【参考答案】 (1)错误:void fun(int x, int y) 正确:void fun(int *x, int *y) (2)错误:t=x;x=y;y=t; 正确:t=*x;*x=*y;*y=t; 下列给定程序中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址 作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #define  N  5 #define  M  81 /*************found**************/ fun(char (*sq)[N]) {int i; char *sp; sp=sq[0]; for(i=0;i #include  /*************found**************/ IsPrime(int n); {   int i,m;   m=1; /*************found**************/   for(i=2;i #include  #include  void fun (char *s, char *t ) {   int I,s1;   s1=strlen(s);    /*************found**************/   for (I=0;I<=s1;I++)     t[I]=s[I];      for (I=0;I #include  #include  /*************found**************/ fun (int n) { int a=2,b=1,c, k;   double s=0.0;   for(k=1;k<=n;k++)     {s=s+1.0*a/b; /*************found**************/       c=a;a+=b;b+=c;     }   return(s); } void main() { int n=5;   system("CLS");   printf("\nThe value of function is:%1f\n",fun(n)); } 下列给定程序中,函数fun的功能是:输出M行、N列整数方阵,然后求两条对角线上 的各元素之和,返回此和数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #define  M  5 /*************found**************/ int fun(int n,int xx[ ][ ]) { int I, j, sum=0;   printf("\nThe %d x %d matrix:\n",M,M);   for(I=0;I #include  #include  #include  #include  void fun(char *p) {   int k=0;   for ( ;*p;p++)     if (k)         { /*************found**************/         if (p==' ')            {             k=0; /*************found**************/             *p=toupper( *(p-1));           }         }     else         k=1; } void main() {char  chrstr[64]; int d; system("CLS");    printf("\nPlease enter an English sentence within 63 letters: "); gets(chrstr); d=strlen(chrstr);    chrstr[d]=' '; chrstr[d+1]=0; printf("\nBofore changing:\n  %s",chrstr); fun(chrstr); printf("\nAfter changing:\n  %s",chrstr); } 【参考答案】 (1)错误:if(p==' ') 正确:if(*p==' ') (2)错误:*p=toupper(*(p-1)); 正确:*(p-1)=toupper(*(p-1)); 下列给定程序中,函数fun的功能是:从整数1到55之间,选出能被3整除且有一位上 的数是5的数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规 定,函数中a1放个位数,a2放十位数。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  /*************found**************/ int fun(int *b); {   int k,a1,a2,I=0; /*************found**************/   for(k=10;k<=55;k++)   {     a2=k/10;     a1=k-a2*10;     if((k%3==0 && a2==5)|| (k%3==0 && a1==5))     {         b[I]=k;         I++;     }   } /*************found**************/   return k; } void main() {   int a[100],k,m;   m=fun(a);   printf("The result is: \n");   for(k=0;k #include  char fun(char c) { /*************found**************/   if(c>='A' && c<='Z')     c=c-32; /*************found**************/   if(c>='a' && c<='u')         c=c-5;   else if(c>='v' && c<='z')     c=c-21;   return c; } main() { char c1,c2; printf("\nEnter a letter(A-Z): "); c1=getchar(); if(isupper(c1)) {     c2=fun(c1);     printf("\n\nThe letter %c change to %c\n",c1,c2); } else {     printf("\nEnter (A-Z)!\n"); } } 【参考答案】 (1)错误:c=c-32;    正确:c=c+32; (2)错误:c=c-5;    正确:c=c+5; 下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的t1所指子串 替换成t2所指子串,所形成的新串放在w所指的数据中。在此处,要求t1和t2所指字 符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,t1所指子串中的内 容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容为abcdabf99c 。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ void fun(char *s,t1,t2,w) { char *p,*r,*a;   strcpy(w,s); /*************found**************/   while(w)   {       p=w;     r=t1;     while(*r)         if(*r==*p)         {             r++;             p++;         }         else         {             break;         }     if(*r=='\0')         a=w;     w++;   }   r=t2;   while(*r)   {     *a=*r;     a++;     r++;   } } main() {   char s[100],t1[100],t2[100],w[100];   printf("\nPlease enter string S:");   scanf("%s",s);   printf("\nPlease enter substring t1:");   scanf("%s",t1);   printf("\nPlease enter substring t2:");   scanf("%s",t2);   if(strlen(t1)==strlen(t2))   {     fun(s,t1,t2,w);     printf("\nThe result is:%s\n",w);   }   else   {     printf("\nError:strlen(t1)!=strlen(t2)\n");   } } 【参考答案】 (1)错误:void fun(char *s,t1,t2,w) 正确:void fun(char *s,char *t1,char *t2,char *w) (2)错误:while (w)    正确:while (*w) 下列给定的程序中,函数fun的功能是:将s所指字符串中出现的t1所指字符串全部 替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和 t2所指字符串的长度相同。例如,当s所指字符串中所指的内容为abcdabfab,t1所 指字符串中的内容为ab,t2所指字符串中的内容为99时,结果在w所指的数组中的内 容应为99cd99f99。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/  int fun (char *s,char *t1, char *t2, char *w) { char *p,*r,*a; strcpy(w,s); while (*w)     {p=w;  r=t1; /*************found**************/       while (r)            if (*r==*p){r++;p++;}           else break;       if (*r=='\0')         {a=w;  r=t2; /*************found**************/           while (*r){*a=*r;a++;r++}            w+=strlen(t2);         }       else w++;     } } void main() {char s[100],t1[100],t2[100],w[100]; system("CLS"); printf("\nPlease enter string  S: "); scanf("%s",s); printf("\nPlease enter substring  t1: "); scanf("%s",t1); printf("\nPlease enter substring  t2: "); scanf("%s",t2); if (strlen(t1)==strlen(t2))   {   fun (s,t1,t2,w);   printf("\nThe result is : %s\n",w);   } else     printf("Error : strlen(t2)\n"); } 【参考答案】 (1)错误:int fun(char *s,char *t1,char *t2, char *w) 正确:void fun(char *s,char *t1,char *t2, char *w) (2)错误:while(r)    正确:while(*r)  (3)错误:r++    正确:r++; 下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,中间 的放在b中,最小的放在c中。例如,输入的数为:55 12 34,输出结果应当 是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include void fun(float *p,float *q,float *s) { /*************found**************/ float *k; if(*p<*q) {     k =*p;     *p=*q;     *q=k; } /*************found**************/ if(*s<*p) {     k =*s;     *s=*p;     *p=k; } if(*q<*s) {     k =*q;     *q=*s;     *s=k; } } main() { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); } _ 【参考答案】 (1)错误:float *k;    正确:float k; (2)错误:if (*s < *p)    正确:if(*s > *p) 下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数, 构成一个新数放在t中,例如,当s中的数为7654321时,t中的数为7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ void fun(long s,long t) { long s1=10;   *t=s%10;   while(s>0)       { s=s/100;         *t=s%10*s1+*t;         /*************found**************/     s1=s1*100;       } } void main() { long s, t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is: %ld\n ",t); } 【参考答案】 (1)错误:void fun(long s,long t)     正确:void fun(long s,long *t) (2)错误:s1=s1*100;    正确:s1=s1*10; 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大 的顺序进行排序。插入法的基本MATCH_ word word文档格式规范word作业纸小票打印word模板word简历模板免费word简历 _1713868547612_0是:先对字符串中的头两个元素进行排序,然 后把第3个字符插入到前两个字符中,插入后前3个字符依然有序;再把第4个字符插 入到前3个字符中,待排序的字符串已在主函数中赋予。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #define  N  80 void insert(char *aa) { int i, j, n;  char ch; n=strlen(aa); for(i=1;i=0)&&(ch #include  #include  #include  #include  #define N 10 typedef struct ss   { char num[10];     int s;   } STU; STU *fun(STU a[], int m) { STU b[N],*t;   int i, j,k; /*************found**************/   *t=calloc(m,sizeof(STU));   for(i=0;ib[j].s) j=i; /*************found**************/       t[k].num=b[j].num;       t[k].s=b[j].s;       b[j].s=0;     } return t; } outresult(STU a[],FILE *pf) { int i;   for(i=0;i10)       { printf("\nGive the number of the students who have better score: ");   scanf("%d",&m); }   pOrder=fun(a,m);   printf("***** THE RESULT*****\n");   printf("The top :\n");   for(i=0;i #include #include typedef struct aa { int data;   struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL,*p,*s;   int i;   s=(NODE *)malloc(sizeof(NODE));   h=s; /*************found**************/   p->next=NULL;   for(i=1;idata=rand()%m;       s->next=p->next;p->next=s;  p=p->next;     }   s->next=NULL; /*************found**************/   return p; } outlink(NODE *h) { NODE  *p;   p=h->next;   printf("\n The LIST :\n\n HEAD");   while(p)     { printf("->%d",p->data);       p=p->next;}   printf("\n"); } main() { NODE *head;   system("CLS");   head=Creatlink(8,22);   outlink(head); } 【参考答案】 (1)错误:p->next=NULL;      正确:p=s; (2)错误:s->date=rand( )%m ; 正确:s->data=rand( )%(m - 1); (3)错误:return p;      正确:return h; 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。  例如,若m=2000,则应输出0.000160。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ fun (int m) { double y=0, d;   int I; /*************found**************/   for(I=100,I<=m,I+=100)     {d=(double)I*(double)I;       y+=1.0/d;     }   return(y); } void main() { int n=2000;   system("CLS");   printf("\nThe result is %1f\n",fun(n)); } 【参考答案】 (1)错误:fun(int m) 正确:double fun(int m) (2)错误:for(i=100,i<=m,i+=100) 正确:for(i=100;i<=m;i+=100) 下列给定程序中,函数fun的功能是:计算并输出下列数的前N项之和SN,直到SN+1大 于q为止,q的值通过形参传入。 例如,若q的值为50.0,则函数值为49.394948。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double fun(double q) { int n; double s,t;   n=2;   s=2.0;   while(s<=q)       {         t=s; /*************found**************/         s=s+(n+1)/n;         n++;       }   printf("n=%d\n ",n); /*************found**************/   return s; } void main() {   printf("%f\n ",fun(50)); } 【参考答案】 (1)错误:s=s+(n+1)/n ; 正确:s=s+(double)(n+1)/n; (2)错误:return s;    正确:return t; 下列给定程序中函数fun的功能是:统计子字符串substr在字符串str中出现的次数 。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  /*************found**************/ int fun(char *str,*substr) {   int i, j, k,num=0;   /*************found**************/   for(i=0,str[i],i++)     for(j=i,k=0;substr[k]==str[j];k++,j++)       if(substr[k+1]=='\0')       {         num++;               break;     }   return num; } void main() { char str[80],substr[80];   printf("Input a string: ");   gets(str);   printf("Input a substring: ");   gets(substr);   printf("%d\n ",fun(str,substr)); } 【参考答案】 (1)错误:int fun(char *str, *substr) 正确:int fun(char *str, char *substr) (2)错误:for (i=0, str[i], i++) 正确:for (i=0;str[i];i++) 下列给定程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值为零的 个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。 例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8 。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include int fun(unsigned n,int *zero) { int count=0,max=0,t; do {     t=n%10;     /*************found**************/     if(t=0)         count++;     if(max #include  #include  /*************found**************/ fun (int n) { int a,b,c, k;   double s;   s=0.0;a=2;b=1;   for(k=1;k<=n;k++)     { /*************found**************/       s=s+(Double)a/b;       c=a;a=a+b;b=c;     }   return s; } main() { int n=5;   system("CLS");   printf("\nThe value of function is:%lf\n",fun(n)); } 【参考答案】 (1)错误:fun(int n)    正确:double fun(int n) (2)错误:s=s+(Double)a/b;    正确:s=s+(double)a/b; 下列给定的程序中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和 等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(int a, int *b, int *c) { int I,j,d,y;   for (I=3;I<=a/2;I=I+2) /*************found**************/       {y=0;          for (j=2;j<=sqrt((double)I );j++)           if (I%j==0)  y=0;       if (y==1) /*************found**************/           { d=I-a;                for (j=2;j<=sqrt((double)d );j++)                 if (d%j==0)  y=0;             if (y==1)             {*b=I;  *c=d;}             }       } } void main() { int  a,b,c;   do     { printf("\nInput  a: ");   scanf("%d",&a);}   while(a%2);   fun(a,&b,&c);   printf("\n\n%d=%d+%d\n",a,b,c); } 【参考答案】 (1)错误:y=0;                    正确:y=1; (2)错误:d=i-a;    正确:d=a-i; 下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一 个新串放在t所指的数组中。例如,当s所指字符串为ABCD时, t所指字符串中的内 容应为ABCDDCBA。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/ void fun (char s, char t ) {   int I,s1;   s1=strlen(s);   for (I=0;I #include  #include  #include  int fun (char  *s,  char  *t) {int  n;  char *p, *r; n=0; while(*s)   {p=s;     r=t;     while (*r) /*************found**************/         if(*r==*p)  {r++; p++}         else  break; /*************found**************/     if(r=='\0')     n++;     s++;   } return n; } void main( ) {char  s[100],  t[100];  int  m; system("CLS"); printf("\nPlease enter string s: "); scanf("%s",s); printf("\nPlease enter substring t: "); scanf ("%s",t); m=fun(s,t); printf("\nThe result is: m=%d\n", m); } 【参考答案】 (1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2)错误:if(r=='\0') 正确:if(*r=='\0') 下列给定程序中,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个 根,并且绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一 个根值为2.000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double funx (double x) {   return(2*x*x*x-4*x*x+3*x-6); } double fun(double m,double n) { /*************found**************/   int r;   r=(m+n)/2; /*************found**************/   while (fabs(n-m)<0.001)   {     if(funx(r)*funx(n)<0)         m=r;     else         n=r;     r=(m+n)/2;   }   return r; } main() {   double m,n,root;   printf("Enter m n:\n");   scanf("%lf%lf",&m,&n);   root=fun(m,n);   printf("root= %6.3f\n",root); } _ 【参考答案】 (1)错误:int r;    正确:double r; (2)错误:while (fabs(n-m) <0.001) 正确:while (fabs(n-m) >0.001) 下列给定程序中,函数fun的功能是:从3个红球、5个白球、6个黑球中任意取出8个 作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作 为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球 数,k的值代表黑球数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  int fun() { int i,j,k,sum=0;   printf("\nThe result :\n\n "); /*************found**************/   for(i=0;i<=3;i++)       { for (j=1;j<=5;j++)           {k=8-i-j; /*************found**************/             if(k>=1&&k<=6)                 { sum=sum+1;                   printf("red:%4d white:%4dblack:%4d\n ",i,j,k);                 }           }       } return sum; } void main() { int sum;   sum=fun();   printf("sum=%4d\n\n ",sum); } 【参考答案】 (1)错误:for(i=0;i<=3;i++) 正确:for(i=1;i<=3;i++)=1&&k<=6) 正确:if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))=3;i++),而是for (i=1;i<=3;i++),另外,在if(k>=1&&k<=6)中,程序旨在说明"在每组中,可以没有黑 球,但必须要有红球和白球"信息,一一满足后,正确的条件应该是: if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。 下列给定程序中,函数fun的功能是:从字符串s中删除所有小写字母c。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  void fun(char *s) {int i, j; for(i=j=0; s[i]!= '\0';i++)     if(s[i]!= 'c') /*************found**************/       s[j]=s[i]; /*************found**************/ s[i]='\0'; } void main() { char s[80];   printf("\nEnter a string:    ");   gets(s);   printf("The original string:  ");   puts(s);   fun(s);   printf("The string after deleted: ");   puts(s);   printf("\n\n "); } 【参考答案】 (1)错误:s[j]=s[i];              正确:s[j++]=s[i]; (2)错误:s[i]='\0';              正确:s[j]= '\0' 下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所 有字符按ASCII码升序排序后输出。例如,若输入edcba,则应输出abcde。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(char  t[]) { char c; int I,j; /*************found**************/ for(I=strlen(t);I;I--)     for(j=0;j0;i--)本题是利用选 择法对数组元素进行比较排序。所谓选择法,是依次用当前取得的元素和它后面的 元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对 两个数进行交换,保证第一个元素始终存放数组中的最大数,以后依次挑选出次大 数,这样最终的数组就是有序的。Strlen函数在求字符串长度时,会加上结束符,所 以要减1。 (2)这里是一个 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 逻辑错误,题中要求按升序排序,所以应改为if (t[j] > t [j+1])。 已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下 列给定的程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n 的值通过形参传入。例如,当n=10时,程序的输出结果应为23.197745。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include  #include  #include  /*************found**************/ fun(int n)  {double sum, s0, s1, s2, s; int k; sum=1.0; if (n<=2) sum=0.0; s0=0.0; s1=0.0; s2=1.0; for (k=4;k<=n;k++)     { s=s0+s1+s2;       sum+=sqrt(s);       s0=s1;s1=s2;s2=s;     } /*************found**************/ return sum } void main() {int n; system("CLS"); printf("Input  N="); scanf("%d",&n); printf("%f\n",fun(n)); } 【参考答案】 (1)错误:fun(int n)    正确:double fun(int n) (2)错误:return sum    正确:return sum; 下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2且小于8), 通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值 返回。例如,7的5次方是1 6807,其低3位数的和值是15。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  int fun(int n,int *value) {   int d,s,i; /*************found**************/   d=0; /*************found**************/   s=1;   for(i=1;i<=5;i++)     d=d*n;   *value=d;   for(i=1;i<=3;i++)   {     s=s+d%10; /*************found**************/     s=s/10;   }   return s; } void main() {   int  n,sum,v;   do   {     printf("\n Enter n(2=8);   sum=fun(n,&v);   printf("\n\nThe result: \n value=%d sum=%d\n\n" ,v,sum); } 【参考答案】 (1)错误:d=0;                    正确:d=1; (2)错误:s=1;    正确:s=0 ; (3)错误:s=s/10;    正确:d=d/10 ; 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置上的字符, 把ASCII值大或相等的字符依次存放存到c数组中,形成一个新的字符串。例如,若a 中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串应为aBcdeFgH。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(char *p,char *q,char *c) { /*************found**************/   int k=1;   /*************found**************/   while(*p!=*q)       { if (*p<*q)              c[k]=*q;         else c[k]=*p;         if(*p)  p++;         if(*q)  q++ ;     k++;       } } main() { char a[10]="fshADfg",b[10]="sdAEdi",c[80]={'\0'};   fun(a,b,c);   printf("The string a:"); puts(a);   printf("The string b:"); puts(b);   printf("The result :"); puts(c); } 【参考答案】 (1)错误:int k=1;              正确:int k=0 ; (2)错误:while(*p != *q)              正确:while(*p || *q) 下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规 律输出。例如输入1,2,3,4,程序运行后输出以下方阵: 4  1  2  3 3  4  1  2 2  3  4  1 1  2  3  4 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #define  M  4 /*************found**************/ void fun(int a) { int I,j,k,m;   printf("Enter 4 number: ");   for(I=0;I0;I--)       { k=a[M-1];         for(j=M-1;j>0;j--) /*************found**************/             a[j]=a[j+1];         a[0]=k;         for(m=0;m #include  #include  float fun(float num) { int s;   float n,t, pi;   t=1;pi=0;n=1;s=1; /*************found**************/   while(t>=num)         {         pi=pi+t;         n=n+2;         s=-s; /*************found**************/         t=s%n;         }   pi=pi*4;   return pi; } void main() { float n1, n2;   system("CLS");   printf("Enter a float number: ");   scanf("%f",&n1);   n2=fun(n1);   printf("%6.4f\n ",n2); } 【参考答案】 (1)错误:while(t>=num) 正确:while(fabs(t)>=num) (2)错误:t=s%n;            正确:t=s/n; 假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun的功能 是:删除数列中值为X的元素。N中存放的是数列中元素的个数。 请改正程序中的错误,使它能够得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #define  N  20 fun (int *a,int n,int x) {int p=0,i; a[n]=x; while (x!=a[p])     p=p+1; if(p==n) return -1; else     {for (i=p;i #include #include  #define M 10 int a[M][M]={0}; /*************found**************/ fun( int **a, int m) {int j,k; for(j=0;j #include  #include  fun(int n,int *a) { int I,j,p,t;   for (j=0;ja[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"); } void main() {int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; system("CLS"); printf("\n\nBefore sorting %d numbers:\n",n); putarr(n,aa); fun(n,aa); printf("\nAfter sorting %d numbers:\n",n); putarr(n,aa); } 【参考答案】 (1)错误:for(i=j+1;i void fun(char *p,char *b) { int i, k=0;   while(*p) /*************found**************/       { i=1; /*************found**************/         while(i<3||*p)               {                 b[k]=*p;                 k++;p++;i++;               }         if(*p) /*************found**************/               { b[k]= ' ';}         }   b[k]= '\0'; } void main() { char a[80],b[80];   printf("Enter a string:  ");   gets(a);   printf("The original string:  ");   puts(a);   fun(a,b);   printf("\nThe string after insert space:  ");   puts(b); printf("\n\n "); } 【参考答案】 (1)错误:i=1;            正确:i=0; (2)错误:while(i<3||*p)            正确:while(i<3&&*p) (3)错误:b[k]=' ';            正确:b[k++]=' '; 下列给定程序中,函数fun的功能是:将 个字符串连接起来,组成一个新串,放入pt 所指字符串中,例如,把3个串abc、CD、EF串联起来,结果是abcCDEF。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/ int fun(char str[][10],int m,char *pt) { int k,q,I,j=0;   for(k=0;k #include  #include  #include  /*************found**************/ void fun (char str,char ch) {while (*str &&*str !=ch) str++; /*************found**************/ if(*str==ch)   { str[0]=ch; /*************found**************/     str[1]=′0′;   } } void main() {char s[81],c; system("CLS"); printf("\nPlease enter a string : "); gets(s); printf("\n Please enter the character tosearch : "); c=getchar(); fun(s,c); printf("\nThe result is %s\n",s); } 【参考答案】 (1)错误:void fun (char str,char ch) 正确:void fun (char *str,char ch) (2)错误:if(*str==ch) 正确:if(*str=='\0') (3)错误:str[1]='0'; 正确:str[1]= '\0'; 下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的 字符串,并取代原字符串。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #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"; } void main() {char item[80]; system("CLS"); printf("\nEnter a string: ");gets(item); printf("\n\nThe string is:%s\n",item); fun(item); printf("\n\nThe string of changing is :%s\n",item); } 【参考答案】 (1)错误:s[j]=s[i];            正确:s[j++]=s[i]; (2)错误:s[j]="\0";              正确:s[j]='\0'; 下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数, 依次构成一个新数放在t中。例如,当s中的数为7654321时,t中的数为642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include /*************found**************/ void fun(long s,long t) { long s1=10;   s/=10;   *t=s%10; /*************found**************/   while(s<0)       { s=s/100;         *t=s%10*s1+*t;         s1=s1*10;       } } void main() { long s, t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is: %ld\n ",t); } 【参考答案】 (1)错误:void fun(long s,long t) 正确: void fun(long s,long *t) 下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不 允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的 值为3,b中的值为8。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include  #include  int fun(int *x,int y) { int t; /*************found**************/ t=x;x=y; /*************found**************/ return(y); } void main() {int a=3,b=8; system("CLS"); printf("%d %d\n ",a,b); b=fun(&a,b); printf("%d %d\n ",a,b); } 【参考答案】 (1)错误:t=x;x=y;            正确:t=*x;*x=y; (2)错误:return(y);            正确:return(t); 下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为 函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ double fun(char *s,char *t) {   int s1=0,t1=0;   char *ss,*tt;   ss=s;   tt=t;   /*************found**************/   while(*ss)   {     s1++;     (*ss)++;   }   /*************found**************/   while(*tt)   {     t1++;     (*tt)++;   }   if(t1>s1)     return t;   else     return s; } void main() {   char a[80],b[80];   printf("\nEnter a string : ");   gets(a);   printf("\nEnter a string again: ");   gets(b);   printf("\nThe longer is :\n\n%s\n", fun(a,b)); } 【参考答案】 (1)错误:double fun(char *s,char *t) 正确:char *fun(char *s,char *t) (2)错误:(*ss)++;            正确: ss++; (3)错误:(*tt)++P;            正确: tt++; 下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的 后续字母(如Z转化为A,z转化为a),其他字符不变。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  void fun(char *s) /*************found**************/ { while(*s!= '@')   { if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z')       {if(*s=='Z')  *s='A';         else if(*s=='z')  *s='a';         else  *s+=1;       } /*************found**************/     (*s)++;   } } void main() { char s[80];   system("CLS");   printf("\n Enter a string with length<80:\n\n");   gets (s);   printf("\n The string:\n\n");   puts(s);   fun(s);   printf("\n\n The Cords :\n\n");   puts(s); } 【参考答案】 (1)错误:while(*s!='@')                正确:while(*s) (2)错误:(*s)++;                正确:s++; 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成 大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。例如,若输入I am astudent to take the examination,则应输出I Am A Student To Take The Examination。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  #include  #include  /*************found**************/ void upfst(char p) {   int k=0;   for ( ;*p;p++)     if (k)         {         if (*p==' ')              k=0;         }     else         {             if (*p!=' ')              {                 k=1;                 *p=toupper(*p);             }         } } void main() {     char  chrstr[81];     system("CLS");        printf("\nPlease enter an English text line: ");     gets(chrstr);     printf("\nBofore changing:\n  %s",chrstr);     upfst(chrstr);     printf("\nAfter changing:\n  %s\n",chrstr); } 【参考答案】 (1)错误:void upfst(char p)            正确:void upfst(char *p) 下列给定程序的功能是:建立一个带头节点的单向链表,并用随机函数为各节点数 据域赋值。函数fun的作用是求出单向链表节点(不包括头节点)数据域中的最大值 ,并且作为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include typedef struct aa { int data;   struct aa *next; } NODE; /*************found**************/ fun (NODE *h) { int max=-1;   NODE *p;   p=h;   while(p)       { if(p->data>max)             max=p->data; /*************found**************/           p=h->next       }   return max; } outresult(int s, FILE *pf) { fprintf(pf, "\nThe max in link :%d\n",s); } NODE *creatlink(int n, int m) { NODE *h,*p,*s;   int i;   h=p=(NODE *)malloc(sizeof(NODE));   h->data=9999;   for(i=1;i<=n;i++)     { s=(NODE *) malloc(sizeof(NODE));       s->data=rand()%m; s->next=p->next;       p->next=s;  p=p->next;     }   p->next=NULL;   return h; } outlink(NODE *h,FILE *pf) { NODE  *p;   p=h->next;   fprintf(pf, "\n The LIST :\n\n HEAD");   while(p)     { fprintf(pf, "->%d",p->data);   p=p->next;}   fprintf(pf, "\n"); } main() { NODE *head; int m;   system("CLS");   head=creatlink(12,100);   outlink(head,stdout);   m=fun(head);   printf("\nThe RESULT :\n");   outresult(m,stdout); } 【参考答案】 (1)错误:p=h;            正确:p=h->next; (2)错误:p=h->next;            正确:p=p->next; 3                                                              仅供参考 #include double  fun(int x[]) { /*************found**************/ int sum=0.0; int  c=0, I=0; while(x[I]!=0)     {       if(x[I]>0)         {           sum+=x[I];           c++;         }       I++;     } /*************found**************/ sum=sum\c; return  sum; } 【参考答案】 (1)错误:int sum=0.0;    正确:double sum=0.0; (2)错误:sum\=c;          正确: sum/=c; 下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返 回0。在main函数中,若fun()返回1则输出"YES",若fun()返回0则输出"NO!"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  int fun(int m) { int k=2;   while (k<=m&&(m%k)) /*************found**************/         k++  /*************found**************/   if(m=k)       return 1;   else return 0; } void main() { int n;   system("CLS");   printf("\nPlease enter n: "); scanf("%d",&n);   if(fun(n)) printf("YES\n");   else printf("NO!\n"); } 【参考答案】 (1)错误:k++        正确:k++; (2)错误:if(m=k)        正确:if(m==k) 下列给定程序中,函数fun的功能是:按如下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  /*************found**************/ int fun(n) {   int c; /*************found**************/   if(n=1)     c=10;   else     c=fun(n-1)+2;   return(c); } void main() {   int  n;   printf("Enter n: ");   scanf("%d",&n);   printf("The result: %d\n\n" ,fun(n)); } 【参考答案】 (1)错误:int fun(n)        正确:int fun (int n) (2)错误:if (n=1)        正确:if (n==1) 下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数列中第n项的值 。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项 的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include long fun(int g) { /*************found**************/    switch(g);     {case 0:return 0; /*************found**************/       case 1; case 2:return 1;     }   return (fun(g-1)+fun(g-2)); } void main() {   long fib; int n;   printf("Input n:");scanf("%d",&n);   printf("n=%d\n",n);   fib=fun(n);   printf("fib=%d\n\n",fib); } 【参考答案】 (1)错误:switch(g);  正确:去掉分号 (2)错误:case 1;case 2: return 1; 正确:case 1:case 2:return 1; 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和 a[0]中的数对调、次最大数和 a[1] 中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #define    N  20 /*************found**************/ void fun(int *a,int n); { int  I,  m, t, k; for(I=0; Ia[m])         m=k;     t=a[I];     a[I]=a[m];     a[m]=t;   } } main() {   int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;   system("CLS");   for(i=0; i #include /*************found**************/ void fun(int m,int k); { int aa[20], i;   for(i=0;m;i++)   {     /*************found**************/     aa[i]=m/k;     m/=k;   }   for(;i;i--)     /*************found**************/     printf("%d",aa[i]); } main() {   int b,n;   printf("\nPlease enter a number and a base:\n");   scanf("%d%d",&n,&b);   fun(n,b);   printf("\n "); } 【参考答案】 (1)错误:void fun(int m, int k); 正确:void fun(int m, int k) (2)错误:aa[i]=m/k ; 正确:aa[i]=m%k; (3)错误:printf("%d", aa[i]) ; 正确:printf("%d", aa[i-1]); 下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y) 的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,z的值为15时,函 数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  /*************found**************/ #define FU(m,n) (m/n) float fun(float a,float b,float c) { float value;   value=FU(a+b,a-b)+FU(c+b,c-b); /*************found**************/   return(Value); } void main() { float x,y,z,sum;   printf("Input x y z:: ");   scanf("%f%f%f",&x,&y,&z);   printf("x=%f,y=%f,z=%f\n ",x,y,z);   if(x==y||y==z) { printf("Data error! \n "); exit(0);}   sum=fun(x,y,z);   printf("The result is:%5.2f\n ",sum); } 【参考答案】 (1)错误:#define FU(m,n) (m/n) 正确:#define FU(m,n) (m)/(n) (2)错误:return(Value); 正确:return (value); 下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然 后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的 字符串应为EDCBAABCDE。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  #include  void fun (char *s, char *t ) {   int I,s1;   s1=strlen(s);      for (I=0;I int fun(int x,int y,int z) { int j,t,n,m;   /*************found**************/   j=1;   t=m=n=1;   /*************found**************/   while (t!=0 && m!=0 && n!=0)   {     j=j+1;     t=j%x;     m=j%y;     n=j%z;   }   return j; } void main() {   int x1,x2,x3,j;   printf("Input x1 x2 x3: ");   scanf("%d%d%d",&x1,&x2,&x3);   printf("x1=%d,x2=%d,x3=%d \n",x1,x2,x3);   j=fun(x1,x2,x3);   printf("The minimal common multiple is: %d\n",j); } 【参考答案】 (1)错误:j=1;      正确:j=0; (2)错误:while (t!=0 && m!=0 && n!=0) 正确:while (t!=0 || m!=0 || n!=0) 下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生 人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8 名学生的成绩: 80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为4(平均分为75.5625)。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #define N 20 int fun(float *s, int n,float *aver) { float ave ,t=0.0;   int count=0,k,i;   for(k=0;k #include  #include  void fun(char s[],int n)  { char a[80],*p; int I; /*************found**************/ s=p;  for(I=0;I #include  #include  fun(char *p) { int i, t; char c[80];   for(i=0,t=0;p[i];i++)       if(!isspace(*(p+i))) c[t++]=p[i]; /*************found**************/   c[t]="\0";   strcpy(p,c); } void main() {char c,s[80]; int i=0; printf("Input a string: "); c=getchar(); while(c!='#')       { s[i]=c;i++;c=getchar();} s[i]='\0'; fun(s); puts(s); } 【参考答案】 (1)错误:c[t]="\0";        正确:c[t]='\0'; 下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元 素的值,然后输出主对角线元素之和。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include void fun() { int a[3][3],sum; int i,j; /*************found**************/ sum=1; for (i=0;i<3;i++)     { for (j=0;j<3;j++) /*************found**************/       scanf("%d",a[i][j]);     } for(i=0;i<3;i++)     sum=sum+a[i][i]; printf("Sum=%d\n",sum); } void main() { fun(); } 【参考答案】 (1)错误:sum=1;        正确:sum=0; (2)错误:scanf("%d",a[i][j]); 正确:scanf("%d",&a[i][j]); 下列给定程序中函数fun的功能是:求出字符串中最后一次出现的子字符串的地址, 通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为 NULL。例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是 abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到 的信息"Not found!"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include #include char *fun(char *s,char *t) { char *p,*r,*a; /*************found**************/ a=Null; while(*s)   { p=s;r=t;     while(*r) /*************found**************/         if(r==p) {r++;p++;}         else break;     if(*r=='\0') a=s;     s++;   } return a; } void main() {char s[100],t[100],*p; system("CLS"); printf("\nPlease enter string S: "); scanf("%s",s); printf("\nPlease enter substring t: "); scanf("%s",t); p=fun(s,t); if(p) printf("\nThe result is:%s\n ",p); else printf("\nNot found!\n "); } 【参考答案】 (1)错误:a=Null;        正确:a=NULL; (2)错误:if(r==p) { r++;p++;} 正确:if(*r==*p) { r++;p++;} 下列给定程序中,函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字 母,其他字符不变。例如,若输入"Ab,cD",则输出"AB,CD"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  char *fun(char tt[]) { int I; /*************found**************/ for(I=0;tt[I];I++)     if(('a'<=tt[I])||(tt[I]<= 'z'))     /*************found**************/     tt[I]+=32; return(tt); } main() { char tt[81]; system("CLS"); printf("\nPlease enter a string: "); gets(tt); printf("\nThe result string is: \n%s",fun(tt)); } 【参考答案】 (1)错误:||    正确:&& (2)错误:tt[i]+= 32    正确: tt[i]-=32; 下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目, 并作为函数值返回。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正 确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  #include  #define N 80 int fun(char *s,char *t) { int n;   char *p, *r;   n=0;   /*************found**************/   p=&s[0];   *r=t;   while(*p)   {     if(*r==*p)     {         r++;         if(*r=='\0')         {                n++;             /*************found**************/             【1】;         }     }       p++;   }   return n; } void main() {char a[N],b[N]; int m; system("CLS"); printf("\nPlease enter string a: "); gets(a); printf("\nPlease enter substring b: "); gets(b); m=fun(a,b); m=printf("\nThe result is :m=%d\n",m); } 【参考答案】 (1)错误:*r=t;    正确:r=t; (2)应填:r=t;或r=&t[0]; 下列给定程序中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构 成一个新数放在t中。高位仍在高位,低位仍在低位。例如当s中的数为87653142时 ,t中的数为7531。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #include  #include  void fun(long s,long *t) {int d; long s1=1; /*************found**************/ t=0; while(s>0)     { d=s%10; /*************found**************/       if(d%2==0)         {*t=d*s1+*t;         s1*=10;         }     s/=10;     } }  void main() {long s, t; system("CLS"); printf("\nPlease enter s: "); scanf ("%ld",&s); fun(s,&t); printf("The result is :%ld\n",t); } 【参考答案】 (1)错误:t=0;    正确:*t=0; (2)错误:if(d%2==0)    正确:if(d%2!=0) 下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入 60和65,输出为:a=65 b=60 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include /*************found**************/ void fun(int a,b) { int t; /*************found**************/   t=b;b=a;a=t; } void main() {int a,b;   system("CLS");   printf("Enter a, b: "); scanf("%d%d",&a,&b);   fun(&a, &b);   printf("a=%d  b=%d\n ", a,b); } 【参考答案】 (1)错误:void fun(int a,b) 正确:void fun(int *a,int *b) (2)错误:t=b;b=a;a=t; 正确:t=*b;*b=*a;*a=t; 下列给定程序中,函数 fun 的功能是:将一个由八进制数字字符组成的字符串转换 为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。 例如,若输入77777,则输出将是32767。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #include #include int fun(char *p) {     int n;     /*********found********/     n=*p-'o';     p++;     while(*p!=0)     {     /*********found********/         n=n*7+*p-'o';         p++;     }     return n; } main() {     char s[6];     int i;     int n;     printf("Enter a string (octal digits): ");     gets(s);     if(strlen(s)>5)     {         printf("Error:string too longer!please input again ! \n\n");         exit(0);     }     for(i=0;s[i];i++)         if(s[i]<'0'||s[i]>'7')         {             printf("Error:%c not is octal digits!\n\n ! \n\n",s[i]);             exit(0);         }     printf("The original string:");     puts(s);     n=fun(s);     printf("\n%s is convered to intege number:%d\n\n",s,n); } 【参考答案】 (1)错误:n=*p-'o'      正确:n=*p-'0' (2)错误:n=n*7+*p-'o'      正确:n=n*8+*p-'0' 下列给定程序中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行 排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  #define MAXLINE 20 /*************found**************/ fun(char *pstr[6]) { int I, j;   char *p;   for(I=0;I<5;I++)       {for(j=I+1;j<6;j++) /*************found**************/         { if(strcmp(*(pstr+I),pstr+j)>0)               {                 p=*(pstr+I); /*************found**************/                 *(pstr+I)=pstr+j;                 *(pstr+j)=p;               }           }       } } void main() { int i;   char *pstr[6],str[6][MAXLINE];   system("CLS");   for(i=0;i<6;i++)       pstr[i]=str[i];   printf("\nEnter 6 string(1 string at each line):\n ");   for(i=0;i<6;i++)       scanf("%s",pstr[i]);   fun(pstr);   printf("The strings after sorting:\n ");   for(i=0;i<6;i++)       printf("%s\n ",pstr[i]); } 【参考答案】 (1)错误:fun(char *pstr[6]) 正确:void fun(char *pstr[6]) (2)错误:if(strcmp(*(pstr+i),pstr+j)>0) 正确:if(strcmp(*(pstr+i),*(pstr+j))>0) (3)错误:*(pstr+i)=pstr+j; 正确:*(pstr+i)= *(pstr+j); 下列给定的程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的 顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include #define N 20 void fun(int a[],int n) {int I,j,t,p; for(j=0;jhigh,查找结束。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  #define  N  10 /*************found**************/ void fun(int a[],int m) { int low=0,high=N-1,mid;   while(low<=high)       {  mid=(low+high)/2;         if(m=a[mid])             low=mid+1;         else  return(mid);       } return(-1); } void main() {  int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;   printf("a数组中的数据如下:");   for(i=0;i=0)       printf("m=%d,index=%d\n",m,k);   else       printf("Not be found!\n"); } 【参考答案】 (1)错误:void fun(int a[],int m) 正确:int fun(int a[],int m) (2)错误:else if(m>=a[mid]) 正确:else if(m>a[mid]) 下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作 为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include typedef struct aa { int data;   struct aa *next; } NODE; int fun (NODE *h) { int sum=0;   NODE *p;   p=h->next; /*************found**************/   while(p->next)       { if(p->data%2==0)             sum+=p->data; /*************found**************/           p=h->next;       }   return sum; } NODE *creatlink(int n) {   NODE *h,*p,*s;   int i;   h=p=(NODE*)malloc(sizeof(NODE));   for(i=1;idata=rand()%16;     s->next=p->next;     p->next=s;     p=p->next;   }   p->next=NULL;   return h; } outlink(NODE *h) { NODE  *p;   p=h->next;   printf("\n\n The LIST :\n\n HEAD");   while(p)     { printf("->%d",p->data);       p=p->next;}   printf("\n"); } void main() { NODE *head; int sum;   system("CLS");   head=creatlink(10);   outlink(head);   sum=fun(head);   printf("\nSUM=%d",sum); } 【参考答案】 (1)错误:while (p->next)      正确:while (p!=NULL) (2)错误:p=h->next;      正确:p=p->next; 下列给定程序中,函数fun的功能是:求表达式s=aa…aa-…-aa-aa-a(此处aa…aa表 示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include long fun(int a,int n) {   int j; /*************found**************/   long s=0,t=1;  /*************found**************/   for(j=0;j<=n;j++)     t=t*10+a;   s=t;   for(j=1;j #include  double fun (int m) { double y=1.0;   int i; /*************found**************/   for(i=2;i #define N 20 int fun(int n, int *a) /*************found**************/  { int I,j,k,sum;   sum=0;   for(k=3,I=0;I #include  #include  #include  /*************found**************/ fun(int k) { int n; float s, w, p, q;   n=1;   s=1.0;   while(n<=k)       { w=2.0*n;         p=w-1.0;         q=w+1.0;         s=s*w*w/p/q;         n++;         } /*************found**************/   return s } void main() { system("CLS");   printf("%f\n ",fun(10)); } 【参考答案】 (1)错误:fun(int k)    正确:double fun(int k) (2)错误:return s    正确:return s; 下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上( 含平均值)的实数个数。例如, n=8时,输入 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平 均值为195.838745,在平均值以上的实数个数应为5。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  int fun(float x[], int n) /*************found**************/  int j, c=0; float  xa=0.0; for (j=0; j=xa)         c++; return c; } void main() { float x[100]={ 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};   system("CLS");   printf("%d\n",fun (x,8)); } 【参考答案】 (1)错误:缺{          正确:加{ 下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=1/(1+A (n-1)) 例如,若n=10,则应输出0.617977。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ int fun(int n) { float A=1;int I; /*************found**************/   for(I=2;I #define  N  100 int  fun(int *s, int  n) { int I,j,k,a,b,c;   j=0;   for(I=100; I 1000); num= fun(a,n); printf("\n\nThe result :\n"); for(i=0; i #include  long fun(int k) { /*************found**************/   if k>1     return(k*fun(k-1));   return 1; } void main() {int k=10; system("CLS"); printf("%d!=%ld\n ",k,fun(k)); } 【参考答案】 错误:if k>1    正确:if(k>1) 下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。 t=1/2-1/3-…-1/m 例如,若输入5,则应输出-0.283333。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  double fun(int m) {   double t=1.0;   int I;   for(I=2;I<=m;I++) /*************found**************/       t=1.0-1/I; /*************found**************/           ; } void main() {int m; system("CLS"); printf("\nPlease enter 1 integer numbers:\n"); scanf("%d",&m); printf("\n\nThe result is %1f\n", fun(m)); } 【参考答案】 (1)错误:t=1.0-1/i;    正确:t-=1.0/i; (2)错误:;    正确:return t; 下列给定函数中,函数fun的功能是:统计字符串中各元音字母(即A、E、I、O、U) 的个数。注意:字母不分大小写。例如,输入THIs is a boot,则应输出是1 0 2 2 0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ fun(char *s, int num[5]) { int k, i=5;   for(k=0;k=0)       num[i]++;       } } void main() { char s1[81]; int num1[5], i;   system("CLS");   printf("\nPlease enter a string: "); gets(s1);   fun(s1, num1);   for(i=0;i<5;i++) printf("%d ",num1[i]); printf("\n"); } 【参考答案】 (1)错误:fun(char *s, int num[5]) 正确:void fun(char *s, int num[5]) (2)错误:num[i]=0;    正确:num[k]=0; (3)错误:switch(s)    正确:switch(*s) 下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶 数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组 中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组 有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #define SIZE 20 fun (double *s,double *w) {  int k,i; double sum;   for(k=2,i=0;i #include  #include  int fun( int m) { int I,k;   for (I=m+1; ;I++)     { for (k=2;k=i) 下列给定程序中,函数fun的功能是:计算并输出high以内最大的10个素数之和。 high由主函数传给函数fun。例如high的值为100,则函数的值为732。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  int  fun(int  high) {   int sum=0,n=0, j, yes;   while((high>=2)&&(n<10))     {       yes = 1;       for(j=2; j<=high/2; j++) /*************found**************/           if(high%j==0)             {               yes=0;               break             }       if(yes)           {             sum+=high;             n++;           }       high--;     }   return  sum; } void main() { system("CLS"); printf("%d\n",fun(100)); } 【参考答案】 (1)错误:break    正确:break; 下列给定程序中,函数fun的功能是:计算整数n的阶乘。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double fun(int n) { double result=1.0; while(n>1&&n<170) /*************found**************/       result*=--n; /*************found**************/ return; } void main() {int n; system("CLS"); printf("Enter an integer: "); scanf("%d",&n); printf("\n\n%d!=%1g\n\n ",n,fun(n)); } 【参考答案】 (1)错误:result*=--n;      正确:result*=n--; (2)错误:return;      正确:return result; 下列给定程序中,函数fun的功能是:应用递归算法求某数a的平方根。求平方根的 迭代公式如下: 例如,2的平方根为1.414214。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  /*************found**************/ fun(double a,double x0) { double x1,y;   x1=(x0+a/x0)/2.0; /*************found**************/   if(fabs(x1-x0)>0.00001)       y=fun(a,x1);   else  y=x1;   return y; } void main() { double x;   printf("Enter x: "); scanf("%lf",&x);   printf("The square root of %lf is %1f\n",x, fun(x,1.0)); } 【参考答案】 (1)错误:fun(double a,double x0) 正确:double fun(double a,double x0) (2)错误:if(fabs(x1-x0)>0.00001) 正确:if(fabs(x1-x0)>=0.00001) 下列给定程序中,函数fun的功能是根据输入的3个边长(整型值),判断能否构成三 角形:若能构成等边三角形,则返回3,若是等腰三角形,则返回2,若能构成三角形则 返回1,若不能,则返回0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  int fun(int a,int b,int c) { if(a+b>c&&b+c>a&&a+c>b)     {if(a==b&&b==c) /*************found**************/       return 1;       else if(a==b||b==c||a==c)       return 2; /*************found**************/       else return 3;     }   else return 0; } void main() {   int a,b,c,shape;   printf("\nInput a,b,c: ");   scanf("%d%d%d",&a,&b,&c);   printf("\na=%d, b=%d, c=%d\n",a,b,c);   shape=fun(a,b,c);   printf("\n\nThe shape :%d\n",shape); } 【参考答案】 (1)错误:return 1;    正确:return 3; (2)错误:return 3;    正确:return 1; 下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将 其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun函数之 前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ fun(char *p) { char max, *q;int I=0;   max=p[I];   while (p[I]!=0)       {if (maxp) 下列给定程序中,函数fun的功能是:求出两个数的最大公约数,并作为函数值返回 。例如,若给num1和num2输入49和21,则输出的最大公约数为7;若给num1和num2分 别输入27和81,则输出最大公约数为27。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  int fun (int a, int b) { int r,t;   if(a /*************found**************/ void fun(char a) { if(*a)   {     fun(a+1);     printf("&c",*a);   } } main() { char s[10]="abcd";   printf("处理前字符串=%s\n处理后字符串=",s);   fun(s);   printf("\n"); } 【参考答案】 (1)错误:void fun(char a)    正确:void fun(char *a) 下列给定程序中,函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次 方为15625,此值的低3位值为625。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  long fun(int x, int y, long *p) { int i;   long t=1; /*************found**************/   for(i=1;i #include  #include  #include  #define    N  80 void  fun(char *s, char t[]) {   int  I, j=0; /*************found**************/   for(I=0; I<(int)strlen(s);I++)       if(I%2 && s[I]%2==0)            t[j++]=s[I] ; /*************found**************/   t[I]='\0'; } void main() {   char s[N], t[N];   system("CLS");   printf("\nPlease enter string  s :");   gets(s);   fun(s,t);   printf("\nThe result is :%s\n",t); } 【参考答案】 (1)错误:if (i%2 && s[i]%2 ==0) 正确: if(i%2 || s[i]%2==0) 或 if(i%2 !=0 || s[i]%2==0)  (2)错误:t[i] ='\0' 正确:t[j]= '\0';或t[j]=0; 下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后 将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指 数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为 abcdefg,b所指字符串中的内容为1234时,c所指数组中的内容应该为a4b3c2d1efg; 而当a所指字符串中的内容为1234,b所指字符串中的内容为abcdefg时,c所指数组 中的内容应该为1g2f3e4dcba。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  void fun(char *a,  char *b,  char  *c) {   int I, j; char ch;   I=0; j=strlen(b)-1; /*************found**************/   while (I>j)        {ch=b[I];  b[I]=b[j]; b[j]=ch;        I++; j--;       }   while (*a||*b)       { if (*a){*c=*a; c++; a++;}         if(*b){*c=*b; c++; b++;}       } /*************found**************/   *c=0 ; } void main() {   char s1[100],s2[100],t[200];   system("CLS");   printf("\nEnter s1 string: ");   scanf("%s",s1);   printf("\nEnter s2 string: ");   scanf("%s",s2);   fun(s1,s2,t);   printf("\nThe result is :%s\n",t); } 【参考答案】 (1)错误:while(i>j)    正确:while(i #include  #include  double fun(double eps) {double s,t; int n=1; s=0.0; /*************found**************/ t=1; /*************found**************/ while(t>eps)     { s+=t;       t=t*n/(2*n+1);       n++;     } /*************found**************/ return (s); } void main() { double x;   printf("\nPlease enter a precision: "); scanf("%lf",&x);   printf("\nPi=%1f\n ",fun(x)); } 【参考答案】 (1)错误:t=1;    正确:t=1.0; (2)错误:while(t>eps)    正确:while(t>=eps) (3)错误:return(s);    正确:return(s*2); 下列给定程序中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构 成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142 时,t中的数为8642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  void fun(long s,long *t) /*************found**************/ { int d;   long s1=0;   *t=0;   while(s>0)       { d=s%10;         if(d%2==0)             {*t=d*s1+*t;             s1*=10;             } /*************found**************/         s\=10;       } } void main() { long s,t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is :%ld\n",t); } 【参考答案】 (1)错误:long s1=0;    正确:long s1=1; (2)错误:s\=10;                  正确:s/=10; 下列给定程序中,函数fun的功能是:交换主函数中两个变量的值。例如,若变量a中 的值为8,b中的值为3,则程序运行后a中的值为3,b中的值为8。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ void fun(int x,int y) { int t; /*************found**************/   t=x;x=y;y=t; } void main() { int a,b;   a=8;   b=3;   fun(&a, &b);   printf("%d  %d\n ", a,b); } 【参考答案】 (1)错误:void fun(int x, int y) 正确:void fun(int *x, int *y) (2)错误:t=x;x=y;y=t; 正确:t=*x;*x=*y;*y=t; 下列给定程序中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址 作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #define  N  5 #define  M  81 /*************found**************/ fun(char (*sq)[N]) {int i; char *sp; sp=sq[0]; for(i=0;i #include  /*************found**************/ IsPrime(int n); {   int i,m;   m=1; /*************found**************/   for(i=2;i #include  #include  void fun (char *s, char *t ) {   int I,s1;   s1=strlen(s);    /*************found**************/   for (I=0;I<=s1;I++)     t[I]=s[I];      for (I=0;I #include  #include  /*************found**************/ fun (int n) { int a=2,b=1,c, k;   double s=0.0;   for(k=1;k<=n;k++)     {s=s+1.0*a/b; /*************found**************/       c=a;a+=b;b+=c;     }   return(s); } void main() { int n=5;   system("CLS");   printf("\nThe value of function is:%1f\n",fun(n)); } 下列给定程序中,函数fun的功能是:输出M行、N列整数方阵,然后求两条对角线上 的各元素之和,返回此和数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #define  M  5 /*************found**************/ int fun(int n,int xx[ ][ ]) { int I, j, sum=0;   printf("\nThe %d x %d matrix:\n",M,M);   for(I=0;I #include  #include  #include  #include  void fun(char *p) {   int k=0;   for ( ;*p;p++)     if (k)         { /*************found**************/         if (p==' ')            {             k=0; /*************found**************/             *p=toupper( *(p-1));           }         }     else         k=1; } void main() {char  chrstr[64]; int d; system("CLS");    printf("\nPlease enter an English sentence within 63 letters: "); gets(chrstr); d=strlen(chrstr);    chrstr[d]=' '; chrstr[d+1]=0; printf("\nBofore changing:\n  %s",chrstr); fun(chrstr); printf("\nAfter changing:\n  %s",chrstr); } 【参考答案】 (1)错误:if(p==' ') 正确:if(*p==' ') (2)错误:*p=toupper(*(p-1)); 正确:*(p-1)=toupper(*(p-1)); 下列给定程序中,函数fun的功能是:从整数1到55之间,选出能被3整除且有一位上 的数是5的数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规 定,函数中a1放个位数,a2放十位数。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序: #include  /*************found**************/ int fun(int *b); {   int k,a1,a2,I=0; /*************found**************/   for(k=10;k<=55;k++)   {     a2=k/10;     a1=k-a2*10;     if((k%3==0 && a2==5)|| (k%3==0 && a1==5))     {         b[I]=k;         I++;     }   } /*************found**************/   return k; } void main() {   int a[100],k,m;   m=fun(a);   printf("The result is: \n");   for(k=0;k #include  char fun(char c) { /*************found**************/   if(c>='A' && c<='Z')     c=c-32; /*************found**************/   if(c>='a' && c<='u')         c=c-5;   else if(c>='v' && c<='z')     c=c-21;   return c; } main() { char c1,c2; printf("\nEnter a letter(A-Z): "); c1=getchar(); if(isupper(c1)) {     c2=fun(c1);     printf("\n\nThe letter %c change to %c\n",c1,c2); } else {     printf("\nEnter (A-Z)!\n"); } } 【参考答案】 (1)错误:c=c-32;    正确:c=c+32; (2)错误:c=c-5;    正确:c=c+5; 下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的t1所指子串 替换成t2所指子串,所形成的新串放在w所指的数据中。在此处,要求t1和t2所指字 符串的长度相同。例如,当s所指字符串中的内容为abcdabfabc,t1所指子串中的内 容为ab,t2所指子串中的内容为99时,结果,在w所指的数组中的内容为abcdabf99c 。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ void fun(char *s,t1,t2,w) { char *p,*r,*a;   strcpy(w,s); /*************found**************/   while(w)   {       p=w;     r=t1;     while(*r)         if(*r==*p)         {             r++;             p++;         }         else         {             break;         }     if(*r=='\0')         a=w;     w++;   }   r=t2;   while(*r)   {     *a=*r;     a++;     r++;   } } main() {   char s[100],t1[100],t2[100],w[100];   printf("\nPlease enter string S:");   scanf("%s",s);   printf("\nPlease enter substring t1:");   scanf("%s",t1);   printf("\nPlease enter substring t2:");   scanf("%s",t2);   if(strlen(t1)==strlen(t2))   {     fun(s,t1,t2,w);     printf("\nThe result is:%s\n",w);   }   else   {     printf("\nError:strlen(t1)!=strlen(t2)\n");   } } 【参考答案】 (1)错误:void fun(char *s,t1,t2,w) 正确:void fun(char *s,char *t1,char *t2,char *w) (2)错误:while (w)    正确:while (*w) 下列给定的程序中,函数fun的功能是:将s所指字符串中出现的t1所指字符串全部 替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和 t2所指字符串的长度相同。例如,当s所指字符串中所指的内容为abcdabfab,t1所 指字符串中的内容为ab,t2所指字符串中的内容为99时,结果在w所指的数组中的内 容应为99cd99f99。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/  int fun (char *s,char *t1, char *t2, char *w) { char *p,*r,*a; strcpy(w,s); while (*w)     {p=w;  r=t1; /*************found**************/       while (r)            if (*r==*p){r++;p++;}           else break;       if (*r=='\0')         {a=w;  r=t2; /*************found**************/           while (*r){*a=*r;a++;r++}            w+=strlen(t2);         }       else w++;     } } void main() {char s[100],t1[100],t2[100],w[100]; system("CLS"); printf("\nPlease enter string  S: "); scanf("%s",s); printf("\nPlease enter substring  t1: "); scanf("%s",t1); printf("\nPlease enter substring  t2: "); scanf("%s",t2); if (strlen(t1)==strlen(t2))   {   fun (s,t1,t2,w);   printf("\nThe result is : %s\n",w);   } else     printf("Error : strlen(t2)\n"); } 【参考答案】 (1)错误:int fun(char *s,char *t1,char *t2, char *w) 正确:void fun(char *s,char *t1,char *t2, char *w) (2)错误:while(r)    正确:while(*r)  (3)错误:r++    正确:r++; 下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,中间 的放在b中,最小的放在c中。例如,输入的数为:55 12 34,输出结果应当 是:a=55.0,b=34.0,c=12.0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include void fun(float *p,float *q,float *s) { /*************found**************/ float *k; if(*p<*q) {     k =*p;     *p=*q;     *q=k; } /*************found**************/ if(*s<*p) {     k =*s;     *s=*p;     *p=k; } if(*q<*s) {     k =*q;     *q=*s;     *s=k; } } main() { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); } _ 【参考答案】 (1)错误:float *k;    正确:float k; (2)错误:if (*s < *p)    正确:if(*s > *p) 下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数, 构成一个新数放在t中,例如,当s中的数为7654321时,t中的数为7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ void fun(long s,long t) { long s1=10;   *t=s%10;   while(s>0)       { s=s/100;         *t=s%10*s1+*t;         /*************found**************/     s1=s1*100;       } } void main() { long s, t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is: %ld\n ",t); } 【参考答案】 (1)错误:void fun(long s,long t)     正确:void fun(long s,long *t) (2)错误:s1=s1*100;    正确:s1=s1*10; 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大 的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然 后把第3个字符插入到前两个字符中,插入后前3个字符依然有序;再把第4个字符插 入到前3个字符中,待排序的字符串已在主函数中赋予。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #define  N  80 void insert(char *aa) { int i, j, n;  char ch; n=strlen(aa); for(i=1;i=0)&&(ch #include  #include  #include  #include  #define N 10 typedef struct ss   { char num[10];     int s;   } STU; STU *fun(STU a[], int m) { STU b[N],*t;   int i, j,k; /*************found**************/   *t=calloc(m,sizeof(STU));   for(i=0;ib[j].s) j=i; /*************found**************/       t[k].num=b[j].num;       t[k].s=b[j].s;       b[j].s=0;     } return t; } outresult(STU a[],FILE *pf) { int i;   for(i=0;i10)       { printf("\nGive the number of the students who have better score: ");   scanf("%d",&m); }   pOrder=fun(a,m);   printf("***** THE RESULT*****\n");   printf("The top :\n");   for(i=0;i #include #include typedef struct aa { int data;   struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL,*p,*s;   int i;   s=(NODE *)malloc(sizeof(NODE));   h=s; /*************found**************/   p->next=NULL;   for(i=1;idata=rand()%m;       s->next=p->next;p->next=s;  p=p->next;     }   s->next=NULL; /*************found**************/   return p; } outlink(NODE *h) { NODE  *p;   p=h->next;   printf("\n The LIST :\n\n HEAD");   while(p)     { printf("->%d",p->data);       p=p->next;}   printf("\n"); } main() { NODE *head;   system("CLS");   head=Creatlink(8,22);   outlink(head); } 【参考答案】 (1)错误:p->next=NULL;      正确:p=s; (2)错误:s->date=rand( )%m ; 正确:s->data=rand( )%(m - 1); (3)错误:return p;      正确:return h; 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。  例如,若m=2000,则应输出0.000160。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  /*************found**************/ fun (int m) { double y=0, d;   int I; /*************found**************/   for(I=100,I<=m,I+=100)     {d=(double)I*(double)I;       y+=1.0/d;     }   return(y); } void main() { int n=2000;   system("CLS");   printf("\nThe result is %1f\n",fun(n)); } 【参考答案】 (1)错误:fun(int m) 正确:double fun(int m) (2)错误:for(i=100,i<=m,i+=100) 正确:for(i=100;i<=m;i+=100) 下列给定程序中,函数fun的功能是:计算并输出下列数的前N项之和SN,直到SN+1大 于q为止,q的值通过形参传入。 例如,若q的值为50.0,则函数值为49.394948。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double fun(double q) { int n; double s,t;   n=2;   s=2.0;   while(s<=q)       {         t=s; /*************found**************/         s=s+(n+1)/n;         n++;       }   printf("n=%d\n ",n); /*************found**************/   return s; } void main() {   printf("%f\n ",fun(50)); } 【参考答案】 (1)错误:s=s+(n+1)/n ; 正确:s=s+(double)(n+1)/n; (2)错误:return s;    正确:return t; 下列给定程序中函数fun的功能是:统计子字符串substr在字符串str中出现的次数 。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  /*************found**************/ int fun(char *str,*substr) {   int i, j, k,num=0;   /*************found**************/   for(i=0,str[i],i++)     for(j=i,k=0;substr[k]==str[j];k++,j++)       if(substr[k+1]=='\0')       {         num++;               break;     }   return num; } void main() { char str[80],substr[80];   printf("Input a string: ");   gets(str);   printf("Input a substring: ");   gets(substr);   printf("%d\n ",fun(str,substr)); } 【参考答案】 (1)错误:int fun(char *str, *substr) 正确:int fun(char *str, char *substr) (2)错误:for (i=0, str[i], i++) 正确:for (i=0;str[i];i++) 下列给定程序中,函数fun实现的功能是:统计一个无符号整数中各位数字值为零的 个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。 例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8 。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include int fun(unsigned n,int *zero) { int count=0,max=0,t; do {     t=n%10;     /*************found**************/     if(t=0)         count++;     if(max #include  #include  /*************found**************/ fun (int n) { int a,b,c, k;   double s;   s=0.0;a=2;b=1;   for(k=1;k<=n;k++)     { /*************found**************/       s=s+(Double)a/b;       c=a;a=a+b;b=c;     }   return s; } main() { int n=5;   system("CLS");   printf("\nThe value of function is:%lf\n",fun(n)); } 【参考答案】 (1)错误:fun(int n)    正确:double fun(int n) (2)错误:s=s+(Double)a/b;    正确:s=s+(double)a/b; 下列给定的程序中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和 等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(int a, int *b, int *c) { int I,j,d,y;   for (I=3;I<=a/2;I=I+2) /*************found**************/       {y=0;          for (j=2;j<=sqrt((double)I );j++)           if (I%j==0)  y=0;       if (y==1) /*************found**************/           { d=I-a;                for (j=2;j<=sqrt((double)d );j++)                 if (d%j==0)  y=0;             if (y==1)             {*b=I;  *c=d;}             }       } } void main() { int  a,b,c;   do     { printf("\nInput  a: ");   scanf("%d",&a);}   while(a%2);   fun(a,&b,&c);   printf("\n\n%d=%d+%d\n",a,b,c); } 【参考答案】 (1)错误:y=0;                    正确:y=1; (2)错误:d=i-a;    正确:d=a-i; 下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一 个新串放在t所指的数组中。例如,当s所指字符串为ABCD时, t所指字符串中的内 容应为ABCDDCBA。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/ void fun (char s, char t ) {   int I,s1;   s1=strlen(s);   for (I=0;I #include  #include  #include  int fun (char  *s,  char  *t) {int  n;  char *p, *r; n=0; while(*s)   {p=s;     r=t;     while (*r) /*************found**************/         if(*r==*p)  {r++; p++}         else  break; /*************found**************/     if(r=='\0')     n++;     s++;   } return n; } void main( ) {char  s[100],  t[100];  int  m; system("CLS"); printf("\nPlease enter string s: "); scanf("%s",s); printf("\nPlease enter substring t: "); scanf ("%s",t); m=fun(s,t); printf("\nThe result is: m=%d\n", m); } 【参考答案】 (1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2)错误:if(r=='\0') 正确:if(*r=='\0') 下列给定程序中,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个 根,并且绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一 个根值为2.000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  double funx (double x) {   return(2*x*x*x-4*x*x+3*x-6); } double fun(double m,double n) { /*************found**************/   int r;   r=(m+n)/2; /*************found**************/   while (fabs(n-m)<0.001)   {     if(funx(r)*funx(n)<0)         m=r;     else         n=r;     r=(m+n)/2;   }   return r; } main() {   double m,n,root;   printf("Enter m n:\n");   scanf("%lf%lf",&m,&n);   root=fun(m,n);   printf("root= %6.3f\n",root); } _ 【参考答案】 (1)错误:int r;    正确:double r; (2)错误:while (fabs(n-m) <0.001) 正确:while (fabs(n-m) >0.001) 下列给定程序中,函数fun的功能是:从3个红球、5个白球、6个黑球中任意取出8个 作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作 为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球 数,k的值代表黑球数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  int fun() { int i,j,k,sum=0;   printf("\nThe result :\n\n "); /*************found**************/   for(i=0;i<=3;i++)       { for (j=1;j<=5;j++)           {k=8-i-j; /*************found**************/             if(k>=1&&k<=6)                 { sum=sum+1;                   printf("red:%4d white:%4dblack:%4d\n ",i,j,k);                 }           }       } return sum; } void main() { int sum;   sum=fun();   printf("sum=%4d\n\n ",sum); } 【参考答案】 (1)错误:for(i=0;i<=3;i++) 正确:for(i=1;i<=3;i++)=1&&k<=6) 正确:if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))=3;i++),而是for (i=1;i<=3;i++),另外,在if(k>=1&&k<=6)中,程序旨在说明"在每组中,可以没有黑 球,但必须要有红球和白球"信息,一一满足后,正确的条件应该是: if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。 下列给定程序中,函数fun的功能是:从字符串s中删除所有小写字母c。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  void fun(char *s) {int i, j; for(i=j=0; s[i]!= '\0';i++)     if(s[i]!= 'c') /*************found**************/       s[j]=s[i]; /*************found**************/ s[i]='\0'; } void main() { char s[80];   printf("\nEnter a string:    ");   gets(s);   printf("The original string:  ");   puts(s);   fun(s);   printf("The string after deleted: ");   puts(s);   printf("\n\n "); } 【参考答案】 (1)错误:s[j]=s[i];              正确:s[j++]=s[i]; (2)错误:s[i]='\0';              正确:s[j]= '\0' 下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所 有字符按ASCII码升序排序后输出。例如,若输入edcba,则应输出abcde。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(char  t[]) { char c; int I,j; /*************found**************/ for(I=strlen(t);I;I--)     for(j=0;j0;i--)本题是利用选 择法对数组元素进行比较排序。所谓选择法,是依次用当前取得的元素和它后面的 元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对 两个数进行交换,保证第一个元素始终存放数组中的最大数,以后依次挑选出次大 数,这样最终的数组就是有序的。Strlen函数在求字符串长度时,会加上结束符,所 以要减1。 (2)这里是一个分析逻辑错误,题中要求按升序排序,所以应改为if (t[j] > t [j+1])。 已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相邻的前3项之和。下 列给定的程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n 的值通过形参传入。例如,当n=10时,程序的输出结果应为23.197745。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include  #include  #include  /*************found**************/ fun(int n)  {double sum, s0, s1, s2, s; int k; sum=1.0; if (n<=2) sum=0.0; s0=0.0; s1=0.0; s2=1.0; for (k=4;k<=n;k++)     { s=s0+s1+s2;       sum+=sqrt(s);       s0=s1;s1=s2;s2=s;     } /*************found**************/ return sum } void main() {int n; system("CLS"); printf("Input  N="); scanf("%d",&n); printf("%f\n",fun(n)); } 【参考答案】 (1)错误:fun(int n)    正确:double fun(int n) (2)错误:return sum    正确:return sum; 下列给定程序中,函数fun的功能是:计算n的5次方的值(规定n的值大于2且小于8), 通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值 返回。例如,7的5次方是1 6807,其低3位数的和值是15。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  int fun(int n,int *value) {   int d,s,i; /*************found**************/   d=0; /*************found**************/   s=1;   for(i=1;i<=5;i++)     d=d*n;   *value=d;   for(i=1;i<=3;i++)   {     s=s+d%10; /*************found**************/     s=s/10;   }   return s; } void main() {   int  n,sum,v;   do   {     printf("\n Enter n(2=8);   sum=fun(n,&v);   printf("\n\nThe result: \n value=%d sum=%d\n\n" ,v,sum); } 【参考答案】 (1)错误:d=0;                    正确:d=1; (2)错误:s=1;    正确:s=0 ; (3)错误:s=s/10;    正确:d=d/10 ; 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置上的字符, 把ASCII值大或相等的字符依次存放存到c数组中,形成一个新的字符串。例如,若a 中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串应为aBcdeFgH。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  void fun(char *p,char *q,char *c) { /*************found**************/   int k=1;   /*************found**************/   while(*p!=*q)       { if (*p<*q)              c[k]=*q;         else c[k]=*p;         if(*p)  p++;         if(*q)  q++ ;     k++;       } } main() { char a[10]="fshADfg",b[10]="sdAEdi",c[80]={'\0'};   fun(a,b,c);   printf("The string a:"); puts(a);   printf("The string b:"); puts(b);   printf("The result :"); puts(c); } 【参考答案】 (1)错误:int k=1;              正确:int k=0 ; (2)错误:while(*p != *q)              正确:while(*p || *q) 下列给定程序中,函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规 律输出。例如输入1,2,3,4,程序运行后输出以下方阵: 4  1  2  3 3  4  1  2 2  3  4  1 1  2  3  4 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #define  M  4 /*************found**************/ void fun(int a) { int I,j,k,m;   printf("Enter 4 number: ");   for(I=0;I0;I--)       { k=a[M-1];         for(j=M-1;j>0;j--) /*************found**************/             a[j]=a[j+1];         a[0]=k;         for(m=0;m #include  #include  float fun(float num) { int s;   float n,t, pi;   t=1;pi=0;n=1;s=1; /*************found**************/   while(t>=num)         {         pi=pi+t;         n=n+2;         s=-s; /*************found**************/         t=s%n;         }   pi=pi*4;   return pi; } void main() { float n1, n2;   system("CLS");   printf("Enter a float number: ");   scanf("%f",&n1);   n2=fun(n1);   printf("%6.4f\n ",n2); } 【参考答案】 (1)错误:while(t>=num) 正确:while(fabs(t)>=num) (2)错误:t=s%n;            正确:t=s/n; 假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun的功能 是:删除数列中值为X的元素。N中存放的是数列中元素的个数。 请改正程序中的错误,使它能够得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #define  N  20 fun (int *a,int n,int x) {int p=0,i; a[n]=x; while (x!=a[p])     p=p+1; if(p==n) return -1; else     {for (i=p;i #include #include  #define M 10 int a[M][M]={0}; /*************found**************/ fun( int **a, int m) {int j,k; for(j=0;j #include  #include  fun(int n,int *a) { int I,j,p,t;   for (j=0;ja[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"); } void main() {int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; system("CLS"); printf("\n\nBefore sorting %d numbers:\n",n); putarr(n,aa); fun(n,aa); printf("\nAfter sorting %d numbers:\n",n); putarr(n,aa); } 【参考答案】 (1)错误:for(i=j+1;i void fun(char *p,char *b) { int i, k=0;   while(*p) /*************found**************/       { i=1; /*************found**************/         while(i<3||*p)               {                 b[k]=*p;                 k++;p++;i++;               }         if(*p) /*************found**************/               { b[k]= ' ';}         }   b[k]= '\0'; } void main() { char a[80],b[80];   printf("Enter a string:  ");   gets(a);   printf("The original string:  ");   puts(a);   fun(a,b);   printf("\nThe string after insert space:  ");   puts(b); printf("\n\n "); } 【参考答案】 (1)错误:i=1;            正确:i=0; (2)错误:while(i<3||*p)            正确:while(i<3&&*p) (3)错误:b[k]=' ';            正确:b[k++]=' '; 下列给定程序中,函数fun的功能是:将 个字符串连接起来,组成一个新串,放入pt 所指字符串中,例如,把3个串abc、CD、EF串联起来,结果是abcCDEF。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  /*************found**************/ int fun(char str[][10],int m,char *pt) { int k,q,I,j=0;   for(k=0;k #include  #include  #include  /*************found**************/ void fun (char str,char ch) {while (*str &&*str !=ch) str++; /*************found**************/ if(*str==ch)   { str[0]=ch; /*************found**************/     str[1]=′0′;   } } void main() {char s[81],c; system("CLS"); printf("\nPlease enter a string : "); gets(s); printf("\n Please enter the character tosearch : "); c=getchar(); fun(s,c); printf("\nThe result is %s\n",s); } 【参考答案】 (1)错误:void fun (char str,char ch) 正确:void fun (char *str,char ch) (2)错误:if(*str==ch) 正确:if(*str=='\0') (3)错误:str[1]='0'; 正确:str[1]= '\0'; 下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的 字符串,并取代原字符串。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #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"; } void main() {char item[80]; system("CLS"); printf("\nEnter a string: ");gets(item); printf("\n\nThe string is:%s\n",item); fun(item); printf("\n\nThe string of changing is :%s\n",item); } 【参考答案】 (1)错误:s[j]=s[i];            正确:s[j++]=s[i]; (2)错误:s[j]="\0";              正确:s[j]='\0'; 下列给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数, 依次构成一个新数放在t中。例如,当s中的数为7654321时,t中的数为642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include /*************found**************/ void fun(long s,long t) { long s1=10;   s/=10;   *t=s%10; /*************found**************/   while(s<0)       { s=s/100;         *t=s%10*s1+*t;         s1=s1*10;       } } void main() { long s, t;   system("CLS");   printf("\nPlease enter s: ");   scanf("%ld",&s);   fun(s,&t);   printf("The result is: %ld\n ",t); } 【参考答案】 (1)错误:void fun(long s,long t) 正确: void fun(long s,long *t) 下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不 允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的 值为3,b中的值为8。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include  #include  int fun(int *x,int y) { int t; /*************found**************/ t=x;x=y; /*************found**************/ return(y); } void main() {int a=3,b=8; system("CLS"); printf("%d %d\n ",a,b); b=fun(&a,b); printf("%d %d\n ",a,b); } 【参考答案】 (1)错误:t=x;x=y;            正确:t=*x;*x=y; (2)错误:return(y);            正确:return(t); 下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为 函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ double fun(char *s,char *t) {   int s1=0,t1=0;   char *ss,*tt;   ss=s;   tt=t;   /*************found**************/   while(*ss)   {     s1++;     (*ss)++;   }   /*************found**************/   while(*tt)   {     t1++;     (*tt)++;   }   if(t1>s1)     return t;   else     return s; } void main() {   char a[80],b[80];   printf("\nEnter a string : ");   gets(a);   printf("\nEnter a string again: ");   gets(b);   printf("\nThe longer is :\n\n%s\n", fun(a,b)); } 【参考答案】 (1)错误:double fun(char *s,char *t) 正确:char *fun(char *s,char *t) (2)错误:(*ss)++;            正确: ss++; (3)错误:(*tt)++P;            正确: tt++; 下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的 后续字母(如Z转化为A,z转化为a),其他字符不变。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  void fun(char *s) /*************found**************/ { while(*s!= '@')   { if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z')       {if(*s=='Z')  *s='A';         else if(*s=='z')  *s='a';         else  *s+=1;       } /*************found**************/     (*s)++;   } } void main() { char s[80];   system("CLS");   printf("\n Enter a string with length<80:\n\n");   gets (s);   printf("\n The string:\n\n");   puts(s);   fun(s);   printf("\n\n The Cords :\n\n");   puts(s); } 【参考答案】 (1)错误:while(*s!='@')                正确:while(*s) (2)错误:(*s)++;                正确:s++; 下列给定程序的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成 大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。例如,若输入I am astudent to take the examination,则应输出I Am A Student To Take The Examination。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include  #include  #include  #include  #include  #include  /*************found**************/ void upfst(char p) {   int k=0;   for ( ;*p;p++)     if (k)         {         if (*p==' ')              k=0;         }     else         {             if (*p!=' ')              {                 k=1;                 *p=toupper(*p);             }         } } void main() {     char  chrstr[81];     system("CLS");        printf("\nPlease enter an English text line: ");     gets(chrstr);     printf("\nBofore changing:\n  %s",chrstr);     upfst(chrstr);     printf("\nAfter changing:\n  %s\n",chrstr); } 【参考答案】 (1)错误:void upfst(char p)            正确:void upfst(char *p) 下列给定程序的功能是:建立一个带头节点的单向链表,并用随机函数为各节点数 据域赋值。函数fun的作用是求出单向链表节点(不包括头节点)数据域中的最大值 ,并且作为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include typedef struct aa { int data;   struct aa *next; } NODE; /*************found**************/ fun (NODE *h) { int max=-1;   NODE *p;   p=h;   while(p)       { if(p->data>max)             max=p->data; /*************found**************/           p=h->next       }   return max; } outresult(int s, FILE *pf) { fprintf(pf, "\nThe max in link :%d\n",s); } NODE *creatlink(int n, int m) { NODE *h,*p,*s;   int i;   h=p=(NODE *)malloc(sizeof(NODE));   h->data=9999;   for(i=1;i<=n;i++)     { s=(NODE *) malloc(sizeof(NODE));       s->data=rand()%m; s->next=p->next;       p->next=s;  p=p->next;     }   p->next=NULL;   return h; } outlink(NODE *h,FILE *pf) { NODE  *p;   p=h->next;   fprintf(pf, "\n The LIST :\n\n HEAD");   while(p)     { fprintf(pf, "->%d",p->data);   p=p->next;}   fprintf(pf, "\n"); } main() { NODE *head; int m;   system("CLS");   head=creatlink(12,100);   outlink(head,stdout);   m=fun(head);   printf("\nThe RESULT :\n");   outresult(m,stdout); } 【参考答案】 (1)错误:p=h;            正确:p=h->next; (2)错误:p=h->next;            正确:p=p->next; 3                                                              仅供参考
本文档为【2005~2011年全国计算机二级C语言机试题库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_036899
暂无简介~
格式:doc
大小:542KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-20
浏览量:9