1.概念填空题1.1任何算法的描述都可以分解为顺序结构、分支结构和循环结构。顺序结构的特点是各块按照书写次序依次执行。分支结构的特点是根据条件判断选择执行路径。循环结构用于实现重复性动作。根据算法的有穷性,循环必须在一定条件下进行,无条件必然会导致死循环。1.2switch语句执行流程是:①求表达式的值,其中表达式的值只能是整型、字符型、布尔型或枚举型等类型,而不能取实型这样的连续值;②在常量表达式中找与之相等的分支作为执行入口,并从该分支的语句序列开始执行下去,直到遇到break或switch的结束括号“}”为止;③当表达式的值与所有常量表达式的值均不相等时,若有default分支,则执行其语句序列;④若没有该分支,则结束switch语句,继续后续语句的执行;1.3c++中提供了若干转向语句,可以改变程序原来的执行顺序。break语句只能用在switch语句和循环语句中,从该处跳出switch语句或循环语句,转去执行switch语句或循环语句之后的语句。continue语句只能用在循环中,程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始新的循环。return语句用在函数中,用来返回到函数调用处。1.4C++中的文件有两个相互联系的概念:内部文件和外部文件。文件通常是指磁盘文件,这里称为外部文件;而在程序中运行的文件则称为内部文件,更正式的名称是文件流对象。程序中操作的是内部文件,最后保存的是外部文件。2.简答题2.1C++中有什么形式的选择控制语句?归纳它们的语法形式、应用场合。根据一个实际问题使用不同的条件语句编程。2.2什么叫循环控制?归纳比较C++中各种循环控制语句的语法、循环条件和循环结束条件的表示形式及执行流程,比较其异同点。2.3根据一个实际问题,用不同的循环语句编程,分析其优缺点。3.选择题3.1对if语句中的表达式的类型,下面描述正确的是(D)。A.必须是关系表达式B.必须是关系表达式或逻辑表达式C.必须是关系表达式或算术表达式D.可以是任意表达式3.2与for(表达式1;表达式2;表达式3)功能相同的语句为(A)。A.表达式1;B.表达式1;while(表达式2){while(表达式2){循环体;表达式3;表达式3;}循环体;}C.表达式1;D.do{do{表达式1;循环体;循环体;表达式3;}while(表达式2);表达式3;}while(表达式2)3.3以下程序输出结果为(A)。voidmain(){intx(1),a(0),b(0);switch(x){case0:b++;case1:a++;case2:a++;b++;}cout”a=”a”,b=”b;}A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=23.4已知inti=0,x=0;下面while语句执行时的循环次数为(D)。while(!x&&i3){x++;i++;}A.4B.3C.2D.13.5以下形成死循环的程序段是(B)。A.for(intx=0;x3;){x++;};B.intk=0;do{++k;}while(k=0);C.inta=5;while(a){a--;};D.inti=3;for(;i;i--);3.6已知有职工情况结构变量emp定义为;strnctEmployee{charname[20];longcode;struct{intyear;intmonth;intday;}birth;}emp;下列对birth的正确赋值方法是(D)。A.year=1980;month=5;day=1;B.birth.year=1980;birth.month=5;birthday=1;C.emp.year=1980;emp.month=5;emp.day=1;D.emp.birth.year=1980;emp.birth.month=5;emp.birth.day=l;3.7下面的程序段循环执行了(A)次。intk=10;while(k=3)k=k-1;A.死循环B.0次C.3次D.7次3.8语句while(!E)中的表达式!E等价于(A)。A.E==0B.E!=1C.E!=0D.E==14.写出下列程序运行结果4.1#includeiostream.hvoidmain(){inta,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;coutdendl;}204.2#includeiostream.hvoidmain(){inta=0,b=1:switch(a){case0:switch(b){case0:cout”a=”a”b=”bendl;break;case1:cout”a=”a”b=”bendl;break;}case1:a++;b++;couta=“a”b=”bendl;}}a=0b=1a=1b=24.3#includeiostream.hvoidmain(){inti=1;while(i=10)if(++i%3!=1)continue;elsecoutiendl;}47104.4#includeiostream.hvoidmain(){inti,j,x=0;for(i=0;i=3;i++){x++;for(j=0;j=3;j++){if(j%2)continue;x++;}x++;}cout”x=”xendl;}x=165.编程题5.1求100~200之间不能被3整除也不能被7整除的数。#includeiostreamusingnamespacestd;intmain(){inti;for(i=100;i=200;i++)if(i%3&&i%7)couti'\t';return0;}5.2输入一元二次方程的系数,求方程的解。5.3编写函数使用循环语句分别求两个数的最大公约数与最小公倍数(两个数的最大公约数一定小于或等于较小的一个数,但大于等于1。两个数的最小公倍数一定大于等于较大的一个数,但小于等于两个数的积)。#includeiostreamusingnamespacestd;intmain(){inta,b,i;intmax,min;cinab;min=ab?a:b;max=ab?a:b;for(i=min;i=1;i--)//求最大公约数if(a%i==0&&b%i==0){couti'\t';break;}for(i=max;i=a*b;i++)//求最小公倍数if(i%a==0&&i%b==0){couti'\t';break;}return0;}5.4从键盘输入一个整数,判断该数是否为回文数。所谓的回文数就是从左到右读与从右向左读都是一样的数。例如7887、23432是回文数。#includeiostreamusingnamespacestd;intmain(){inta,b;cina;b=0;for(;a;){b=b*10+a%10;a/=10;}coutbendl;return0;}5.5编写一程序,按下列公式求,精确到最后一项绝对值小于10-6。71513114=121111)(inii#includeiostreamusingnamespacestd;intmain(){doubles=0,i=1;intp=1;do{s=s+p*1/i;i+=2;p*=-1;}while(1/i=1e-6);coutsendl;return0;}5.6编程输出如下图形,中间一行英文字母由键盘输入得到。ABBBCCCCCDDDDDDDCCCCCBBBA解法一#includeiostreamusingnamespacestd;intmain(){charin;inti,j;do{cout输入一个字母:;cinin;if((in=97)&&(in=122))in-=32;//小写改大写}while((in65)||(in90));intline=in-'A';for(i=0;i=line;i++){//上三角for(j=line-i;j0;j--)cout;//前方空格for(j=1;j=2*i+1;j++)cout''char(i+'A');coutendl;}for(i=line;i0;i--){//下三角(少一行)for(j=0;j=line-i;j++)cout;for(j=1;j=2*i-1;j++)cout''char(i-1+'A');coutendl;}return0;}解法二#includeiostreamusingnamespacestd;voidmain(){charc;inti,j,k,n,&p=i;cinc;//输入'A'~'Z'等符号n=c-'A';for(i=-n;i=n;i++){for(j=0;jabs(i);j++)cout;k=n-abs(i);for(j=0;j2*k+1;j++)coutchar('A'+k)'';coutendl;}}5.7假定邮寄包裹的计费标准如下表,输入包裹重量以及邮寄距离,计算出邮资。重量(克)邮资(元/件)1530456075及以上591214(每满1000公里加收1元)15(每满1000公里加收1元)*重量在档次之间按高档靠#includeiostreamusingnamespacestd;intmain(){ints,l,w;//l表示距离,w表示重量cinlw;if(w=15)s=5;elseif(w=30)s=9;elseif(w=45)s=12;elseif(w=60)s=14+l/1000;elses=15+l/1000;coutsendl;return0;}5.8从键盘输入一组非0整数,以输入0为结束标志,求这组整数的平均值,并统计其中正数和负数的个数。#includeiostreamusingnamespacestd;intmain(){ints=0,neg=0,plu=0;intn;cinn;while(n!=0){s+=n;if(n0)plu++;elseneg++;cinn;};cout平均值=s/(neg+plu)endl;cout正数=plu个endl;cout负数=neg个endl;return0;}5.9编程求1000之内的所有完全数。完全数指的是一个数恰好等于它的所有因子的和。例如6=1+2+3,6就是一个完全数。#includeiostreamusingnamespacestd;intmain(){inti,a,sum_yz;//sum_yz是a的因子和for(a=1;a1000;a++){sum_yz=0;for(i=1;ia;i++)if(a%i==0)sum_yz+=i;//求因子运算未改变循环控制变量a的值,否则要用另一个变量b来代替a来参加运算if(a==sum_yz)coutaendl;}return0;}5.10将100元换成10元、5元和1元的组合,共有多少种组合方法?#includeiostreamusingnamespacestd;intmain(){inti,j,k,count=0;for(i=0;i=10;i++)//i是10元张数,j是5元张数,k是1元张数for(j=0;j=20;j++){k=100-10*i-5*j;if(k=0){couti'\t'j'\t'kendl;count++;}}coutcountendl;return0;}5.11有两队选手,每队出5人进行一对一的比赛,甲队为A