《C++改错和填空题题库.doc》由会员分享,可在线阅读,更多相关《C++改错和填空题题库.doc(246页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+改错和填空题题库C+改错和填空题题库一、程序改错 第1题/*-【程序改错】-题目:用顺序交换法将12个整数中处于奇数位的数从大到小排序。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main()/*FOUND*/ int m12,i,j;/*FOUND*/ for(i=1;imi; for(i=0;i11;i+=2)/*
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+) 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
3、,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+) coutai; 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个数排列成降序,并计算输入
4、序列中第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,33,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).
5、while(m=0) 3). ak+1=ak; 4). ak+1=a0;第4题 /*-【程序改错】-题目:将十进制正整数n转化为二进制数输出-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int 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为降序
6、数,如54321)-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int m100,n,i,j; cinn; for(i=0;n!=0;i+) /*FOUND*/ mi=n/10;/*FOUND*/ 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题 /*-【程序改错】-题目:用二分法在
7、一组按升序的数中找出指定的数K.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a20,n,find,k,m,i,j; cinn; for(i=0;iai; cink; find=0; 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题 /
8、*-【程序改错】-题目:打印扬辉三角形 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;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-
9、1j; 3). for(j=0;j=i;j+) 4). coutaij ;第8题 /*-【程序改错】-题目:用”筛选法”判断并输出1-100之间的素数.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() 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)
10、. j=2; 2). ai*j=0; 或 aj*i=0; 3). if(ai=1) 或 if(ai) 4). couti;第9题/*-【程序改错】-题目:下面函数chnum将一个整数字符串转换为一个整数。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#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*/
11、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=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
12、 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以内的同时满足如下条件的数 个位数字与十位数字之和除以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*
13、/ 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). int 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之间同时被
14、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,
15、5000之间打印出各位数字和为5的所有整数的个数.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() int a,b,c,d,k,i; k=0; for(i=104;i=500;i+) /*FOUND*/ a=i%100; b=(i-a*100)/10; c=i-a*100-b*10; /*FOUND*/ if(a+b+c5) k+; for(i=1000;i=5000;i+) a=i/1000; b=(i-a*1000)/100; /*FOUND*/ c=(i-A*1000-b*100)/100; d=i-a*1000-b*100-c*10
16、;/*FOUND*/ if(a+b+c=5) k+; coutk;答案: 1). a=i/100; 2). if(a+b+c=5) k+; 3). c=(i-a*1000-b*100)/10; 4). if(a+b+c+d=5) k+;第14题 /*-【程序改错】-题目: 下列程序是求某班级的最高成绩、最低成绩和平均成绩 的程序,输入-1表示结束。-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main() float cj,sum,max,min,ave; int n; /*FOUND*/ n=0 cincj; /*FOUND*/ sum=0;/*F
17、OUND*/ min=max=0; cincj;/*FOUND*/ while(cj!=0) n+; sum+=cj; if(cjmax) max=cj; if(cjcj; ave=sum/n; coutavemax=0)第15题/*-【程序改错】-题目:计算T=1-1/2+2/3-3/4+-29/30-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main()/*FOUND*/ int t1,f,k; float t=1;/*FOUND*/ f=1;/*FOUND*/ for(k=1;k=30;k+) /*FOUND*/ t1=(k-1)/k; t+
18、=t1*f; f=-f; coutt;答案: 1). int f,k;float t1,t=1; 2). f=-1; 3). for(k=2;k=30;k+) 4). t1=(float)(k-1)/k; 或 t1=(k-1)/(float)k; 或 t1=1.0*(k-1)/k;第16题 /*-【程序改错】-题目:计算输出100-200之间素数的平方根之和-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include#includevoid main() float s,sn; int n,k,l; s=0;/*FOUND*/ for(n=100;n=199;n+=2) sn
19、=sqrt(n);/*FOUND*/ l=0;/*FOUND*/ for(k=2;k=n&l;k+) if(n%k=0)l=0;/*FOUND*/ if(l=0) s+=sn; couts;答案: 1). for(n=101;n=199;n+=2) 或 for(n=100;n=199;n+=1) 或 for(n=100;n=200;n+=1) 或 for(n=101;n=200;n+=2) 2). l=1 3). for(k=2;kn&l=0;k+) 4). if(l!=0)第17题/*-【程序改错】-题目:计算并输出100200之间的所有素数的平方根之和.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include #include void main(