南开二级C语言上机100题 1、改错题1 下列给定程序的功能是:读入一个整数(2 #include 第1页共16页
第 1 页 共 16 页 南开二级 C 语言上机 100 题 1、 改错题 1 下列给定程序的功能是:读入一个整数(2 #include ******************************* IsPrime(int n); ——————去掉分号 {int i,m; m=1; for ( i=2; i #include #include
int fun(int score[, int m, int below) -int ik=o: float aver=0 for(i=0; #include ****水*称****客水**客水*称*客客水称*水**水* void,fun(char*p,char*q, char *c)——去分号 fint k=1; 1改为0 while( pl=* q) !=改为 {if(°p<*q)c[k=*q; 小于号改为小于等于 else ck]=*p f(p)p++ k++ 第2页共16页
第 2 页 共 16 页 int fun (int score[],int m, int below[]) { ——————int i,k=0;float aver=0; for(i=0;i #include **************************************** void; fun(char *p,char *q,char *c)——去分号 *************************************** {int k=1; ——1 改为 0 *************************************** while(*p!=*q) —— != 改为 || *************************************** {if (*p<*q) c[k]=*q; ——小于号改为小于等于 else c[k]=*p; if (*p) p++; if (*q) q++; k++; } }
ichar a[10]="aBCDeFgh", b[10="ABcd" c[80]=() printf("The string a: ") puts(a); printf("The string b: ) puts(b); printf("The result: ) puts(c) 改错3 下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符 请改正程序中的错误,使程序能得出正确的结果 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include void fun(char *s) for(i=0j=0sl="03i++) if(s[>=0&&s可]9 s[=s[O] 丁改为j++ s[]="VO" ]=0 i char item[80]: clrscro printf("\nEnter a string: ) gets(item); printf("lnln The string is: \%sIn",item) fun(item) printf("\n\n The string of changing is: \%sn", item); 5、改错4 下列给定程序中,函数fun的功能是:分别铜级字符串中大写字母和小写字母的个数。例如,给字符串 输入: AAaabBbl23 Cccccd,则应该输出结果: upper=6ower=8。 请改正程序中的错误,使程序能得出正确的结果 注意,不要改多main函数,不得增行或删行,也不得更改程序的结构 试题程序 #include #include 第3页共16页
第 3 页 共 16 页 main() {char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={''}; fun(a,b,c); printf("The string a:"); puts(a); printf("The string b:"); puts(b); printf("The result:"); puts(c); } 4、 改错 3 下列给定程序中,函数 fun 的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符 串。 请改正程序中的错误,使程序能得出正确的结果。 注意,不要改多 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序 #include #include void fun (char *s) { int i,j; for (i=0,j=0;s[i]!='\0';i++) **************************************** if (s[i]>='0' && s[i] #include **********************************
void fun(char*s,inta,intb)-—a应为*ab应为+b if(*s>=A'&&*s=a&&*s #define n20 fun (int*a, int n, int x) Hint P=0, i; an=x while(xI=alpD) if(p==n)return-I ( for(i=p i<n; 1++) a[i+1=a[il a=a[计+1l; return n-1 maino { int WIN}={-3,0,1,5,79910,15,30,90},xni printf("The original data n") 第4页共16页
第 4 页 共 16 页 void fun (char *s,int a, int b) ————a 应为*a,b 应为*b { while(*s) { if (*s>='A' && *s='a' && *s #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<n;i++) ****************************************** a[i+1]=a[i]; ————a[i]=a[i+1]; return n-1; } } main() {int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i; n=10; printf("The original data:n");
for(i=0 i (int m) i double y=1. 0 Int I 客水客水*客水*水本涂水*水亦*称客幸客客水*水客水客水水容容幸*宗 for(i=2; i #define n 20 第5页共16页
第 5 页 共 16 页 for (i=0;i #include double fun (int m) { double y=1.0; int i; *************************************** for (i=2;i #define N 20
void fun(int all, int n) 1,J, L, P, for (=0: j fun(char*p) char max, *q; int i=0 max=pi while(p[il=0) t if(maxp 第6页共16页
第 6 页 共 16 页 void fun(int a[],int n) { int i,j,t,p; for (j=0;j fun(char *p) { char max,*q;int i=0; max=p[i]; while(p[i]!=0) { if(maxp
*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 #include #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 #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<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;
printf("nPlease enter m: " scanf("%d", &m) printf("nPlease enter %d mark: n", m); for(i=0; i int fun(char *s, char *tl, char*t2, char*w) int i; char*p, "r, a: while(本w) ip=w r=tI 孝水称水*客水本水凇水水*水本水*客*水本客本客水水容水水*亦水*水客水*水涂 while(r) r改为*r if(*r==*p){r++p++} else break f a=w; while(r)i a*r; a++; r++i 改为 while(*r){ a++:r++ w+=strlen(t2) else w++ maino 第8页共16页
第 8 页 共 16 页 clrscr(); printf("nPlease enter m:";scanf("%d",&m); printf("nPlease enter %d mark:n",m); for (i=0;i #include #include int fun (char *s, char *t1,char*t2,char*w) { int i; char *p,*r,*a; strcpy(w,s); while(*w) {p=w;r=t1; ******************************************** while(r) ——r 改为*r if(*r==*p) {r++;p++} else break; if(*r=='') {a=w;r=t2; ******************************************* while(*r){*a=*r;a++;r++} ——改为 while(*r){*a=*r;a++;r++;} w+=strlen(t2); } else w++; } } main() {
char s[ 100], tl[100), t2[100], w[1001 curser( printf("nPlease enter printf("nPlease enter string tl: ) scanf("%s" t1 ) printf("nPlease enter string t2: ) scanf("%s", t2) if (strlen(tl)=strlen(t2)) printf("nThe result is: %sn",w); else printf("Error strlen(tl )l=strlen(t2)n"), 12、改错11(2004.8.1 给定程序 MODIL.C中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出 主对角线元素之积 请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include funO int a[3]3],sum; Int I 客水容水*水*水客水客水客*客*客客客水水客客水客水*称 for(i=0;<3i++) scanf(m%dm i0D) scanf("%d",&a[); for(=0,i<3;,计++) sum=sum*aj][ printf(" Sum=%dn", sum); main o 13、改错12(8.1) 下列程序的功能是:读入一个整数k(2≤k≤10000打印它的所有质因子(即所有为素数的因子)。例如, 若输入整数:2310,则应输出:2、3、5、7、11 请改正程序中的语法错误,使程序能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 试题程序: 第9页共16页
第 9 页 共 16 页 char s[100],t1[100],t2[100],w[100]; clrscr(); printf("nPlease enter string S:");scanf("%s",s); printf("nPlease enter string t1:");scanf("%s",t1); printf("nPlease enter string t2:");scanf("%s",t2); if (strlen(t1)==strlen(t2)) { printf("nThe result is :%sn",w); } else printf("Error:strlen(t1)!=strlen(t2)n"); } 12、 改错 11(2004.8.1) 给定程序 MODI1.C 中,fun 函数的功能是:先从键盘上输入一个 3 行 3 列矩阵的各个元素的值,然后输出 主对角线元素之积。 请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include int fun () { int a [3] [3], sum; int i, j; *********************************** _____; ——sum = 1; for (i=0;i<3;i++) { for (j=0;j<3;j++) ***************************************** scanf (〃%d〃 a [i] [j]); ——scanf("%d", &a[i][j]); } for (i=0; i<3; i++) sum=sum*a[i] [i]; printf (〃Sum=%dn〃, sum); } main () { fun (); } 13、 改错 12(8.1) 下列程序的功能是:读入一个整数 k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如, 若输入整数:2310,则应输出:2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序:
#include h #include IsPrime(int n); IsPrime(int n) i int i,m; m=1; for(=2; i #include<stdio h double fun(int m) double t=1. 0- Int I for(i-2; i<=m; 1++) 本幸凇水水凇布*客称水市客本客水水水客水本水客水*水幸 t+=1.0/k; k改为i *涂水*水客客客客水客客水水水*水涂客*客水水*客孝 一填 return t; maino 第10页共16页
第 10 页 共 16 页 #include 〃conio.h〃 #include 〃stdio.h〃 ************************************************ IsPrime ( int n ); ——IsPrime(int n) { int i, m; m = 1; for ( i = 2; i #include double fun(int m) { double t=1.0; int i; for(i=2;i<=m;i++) ******************************************* t+=1.0/k; ——k 改为 i ********************************************* ____________; ——填 return t; } main() {