126练习三一、单项选择题(1)C++语言中的三种基本流程控制结构是()A)顺序结构、分支结构和循环结构B)递归结构、循环结构和转移结构C)嵌套结构、递归结构和顺序结构D)循环结构、转移结构和顺序结构(2)多重if~else语句嵌套使用时,寻找与else配对的if的方法是()A)缩进位置相同的ifB)其上最近的ifC)其上最近未匹配的ifD)下面最近的if(3)下面程序的运行结果是()voidmain(void){intx=1,y=1;switch(x+y){case1:printf(“*\n”);case2:printf(“*\n”);case3:printf(“**\n”);}}A)*B)****C)*D)***(4)阅读下面程序,则正确的输出结果为()voidmain(void){inta=5;if(a--5)printf(“%d\n”,a);elseprintf(“%d\n”,a);}A)2B)3C)4D)5(5)在C++中,while和do~while的主要区别是()A)while的循环控制条件比do~while循环控制条件严格B)do~while的循环体至少无条件执行一次C)do~while允许从外部转到循环体内部D)do~while的循环体不能是复合语句127(6)下面程序执行时,while循环体的循环次数是()inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}A)1B)10C)6D)死循环,不能确定循环次数(7)下面的循环结构中,哪一个不是无限循环()A)for(i=1;;i++)printf(“%d”,i--);B)i=1;while(i--)printf(“%d”,i++);C)for(i=0;i;i++)printf(“%d”,i);D)i=1;do{printf(“%d”,i);i++;}while(--i);(8)以下程序段,不能用来求8!(结果存放在变量a中)的是()A)a=2;for(k=8;k3;k--)a=a*k;B)a=1;k=8;do{a=a*k--;}while(k1)C)a=1;k=1;while(k9)a=a*k++;D)a=1;for(k=1;k9;k++)a=a*k;(9)下面程序的运行结果是()voidmain(void){inta,b;for(a=1,b=1;a=100;a++){if(b=10)break;if(b%3==1){b+=3;continue;}}printf(“%d\n”,a);}A)101B)4C)5D)6(10)下面程序的运行结果是()voidmain(void){inti,j,x=0;for(i=0;i2;i++)128{x++;for(j=0;j=3;j++){if(j%2)continue;x++;}x++;}printf(“x=%d\n”,x);}A)x=4B)x=6C)x=8D)x=12二、程序填空题(1)下面程序的功能是求1000以内的完全数,请在【】内填空。(说明:一个数如果正好等于它的因子之和(除自身外),则呈该数为完全数,如28=1+2+4+7+14为完全数)voidmain(void){inta,k,sum;for(a=1;a=1000;a++){for(【1】;k=a/2;k++)if(!(a%k))【2】if(【3】)printf(“%4d”,a);}}(2)下面程序的功能是计算一元二次方程(02cbxax)的根,请在【】内填入正确的程序代码。#includeiostream#includemath.husingnamespacestd;voidmain(void){doublea,b,c,x1,x2;//a,b,c三个变量为一元二次方程的系数cout\nPleaseInput3Coefficientsx,y,z=;cinabc;if(【4】){cout\nThisisaFantasticalityEquation!;//退化方程if(【5】)129{if(c!=0)cout\nThisisaninsignificanceequation!;//无意义方程}else{x1=-c/b;//求出唯一根cout\nTheEquationhasonlyrootx=x1endl;}}else{x2=b*b-4*a*c;//先求出判别式的值存入x2if(【6】){//存在两个不同的实根coutTheEquationhavetworootsforrealnumber.\n;x1=【7】x2=【8】coutx1=x1endl;coutx2=x2endl;}else{coutTheEquationhavetworootsforimaginarynumber.\n;x1=-b/2/a;//求实部x2=sqrt(-x2)/2/a;//求虚部,右边的x2存的还是判别式的值if(x20)x2=-x2;coutx1=x1+x2iendl;coutx2=x1-x2iendl;}}}三、编程题(1)编程计算2+4+6+…+98+100的值。(2)编写程序,要求输入年、月、日,计算当年已过的天数。如输入:201211,则输出:2012年已过1天。(3)编写程序求)(......anaaaaaaaaaSn个之值,其中a表示一个数字,n表示其位数,例如:3+33+333+3333+33333(此时n为5)n由键盘输入。