logo资料库

c++程序设计》第二版高等教育出版社课后习题答案.doc

第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
资料共59页,剩余部分请下载后查看
当前位置:学习资源下载>课后习题答案 第一章 C++基础知识习题 1.1 判断下列标识符的合法性。 5arry a3 book class_cpp sin $1 _name Example2.1 main x*y my name 答 : 合 法 的 : sin book _name main class_cpp a3 非法的:5arry 1.2假定有下列变量: Example2.1 $1 x*y my name int a=3,b=5,c=0; float x=2.5,y=8.2,z=1.4; char ch1=’a’,ch2=’5’,ch3=’0’,ch4; 求下列表达式的值,以及运算后表达式所涉及的各变量的值。 x+(int)y%a int(y/z)+(int)y/(int)z ch3||(b+=a*c)||c++ x=z*b++,b=b*x,b++ !(a>b)&&c&&(x*=y)&&b++ z=(a<<2)/(b>>1) ch4=ch3-ch2+ch1 答:x+(int)y%a 值为:4.5 x=z*b++,b=b*x,b++值为:42,x 为7,b 为43 ch4=ch3-ch2+ch1值为:’\\’ int(y/z)+(int)y/(int)z 值为:13 !(a>b)&&c&&(x*=y)&&b++值为:0,b 为5 注:只要出现一个 false 右边的不再做。 ch3||(b+=a*c)||c++值为:1,c 为0 注:只要出现一个 true,右边不再做。 z=(a<<2)/(b>>1)值为:6 1.3判断下列哪些是常量,哪些是变量。 "China" int array[5]={1,2,3,4,5}; const int n=10; int m=5; 'a' char ch='a' char s[]="Hello"; 答:"China" 文字常量 const int n=10;常变量 int m=5;变量 'a' 文字常量 char ch='a'变量 int array[5]={1,2,3,4,5};变量 char s[]="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设有语句: int a, b; float x,y; char ch1,ch2,ch3; cin>>a>>b>>x>>y>>ch1; ch2=cin.get(); cin>>ch3; 若从键盘输入: 3 2 1.8 7 a b c 执行后各变量取值如何?注意 abc 三字符两两间有空格。 答:a 是3,b 是2,x 是1.8,y 是7,ch1是’a’,ch2是空格,ch3是’b’。 1.7设有语句: int a,b,c,d; cin>>oct>>a>>b>>hex>>c>>dec>>d; 若从键盘输入: 23 23 执行后各变量的值用十进制表示各是多少? 23 23 答:a:19,b:19,c:35,d:23 1.8对于习题1.7,若执行: cout<课后习题答案 第二章基本控制结构程序设计习题 一.基本概念与基础知识自测题 2.1程序阅读题 2.1.1设有说明: int a=3, b=100; 下面的循环语句执行(1)次,执行后 a、b 的值分别为(2)、(3)。 while(b/a>5){ if(b-a>25) a++;
elseb/=a; } 解答: 本题检查学生整除的概念。跟踪: a 3 4 5 … b 100 100 100 … 100 100 100 15 16 17 (1)14 (2)17 (3)100 b/a 33 25 20 … 6 6 5 循环次数 1 2 3 … 13 14 停 b-a 97 96 95 … 85 84 2.1.2设有说明: int x,y,n,k; 下面程序段的功能是备选答案中的 (1) ,当 n=10,x=10打印结果是 (2) 。 cin>>x>>n; k=0; do{ x/=2; k++; }while(k
else if(num==3) cout<<”Gamma”; else cout<<”Delta”; 当 num 的值分别为1、2、3时,上面程序段的输出分别为(1)、(2)、(3)。 解答: 检查条件语句与字符串输出概念: (1)Alpha (2)Bata (3)Gamma 2.1.4执行下面程序段后,m 和 k 的值分别为 (1) 、 (2) 。 int m,k; for(k=1,m=0;k<=50;k++){ if(m>=10) break; if(m%2==0){ m+=5; continue; } m-=3; } 解答:注意 continue 语句的使用 初值 第1次循环后 第2次循环后 第3次循环后 第4次循环后 第5次循环后 第6次循环后 第7次循环后 第8次循环 (1)11 (2)8 m=0 m=5 m=2 m=7 m=4 m=9 m=6 m=11 m=11结束 二.编程与综合练习题 2.2有一个函数: 编写程序,输入 x,输出 y。 解: #include using namespace std; int main(){ double x,y; k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=8,k++未做
cout<<"输入 x="; cin>>x; if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; cout<<"y="< using namespace std; int main(){ int mark,result; //mark 是百分制成绩,result 是5分制 cout<<"请输入百分制成绩:"<>mark; if(mark<0) { cout<<"缺考!"<
cout<<"输入错误!"< using namespace std; int main(){ double income,tax=0; int k; cout<<"请输入个人月收入:"<>income; if(income<=1200){ cout<<"免征个人所得税"<20000){ k=income/20000; switch(k){ default: tax+=(income-100000)*0.45;income=100000; case 4: tax+=(income-80000)*0.40;income=80000; case 3: tax+=(income-60000)*0.35;income=60000; case 2: tax+=(income-40000)*0.30;income=40000; case 1: tax+=(income-20000)*0.25;income=20000; } } if(income>5000){ tax+=(income-5000)*0.20; income=5000; } if(income>2000){ tax+=(income-2000)*0.15; income=2000; }
if(income>500){ tax+=(income-500)*0.10; income=500; } tax+=income*0.05; cout<<"应征所得税:"< using namespace std; int main(){ int i,j; for (i=1;i<=4;i++){ for(j=4-i;j>0;j--) cout<<" ";//三角形每行前部的空格 for(j=1;j<=2*i-1;j++) cout<<" *"; cout< using namespace std; int main(){ char in; int i,j;
do{ cout<<"输入一个字母:"; cin>>in; if((in>=97)&&(in<=122)) in-=32;//小写改大写 }while((in<65)||(in>90)); int line=in-'A'; for (i=0;i<=line;i++){//上三角 for(j=line-i;j>0;j--) cout<<" ";//前方空格 for(j=1;j<=2*i+1;j++) cout<<' '<0;i--){//下三角(少一行) for(j=0;j<=line-i;j++) cout<<" "; for(j=1;j<=2*i-1;j++) cout<<' '< #include using namespace std; int main(){ int n,i,jch=1; double result=0; //result 是结果 cout<<"请输入正整数 n:"<>n; if(n<1){ cout<<"输入错误!"<
分享到:
收藏