欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    c程序设计第二版完整答案.docx

    • 资源ID:13594770       资源大小:156.52KB        全文页数:84页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c程序设计第二版完整答案.docx

    1、c程序设计第二版完整答案第一章 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 name1.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

    2、+,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=(a1)答:x+(int)y%a 表达式值为:4.5,运算后x、y、a的值不变,仍分别为2.5、8.2、3。提示:运算时取出y变量的数值强制转化为整型数放入寄存器参加运算,但内存中y本身的数值不变化。只有赋值运算和自增、自减运算才改变变量本身的值x=z*b+,b=b*x,b+ 表达式值为:42,运算后x为7.0,b为43。提示:逗号表达式,依次运算,表达式的值是最后一次运算的值。后+是变量先参加运算然后变量自身加1,所以第1步x

    3、等于1.4*5,即7.0,然后b增为6;第2步b赋值为42;第3步,表达式的值是上一步后b的值42,但随后b的值自增1,成为43。ch4=ch3-ch2+ch1 表达式值为:,字符外斜杠。运算后ch1、ch2、ch3值不变。提示:字符型的变量实质是范围很小的整型量。int(y/z)+(int)y/(int)z 表达式值为:13。y和z自身的值不变。提示:int(y/z)是完成实数除法后,商强制转化为整型,(int)y/(int)z则是数值先转换,完成的是整除。!(ab)&c&(x*=y)&b+ 表达式值为:0。运算后x仍为2.5,b仍为5提示:只要出现一个false右边的不再做,因为c为0,即

    4、false,所以其右的所有运算不再做。ch3|(b+=a*c)|c+ 表达式值为:1。运算后b为5,c为0,均不变。提示:只要出现一个true,右边不再做。ch3的值为48。z=(a1) 表达式值为:6。运算后a与b的值不变仍为3和5。提示:a的数值为(00000011)2,左移2位为(00001100)2即12,相当整数2两次,而b的数值为(00000101)2,右移1位为(00000010)2,即2,相当于整除2。1.3 判断下列哪些是常量,哪些是变量。China const int n=10; int m=5; a char ch=a int array5=1,2,3,4,5; char

    5、 s=Hello;答:China 文字常量const int n=10; 常变量int m=5; 变量a 文字常量char ch=a 变量int array5=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!=

    6、c)(kabxych1;ch2=cin.get();cinch3;若从键盘输入: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;cinoctabhexcdecd;若从键盘输入:23 23 23 23执行后各变量的值用十进制表示各是多少?答:a:19,b:19,c:35,d:231.8 对于习题1.7,若执行:coutathexbtoctcendl;显示结果是什么?答:19 0x13 043第二章 基本控制结构程序设计习题一基本概念与基础知识自

    7、测题2.1 程序阅读题2.1.1 解答:本题检查学生整除的概念。跟踪:abb/a循环次数b-a31003319741002529651002039515100613851610061484171005停(1)14(2)17(3)1002.1.2 解答:第一个循环使x成为:;y成为:;第二个循环使y成为:;(1)B考虑整除,当x连除4次2以后即为0,所以:为0(2)12.1.3 解答:检查条件语句与字符串输出概念:(1)Alpha(2)Bata(3)Gamma2.1.4 执行下面程序段后,m和k的值分别为 (1) 、 (2) 。int m,k;for(k=1,m=0;k=10) break;if

    8、(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 解:#include using namespace std;int main() double x,y; coutx; if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; couty=yendl;

    9、 return 0; 2.3 解:10分一档用10进行整除获得,转换用开关语句实行。#include using namespace std;int main() int mark,result; /mark是百分制成绩,result是5分制 cout请输入百分制成绩:mark; if(mark0) cout缺考!endl; return 0; switch (mark/10) case 9: case 10: result=5; cout输出五分制成绩:resultendl; break; case 8: result=4; cout输出五分制成绩:resultendl; break; ca

    10、se 7: result=3; cout输出五分制成绩:resultendl; break; case 6: result=2; cout输出五分制成绩:resultendl; break; case 5:case 4:case 3:case 2:case 1:case 0: result=1; cout输出五分制成绩:resultendl; break; default: cout输入错误!endl; return 0;2.4 #include using namespace std;int main() double income,tax=0; int k; cout请输入个人月收入:in

    11、come; 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=200

    12、00; 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; return 0;2.5 解:难点在三角形左边的空格的控制,嵌套一个循环语句完成此任务。#include using namespace std;int main() int i,j; for (i=1;i

    13、0;j-) cout ;/三角形每行前部的空格 for(j=1;j=2*i-1;j+) cout *; coutendl; for(i=1;i=3;i+) cout * * *n; return 0; 2.6 解:分上三角和下三角两部分分别处理左边的空格。#include using namespace std;int main() char in; int i,j; do coutin; if(in=97)&(in=122) in-=32;/小写改大写 while(in90); int line=in-A; for (i=0;i0;j-) cout ;/前方空格 for(j=1;j=2*i+

    14、1;j+) cout char(i+A); cout0;i-)/下三角(少一行) for(j=0;j=line-i;j+) cout ; for(j=1;j=2*i-1;j+) cout char(i-1+A); coutendl; return 0; 2.7 #include #include using namespace std;int main() int n,i,jch=1; double result=0; /result是结果 cout请输入正整数n:n; if(n1) cout输入错误!endl; return 1; result=1; for(i=2;i=n;i+) jch*

    15、=i; /jch是i的阶乘,注意n!=n*(n-1)!这样可少一层循环 result+=jch; coutresultendl; return 0;2.8 #include using namespace std;const int day=10;int main() int i,x=1;/最后一天只有一个 for(i=1;iday;i+) x=(x+1)*2; /从一天前推到九天前 cout开始共有桃子x个。n; return 0;2.9 #include #include using namespace std;int main() int stem256,sum=0,pnum=0,nnu

    16、m=0,i=0; cout从键盘输入一组非0整数,以输入0标志结束:stemi; while(stemi!=0) sum+=stemi;/求和 if(stemi0) pnum+;/正数数量 else nnum+;/负数数量 i+; cinstemi; if(!i) cout0个数endl; else cout平均值(double)sum/(pnum+nnum)endl;/平均值习惯不用整数 cout正数个数pnumendl; cout负数个数nnumendl; return 0; 2.10解:中国古代数学问题(韩信点兵),采用穷举法。注意三个条件同时成立用&。#include using na

    17、mespace std;int main() int i; for(i=1;i=500;i+) if(i%3=2)&(i%5=3)&(i%7=2) coutiendl; return 0;2.11 解:采用穷举法。两重循环,外层是从1到999依次处理,内层是求该数的所有因子的和,并判断是否等于该数。#include using namespace std;int main() int i,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

    18、的值,否则要用另一个变量b来代替a来参加运算 if (a=sum_yz) coutaendl; return 0;2.12 解:采用穷举法。考虑10元最多10张,5元最多20张,余下是1元。#include 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=0) coutitjtkendl; count+; coutcountendl; return 0;2.13 解:采用递推法。初看每一项的递推通式不易写出,但每一项全看作奇数项,而偶数项全为零,

    19、则很容易写出:第1项为x,第3项为第1项乘以x的平方除以项序号3乘以-1,其余类推。同时和的误差小于最后一项的绝对值。#include#includeusing 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); coutarctg(x)=sumendl; return 0;2.14 解:迭代法也是用循环语句实现,数学上迭代法可能收敛,也可能发散,解答中加

    20、了最大迭代次数的限制。#include#includeusing 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)&(n1e5) cout超出迭代1e5次n; else cout方程x*x+10*cos(x)=0的一个根为:x1endl; cout方程误差为

    21、:x1*x1+10*cos(x1)endl; return 0;2.15 解:这是一个组合问题,使用穷举法。共有5个位置,设甲队5名队员位置不变,乙队改变队员位置,进行配对。注意第1个位置可在5个队员中任选一个,以后的位置必须扣除已选过的队员。并扣除不能配对的情况,即得所有可能的比赛名单。#includeusing namespace std;int main() char st15=A,B,C,D,E,st25=J,K,L,M,N; int i=0,j,k,l,m,n; for(j=0;j5;j+)/0号位 if(j=0) continue;/A选手不与选手J比赛,即st10不与st20比赛

    22、 for(k=0;k5;k+)/1号位 if(k=j) continue;/剔除乙队占据0号位的选手 for(l=0;l5;l+)/2号位 if(l=j|l=k) continue;/剔除乙队占据0、1号位的选手 for(m=0;m5;m+)/3号位 if(m=j|m=k|m=l) continue;/剔除乙队占据0、1、2号位的选手 if(m=3) continue;/st13不与st23比赛,即D不与M比赛 for(n=0;n5;n+)/4号位 if(n=j|n=k|n=l|n=m) continue;/剔除乙队占据0、1、2、3号位的选手 if(n=3) continue;/st14不与

    23、st23比赛,即E不与M比赛 coutst10-st2jtst11-st2kt; coutst12-st2ltst13-st2mt; coutst14-st2nendl; i+; coutiendl; return 0;2.16 解:用5个元素的整型数组,分别放弃权票和各候选人的得票,然后用开关语句打印。#include#includeusing namespace std;int main() enum candidatefeipiao,zhang,wang,li,zhaocand; int vote5=0,i,k=0,n; cinn; while(n!=-1) k+; if(n=1&nn;

    24、 for(i=0;i5;i+) cand=(candidate)i; switch(cand) case feipiao: coutsetw(10)feipiaotvotecandendl;break; case zhang:coutsetw(10)zhangtk/2) cout 当选endl; else coutendl; break; case wang:coutsetw(10)wangtk/2) cout 当选endl; else coutendl; break; case li:coutsetw(10)litk/2) cout 当选endl; else coutendl; break; case zhao:cout


    注意事项

    本文(c程序设计第二版完整答案.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开