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

收藏

预览图
编号:76856222    类型:共享资源    大小:377.50KB    格式:DOC    上传时间:2020-05-01 上传人:简*** IP属地:湖北
12
积分
关 键 词:
程序设计 第二 高等教育出版社 课后 习题 答案
资源描述:
当前位置:学习资源下载>课后习题答案 第一章C++基础知识习题 1.1 判断下列标识符的合法性。 sin book 5arry _name Example2.1 main $1 class_cpp a3 x*y my name 答:合法的:sin book _name main class_cpp a3 非法的:5arry Example2.1 $1 x*y my name 1.2假定有下列变量: 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 x=z*b++,b=b*x,b++ ch4=ch3-ch2+ch1 int(y/z)+(int)y/(int)z !(a>b)&&c&&(x*=y)&&b++ ch3||(b+=a*c)||c++ z=(a<<2)/(b>>1) 答: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" const int n=10; int m=5; a char ch=a int array[5]={1,2,3,4,5}; 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 b b/a 循环次数 b-a 3 100 33 1 97 4 100 25 2 96 5 100 20 3 95 … … … … … 15 100 6 13 85 16 100 6 14 84 17 100 5 停 (1)14 (2)17 (3)100 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=10) break; if(m%2==0){ m+=5; continue; } m-=3; } 解答:注意continue语句的使用 初值 m=0 k=1 第1次循环后 m=5 k=2 第2次循环后 m=2 k=3 第3次循环后 m=7 k=4 第4次循环后 m=4 k=5 第5次循环后 m=9 k=6 第6次循环后 m=6 k=7 第7次循环后 m=11 k=8 第8次循环 m=11结束 k=8,k++未做 (1)11 (2)8 二.编程与综合练习题 2.2有一个函数: 编写程序,输入x,输出y。 解: #include using namespace std; int main(){ double x,y; 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<<"缺考!"< 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<<"输入错误!"< using namespace std; const int day=10; int main(){ int i,x=1;//最后一天只有一个 for(i=1;i #include using namespace std; int main(){ int stem[256],sum=0,pnum=0,nnum=0,i=0; cout<<"从键盘输入一组非0整数,以输入0标志结束:"<>stem[i]; while(stem[i]!=0){ sum+=stem[i];//求和 if(stem[i]>0) pnum++;//正数数量 else nnum++;//负数数量 i++; cin>>stem[i]; } if(!i) cout<<"0个数"< using namespace std; int main(){ int i; for(i=1;i<=500;i++) if((i%3==2)&&(i%5==3)&&(i%7==2)) cout< using namespace std; int main(){ int i,a,sum_yz; //sum_yz是a的因子和 for(a=1;a<1000;a++){ sum_yz=0; for(i=1;i using namespace std; int main(){ int i,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){ cout< #include using namespace std; const double e=1e-5; int main(){ double x,a,sum; int i=3; cout<<"请输入正切值:"<>x; a=x; sum=x; do{ a*=x*x*(-1); sum+=a/i; i+=2; }while(fabs(a/i)>e); cout<<"arctg("< #include using namespace std; const double e=1e-5; int main(){ double x0,x1; int n=0; cout<<"输入初始近似值:"<>x1; do{ x0=x1; x1=(x0*x0-10*(x0*sin(x0)+cos(x0)))/(2*x0-10*sin(x0)); //x0是上次算出的结果,x1用作保存新算出的结果 n++; } while ((fabs(x1-x0) >e)&&(n<=1e5)); if(n>1e5) cout<<"超出迭代1e5次\n"; else cout<<"方程x*x+10*cos(x)=0的一个根为:"< using namespace std; int main(){ char st1[5]={A,B,C,D,E},st2[5]={J,K,L,M,N}; int i=0,j,k,l,m,n; for(j=0;j<5;j++){//0号位 if(j==0) continue;//A选手不与选手J比赛,即st1[0]不与st2[0]比赛 for(k=0;k<5;k++){//1号位 if(k==j) continue;//剔除乙队占据0号位的选手 for(l=0;l<5;l++){//2号位 if(l==j||l==k) continue;//剔除乙队占据0、1号位的选手 for(m=0;m<5;m++){//3号位 if(m==j||m==k||m==l) continue;//剔除乙队占据0、1、2号位的选手 if(m==3) continue;//st1[3]不与st2[3]比赛,即D不与M比赛 for(n=0;n<5;n++){//4号位 if(n==j||n==k||n==l||n==m) continue; //剔除乙队占据0、1、2、3号位的选手 if(n==3) continue;//st1[4]不与st2[3]比赛,即E不与M比赛 cout< #include using namespace std; int main(){ enum candidate{feipiao,zhang,wang,li,zhao}cand; int vote[5]={0},i,k=0,n; cin>>n; while(n!=-1){ k++; if(n>=1&&n<=4) vote[n]++; else vote[0]++; cin>>n; } for(i=0;i<5;i++){ cand=(candidate)i; switch(cand){ case feipiao: cout<k/2) cout<<" 当选"<k/2) cout<<" 当选"<k/2) cout<<" 当选"<k/2) cout<<" 当选"<>i>>j>>k>>l;等,并输出 最后关闭文件:file.close(); #include #include #include using namespace std; const int m=20; int main(){ int fib0=0,fib1=1,fib2,i,j,k,l,n; char ch; ofstream ofile("myfile2_17.txt"); ofile<>ch; if(ch==y||ch==Y){ ifstream ifile("myfile2_17.txt"); while(1){ ifile>>i>>j>>k>>l>>n;//由文件读入 if(ifile.eof()!=0) break; cout< #include #include #include using namespace std; const int n=100; int main(){ int a[n],i,j; char ch,b[256]; ofstream ofile; ifstream ifile; for(i=0;i>ch; if(ch==y||ch==Y){ ifile.open("myfile2_18.txt"); i=0; while(ifile.get(b[i])){//不可用>>,它不能读白字符, if(b[i]==\n) break; i++; } b[i]=\0; cout<>i;//由文件读入 cout< #include using namespace std; int main(){ char ch; int nline=0,nword=0,nch=0; int isword=0; ifstream ifile("ep2_19.cpp"); cout<<"读入ep2_19.cpp"<课后习题答案 第三章函数习题 一.基本概念与基础知识自测题 3.1填空题 3.1.1被定义为形参的是在函数中起 (1)作用的变量,形参只能用 (2)表示。实参的作用是 (3),实参可以用 (4)、 (5)、 (6)表示。 答案: (1)自变量 (2)变量名 (3)将实际参数的值传递给形参 (4)具有值的变量 (5)常量 (6)表达式 3.1.2局部域包括 (1)、 (2)和 (3) 。使用局部变量的意义在于 (4)。 答案: (1)块域 (2)函数域 (3)函数原型域 (4)局部变量具有局部作用域使得程序在不同块中可以使用同名变量 3.1.3静态局部变量存储在 (1)区,在 (2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为 (4)。 答案: (1)全局数据区 (2)编译 (3)全局生存期 (4)全0 3.1.4局部变量存储在 (1)区,在 (2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为 (4)。 答案: (1)栈 (2)在函数或块开始执行时 (3)函数或块的执行期 (4)随机值 3.1.5编译预处理的作用是 (1),预处理指令的标志是 (2)。多文件系统中,程序由 (3) 来管理,用户自定义头文件中通常定义一些 (4)。 答案: (1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码 (2)# (3)工程文件 (4)用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量 3.1.6 设有函数说明如下: int f(int x, int y){ return x%y+1; } 假定a=10,b=4,c=5,下列语句的执行结果分别是 (1)和 (2)。 (1) cout< using namespace std; int a,b; void f(int j){ static int i=a; //注意静态局部变量 int m,n; m=i+j; i++; j++; n=i*j; a++; cout<<"i="<
内容简介:
-
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c程序设计第二版高等教育出版社课后习题答案1-4.doc
链接地址:https://www.renrendoc.com/p-76856222.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!