void fun(int all, int n) 1,J, L, P, for (=0: j<n-1; j++) for(i=j, i, n; 1++) 改为j+1 if(a[i]<ap) 孝水水*客*水布水*水亦**客*客水本本客水本客水客水 改为i t=]; a[p]=all; all=t maino int a[N]={96,8,3,-1},m=5 printi("排序前的数据:") for(i=0; i<m, i++) printf("%d", a[)) printf("n"); am printi("排序后的数据:") for(i=0; i<m; i++) printf("%d", a[i): printf("n"); 9、改错8(2004.7.27) 下列给定程序中,函数fun的功能是:在字符串str中找出ASCⅡ码值最大的字符,将其放在第一个位置 上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入: ABCDeFGH,调用后 字符串中的内容为 eABCDFGH。 请改正程序中的错误,使程序能得出正确的结果 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构 试题程序 #include <stdio .h> fun(char*p) char max, *q; int i=0 max=pi while(p[il=0) t if(max<pD) max=pi 改为q=p+i, while(q<p qp改为q>p 第6页共16页
第 6 页 共 16 页 void fun(int a[],int n) { int i,j,t,p; for (j=0;j<n-1;j++) *************************** {p=j ——加上“;” for (i=j;i,n;i++) ——j 改为 j+1 if (a[i]<a[p]) ********************************* p=j; ——j 改为 i t=a[p];a[p]=a[j];a[j]=t; } } main() { int a[N]={9,6,8,3,-1},i,m=5; printf("排序前的数据:"); for (i=0;i<m;i++) printf("%d",a[i]);printf("\n"); fun(a,m); printf("排序后的数据:"); for (i=0;i<m;i++) printf("%d",a[i]);printf("\n"); } 9、 改错 8(2004.7.27) 下列给定程序中,函数 fun 的功能是:在字符串 str 中找出 ASCII 码值最大的字符,将其放在第一个位置 上;并将该字符前的原字符向后顺序移动。例如,调用 fun 函数之前给字符串输入:ABCDeFGH,调用后 字符串中的内容为 eABCDFGH。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> fun(char *p) { char max,*q;int i=0; max=p[i]; while(p[i]!=0) { if(max<p[i]) {max=p[i]; ******************************* p=q+i; ——改为 q=p+i; } i++; } ****************************** while(q<p) ——q<p 改为 q>p
*q=(q-1), pIO]=max maino (char str[80]: printf("Enter a string: " ) gets( Str); printf("\n The original string: ) puts(Str); printf("\n The string agter moving: ) puts(str); ptintf("nn") 10、改错9(2004.7.27) 下列给定程序中,函数fumn的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数 值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩: 80.5607290.59851.58864 则低于平均分的学生人数为4(平均分为:75.5625)。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <conio h> #include <stdio. h> #define n20 int fun(float *s, int n, float*aver) f float ave, t=0.0 int count=0, k, i for(k=0; k<n; k++) 客水客水*水水**涂水容水*客水*客水*客*称水*亦水 ave-un for(=0;i<n;i++) if(s[]<ave)count++; 去掉& return count: i float s(30), aver 第7页共16页
第 7 页 共 16 页 {*q=*(q-1); q--; } p[0]=max; } main() {char str[80]; printf("Enter a string:");gets(Str); printf("\nThe original string: ");puts(Str); fun(str); printf("\nThe string agter moving:");puts(str);ptintf("\n\n"); } 10、 改错 9(2004.7.27) 下列给定程序中,函数 fun 的功能是:从 n 个学生的成绩中统计出低于平均分的学生人数,此人数由函数 值返回,平均分存放在形参 aver 所指的存储单元中。例如,若输入 8 名学生的成绩: 80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为 4(平均分为:75.5625)。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include <conio.h> #include <stdio.h> #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<n;k++) ******************************* t=s[k]; ——t+=s[k]; ave=t/n; for (i=0;i<n;i++) if (s[i]<ave) count++; ****************************** *aver=&ave; ——去掉& return count; } main() {float s[30],aver; int m,i;