1、C+改错和填空题题库一、程序改错 第1题/*-【程序改错】-题目:用顺序交换法将12个整数中处于奇数位的数从大到小排序。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main()/*FOUND*/ int m12,i,j;/*FOUND*/ for(i=1;imi; for(i=0;i11;i+=2)/*FOUND*/ for(j=i+1;imj) k=mi; mi=mj; mj=k; for(i=0;i12;i+) coutmi;答案: 1). int m12,i,j,k; 2). for(i=0;i12;i+) 或 for(i=0;i=11;i+
2、) 3). for(j=i+2;j11;j+=2) 或 for(j=i+2;jmi) 或 if(mimj)第2题 /*-【程序改错】-题目:在一个具有n个数的数组中查找并删除一个数K。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#define n 10#include void main()/*FOUND*/ int an,n,k,i,j;/*FOUND*/ for(i=1;iai; cink;/*FOUND*/ for(i=1;i=n|ai!=k;i+); if(in) for(j=i;j=n-1;j+) aj=aj+1;/*FOUND*/ for(i=0;in;i+) c
3、outai; else coutnot found; for(i=0;in;i+) coutai; 答案: 1). int an,k,i,j; 2). for(i=0;in;i+) 3). for(i=0;in&ai!=k;i+); 4). for(i=0;in-1;i+)第3题 /*-【程序改错】-题目:利用插入法将20个数排列成降序,并计算输入序列中第10个数到第20个数的和.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main( ) float s,a21=1,3,5,7,9,2,4,6,8,10,13,65,76,34,23,15,64,3
4、3,234,66;/*FOUND*/ int i,j; for(j=2;j=0&aka0 ) /*FOUND*/ ak=ak+1; k-; /*FOUND*/ ak=a0; for(i=1;i=20;i+) coutai ; s=0.0; for(j=10;j=20;j+) s=s+aj; couts;答案: 1). int i,j,k; 2). while(m=0) 3). ak+1=ak; 4). ak+1=a0;第4题 /*-【程序改错】-题目:将十进制正整数n转化为二进制数输出-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int
5、 m50,m150,n,i,j,n1; cinn; i=0; while(n0) /*FOUND*/ n1=n%2;/*FOUND*/ m1i=n/2;/*FOUND*/ n1=n; i+; for(j=1;j=i;j+)/*FOUND*/ m1i+1-j=mj; for(j=1;j=i;j+) coutDI+1, 1=I=N,则D1D2DN为降序数,如54321)-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int m100,n,i,j; cinn; for(i=0;n!=0;i+) /*FOUND*/ mi=n/10;/*FOUND
6、*/ n=n%10; /*FOUND*/ for(j=0;ji&ajaj+1;j+);/*FOUND*/ if(j=i) coutyes; else coutno;答案: 1). mi=n%10; 2). n=n/10; 3). for(j=0;ji-1&ajaj+1;j+); 4). if(j=i-1)第6题 /*-【程序改错】-题目:用二分法在一组按升序的数中找出指定的数K.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a20,n,find,k,m,i,j; cinn; for(i=0;iai; cink; find=0;
7、i=0;j=n-1;/*FOUND*/ while(iam) j=m-1; else i=m+1; /*FOUND*/ if(find=1) coutfoundm; else coutno found;答案: 1). while(i=j&find=0) 2). find=1; 3). else if(kam) 4). if(find=1)第7题 /*-【程序改错】-题目:打印扬辉三角形 1 1 1 1 2 1 1 3 3 1 1 3 6 4 1-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a55,i,j; for(i=0;i5;
8、i+) /*FOUND*/ ai1=1; aii=1; for(j=1;j=i-1;j+)/*FOUND*/ aij=ai-1j-1+aij; for(i=0;i5;i+) /*FOUND*/ for(j=0;j5;j+)/*FOUND*/ coutaji ; coutendl; 答案: 1). ai0=1; 2). aij=ai-1j-1+ai-1j; 3). for(j=0;j=i;j+) 4). coutaij ;第8题 /*-【程序改错】-题目:用”筛选法”判断并输出1-100之间的素数.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main
9、() int a101,i,j; for(i=1;i=100;i+) ai=1; a1=0; for(i=2;i=50;i+) /*FOUND*/ j=1; while (i*j=100) /*FOUND*/ aij=0; j+; for(i=1;i=100;i+)/*FOUND*/ if(ai =1)/*FOUND*/ coutai;答案: 1). j=2; 2). ai*j=0; 或 aj*i=0; 3). if(ai=1) 或 if(ai) 4). couti;第9题/*-【程序改错】-题目:下面函数chnum将一个整数字符串转换为一个整数。-注意:不可以增加或删除程序行,也不可以更改程
10、序的结构。-*/#include#include int chnum (char *str) int i,j,k,h,len,L,num=0; /*FOUND*/ int L=n=strlen(str);/*FOUND*/ for(i=0;iL;i+) ; k=1; j=len=len-1; coutlen0) k=k*10; /*FOUND*/ j+; /*FOUND*/ h=*(str+4-len)-0; num=num+h*k; return num; void main() int t;char *a=1234; t=chnum(a); couttendl;答案: 1). L=len=
11、strlen(str); 2). for(i=0;iL;i+) 3). j-; 或 -j; 或 j=j-1; 或 j-=1; 4). h=*(str+i)-0;第10题/*-【程序改错】-题目:将1到255之间的任意一个十进制转换成二进制.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a8,k,m,n,i;/*FOUND*/ cin=1;i+) coutn; 2). k+; 3). n=m; 4). for(i=k-1;i=0;i-)第11题 /*-【程序改错】-题目:打印出1000以内的同时满足如下条件的数 个位数字与十位数字
12、之和除以10所得的余数等于百位数字-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include #include void main() /*FOUND*/ int a,b,c,d,i,j; for (i=3;i1000;i+)/*FOUND*/ for (j=2;flag=1;j=sqrt(i)&flag;j+)/*FOUND*/ if(i%j=1) flag=0;/*FOUND*/ if(flag=0) a=i/100; b=(i-a*100)/10; c=i-a*100-b*10; d=b+c-(c+b)/10*10; if (d=a) couti; 答案: 1). i
13、nt a,b,c,d,i,j,flag; 2). for (j=2,flag=1;j=sqrt(i)&flag;j+) 3). if(i%j=0) flag=0; 或 if(!i%j=0) flag=0; 4). if(flag=1) 或 if(flag) 或 if(flag !=0)第12题 /*-【程序改错】-题目:统计100-300之间同时被3,7整除的数的个数,输出这些数 的个数及它们的平方和434385.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() float ns;/*FOUND*/ int k; n=0;/*FOUND*/ ns=1; for(k=100;k=300;k+) /*FOUND*/ n37=7%k+3%k;/*FOUND*/ if(n37=0) n+; ns=ns+k*k; coutnns;答案: 1). int n37,k,n; 2). ns=0; 3). n37=k%7+k%3; 4). if(n37=0)第13题/*-【程序改错】-题目:在100,5000之间打印出各位数字和为5的所有整数的个数.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a,b,c,d,k,i; k=0; for(i=104;i=50
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1