您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C++程序设计课后习题答案1-4章
C++程序设计课后习题答案第一章C++基础知识习题1.1判断下列标识符的合法性。sinbook5arry_nameExample2.1main$1class_cppa3x*ymyname答:合法的:sinbook_namemainclass_cppa3非法的:5arryExample2.1$1x*ymyname1.2假定有下列变量:inta=3,b=5,c=0;floatx=2.5,y=8.2,z=1.4;charch1=’a’,ch2=’5’,ch3=’0’,ch4;求下列表达式的值,以及运算后表达式所涉及的各变量的值。x+(int)y%ax=z*b++,b=b*x,b++ch4=ch3-ch2+ch1int(y/z)+(int)y/(int)z!(ab)&&c&&(x*=y)&&b++ch3||(b+=a*c)||c++z=(a2)/(b1)答:x+(int)y%a值为:4.5x=z*b++,b=b*x,b++值为:42,x为7,b为43ch4=ch3-ch2+ch1值为:’\\’int(y/z)+(int)y/(int)z值为:13!(ab)&&c&&(x*=y)&&b++值为:0,b为5注:只要出现一个false右边的不再做。ch3||(b+=a*c)||c++值为:1,c为0注:只要出现一个true,右边不再做。z=(a2)/(b1)值为:61.3判断下列哪些是常量,哪些是变量。Chinaconstintn=10;intm=5;'a'charch='a'intarray[5]={1,2,3,4,5};chars[]=Hello;答:China文字常量constintn=10;常变量intm=5;变量'a'文字常量charch='a'变量intarray[5]={1,2,3,4,5};变量chars[]=Hello;变量1.4将下列算式或叙述用C++表达式描述。(1)(2)(x+y)/((x-y)*ay)(3)位于原点为圆心,a,b为半径的圆环中的点坐标。(4)。(5)并且字符ch不为'\0'。答:pi/2+sqrt(asin(x)*asin(x)+c*c)(x+y)/((x-y)*pow(a,y))((x*x+y*y)=a*a)&&((x*x+y*y)=b*b)(a!=b)&&(a!=c)&&(b!=c)(k=20)&&(ch!='\0')1.6设有语句:inta,b;floatx,y;charch1,ch2,ch3;cinabxych1;ch2=cin.get();cinch3;若从键盘输入:321.87abc执行后各变量取值如何?注意abc三字符两两间有空格。答:a是3,b是2,x是1.8,y是7,ch1是’a’,ch2是空格,ch3是’b’。1.7设有语句:inta,b,c,d;cinoctabhexcdecd;若从键盘输入:23232323执行后各变量的值用十进制表示各是多少?答:a:19,b:19,c:35,d:231.8对于习题1.7,若执行:couta′\t′hexb′\t′octcendl;显示结果是什么?答:190x13043当前位置:学习资源下载课后习题答案第二章基本控制结构程序设计习题一.基本概念与基础知识自测题2.1程序阅读题2.1.1设有说明:inta=3,b=100;下面的循环语句执行(1)次,执行后a、b的值分别为(2)、(3)。while(b/a5){if(b-a25)a++;elseb/=a;}解答:本题检查学生整除的概念。跟踪:abb/a循环次数b-a310033197410025296510020395……………15100613851610061484171005停(1)14(2)17(3)1002.1.2设有说明:intx,y,n,k;下面程序段的功能是备选答案中的(1),当n=10,x=10打印结果是(2)。cinxn;k=0;do{x/=2;k++;}while(kn);y=1+x;k=0;do{y=y*y;k++;}while(kn);coutyendl;备选答案:A.B.C.D.解答:第一个循环使x成为:;y成为:;第二个循环使y成为:;(1)B考虑整除,当x连除4次2以后即为0,所以:为0(2)12.1.3请看如下程序段:if(num==1)cout”Alpha”;elseif(num==2)cout”Bata”;elseif(num==3)cout”Gamma”;elsecout”Delta”;当num的值分别为1、2、3时,上面程序段的输出分别为(1)、(2)、(3)。解答:检查条件语句与字符串输出概念:(1)Alpha(2)Bata(3)Gamma2.1.4执行下面程序段后,m和k的值分别为(1)、(2)。intm,k;for(k=1,m=0;k=50;k++){if(m=10)break;if(m%2==0){m+=5;continue;}m-=3;}解答:注意continue语句的使用初值m=0k=1第1次循环后m=5k=2第2次循环后m=2k=3第3次循环后m=7k=4第4次循环后m=4k=5第5次循环后m=9k=6第6次循环后m=6k=7第7次循环后m=11k=8第8次循环m=11结束k=8,k++未做(1)11(2)8二.编程与综合练习题2.2有一个函数:编写程序,输入x,输出y。解:#includeiostreamusingnamespacestd;intmain(){doublex,y;cout输入x=;cinx;if(x1)y=x;elseif(x10)y=2*x-1;elsey=3*x-11;couty=yendl;return0;}2.3设计程序将输入的百分制成绩转换为五分制输出,90分以上为5分,8089分为4分,7079分为3分,6069分为2分,60分以下为1分。解:10分一档用10进行整除获得,转换用开关语句实行。#includeiostreamusingnamespacestd;intmain(){intmark,result;//mark是百分制成绩,result是5分制cout请输入百分制成绩:endl;cinmark;if(mark0){cout缺考!endl;return0;}switch(mark/10){case9:case10:result=5;cout输出五分制成绩:resultendl;break;case8:result=4;cout输出五分制成绩:resultendl;break;case7:result=3;cout输出五分制成绩:resultendl;break;case6:result=2;cout输出五分制成绩:resultendl;break;case5:case4:case3:case2:case1:case0:result=1;cout输出五分制成绩:resultendl;break;default:cout输入错误!endl;}return0;}2.4编程计算个人所得税。个人所得税率表如下:月收入1200元起征,超过起征点500元以内部分税率5%,超过500元到2,000元部分税率10%,超过2,000元到5,000元部分税率15%,超过5,000元到20,000元部分税率20%,超过20,000元到40,000元部分税率25%,超过40,000元到60,000元部分税率30%,超过60,000元到80,000元部分税率35%,超过80,000元到100,000元部分税率40%,超过100,000元部分税率45%。解:应该从最高税率段开始计算,分段叠加。先算两万元以上各段,每两万为一档,采用switch语句,注意没有使用break语句。后面各低收入段,用if语句,也没有使用else,这两种方法是对应的。第二要注意计算的入口处,收入减去该段的下限,进行计算,以后各段都是完整的段,计算十分简单。#includeiostreamusingnamespacestd;intmain(){doubleincome,tax=0;intk;cout请输入个人月收入:endl;cinincome;if(income=1200){cout免征个人所得税endl;return0;}elseincome-=1200;if(income20000){k=income/20000;switch(k){default:tax+=(income-100000)*0.45;income=100000;case4:tax+=(income-80000)*0.40;income=80000;case3:tax+=(income-60000)*0.35;income=60000;case2:tax+=(income-40000)*0.30;income=40000;case1:tax+=(income-20000)*0.25;income=20000;}}if(income5000){tax+=(income-5000)*0.20;income=5000;}if(income2000){tax+=(income-2000)*0.15;income=2000;}if(income500){tax+=(income-500)*0.10;income=500;}tax+=income*0.05;cout应征所得税:taxendl;return0;}2.5编程打印如下图形:*************************解:难点在三角形左边的空格的控制,嵌套一个循环语句完成此任务。#includeiostreamusingnamespacestd;intmain(){inti,j;for(i=1;i=4;i++){for(j=4-i;j0;j--)cout;//三角形每行前部的空格for(j=1;j=2*i-1;j++)cout*;coutendl;}for(i=1;i=3;i++)cout***\n;return0;}2.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;}2.7输入n,求1!+2!+3!+…+n!解:通常求和作为外循环,阶乘作为内循环。这里考虑到:n!=n*(n-1)!,利用递推法运算速度大大提高,同时两者可合并为一个循环。本程序考虑了输入的健壮性。#includeiostream#includecstdlibusingnamespacestd;intmain(){intn,i,jch=1;doubleresult=0;//result是结果cout请输入正整数
本文标题:C++程序设计课后习题答案1-4章
链接地址:https://www.777doc.com/doc-2904304 .html