c语言程序设计课后习题1-8参考答案2.pdf
《c语言程序设计课后习题1-8参考答案2.pdf》由会员分享,可在线阅读,更多相关《c语言程序设计课后习题1-8参考答案2.pdf(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计课后习题1-8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。运算器又称算术逻辑部件,简称A L U,是计算机用来进行数据运算的部件。数据运算包括算术运算和逻辑运算。控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的。存储器是计算机中具有记忆能力的部件,用来存放程序和数据。输入设备是用来输入程序和数据的部件。输出设备正好与输入设备相反,是用来输出结果的部件。2、简述计算机的工作原理。答:计算机的工作原理可简单地概括为:各
2、种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。整个过程由控制器进行控制。3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。这类软件一般与具体应用无关,是在系统一级上提供的服务。系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。另一类是面向用户的软件,如各种语言处理程序(像 BC、VC等)、实用程序、字处理程序等。应用程序是指某特定领域中的某种具体应用,供最终用户使
3、用的软件,它必须在操作系统的基础上运行。4、什么叫软件?说明软件与硬件之间的相互关系。答:软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。在不太严格的情况下,认为程序就是软件。硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。从这个意义上说,软件是用户与机器的接口。二、填空题1、算 术 逻 辑2、键 盘 鼠
4、 标3、控 制 器 运 算 器4、10 25、0 Ox6、原 码 反 码 补 码7、00010111 111010018、127-128三、选择题1、C 2、A 3、B 4、A 5、B 6、B 7、D 8、A 9、A 10、B 11、A 12、B习题2参考答案一、简答题1、C语言有哪些特点?答:(1)简洁紧凑、灵活方便;(2)运算符丰富:(3)数据结构丰富;(4)C语言是结构式语言;(5)C语言的语法限制不太严格、程序设计自由度大:(6)C语言允许直接访问物理地址,可以直接对硬件进行操作;(7)C语言程序生成代码质量高,程序执行效率高;(8)C语言使用范围大,可移至性好:(9)具有预处理功能;
5、(1 0)具有递归功能。2、C语言的主要应用有哪些?答:(1)许多系统软件和大型应用软件都是用C语言编写的,如 UN I X、L in u x 等操作系统。(2)在软件需要对硬件进行操作的场合,用 C语言明显优于其他高级语言。例如,各种硬件设备的驱动程序(像显卡驱动程序、打印机驱动程序等)一般都是用C语言编写的。(3)在图形、图像及动画处理方面,C 语言具有绝对优势,特别是游戏软件的开发主要就是使用C语言。(4)随着计算机网络飞速发展,特别是I n te r n e t的出现,计算机通信就显得尤其重要,而通信程序的编制首选就是C语言。(5)C语言适用于多种操作系统,像W in d ow s、U
6、N I X、L in u x 等绝大多数操作系统都支持C语言,其他高级语言未必能得到支持,所以在某个特定操作系统下运行的软件用C语言编制是最佳选择。3、列举几种程序设计语言。答:C语言、J a v a 语言、P a s c a l 语言、B A S I C 语言、LOGO语言等。二、填空题1、机 器 语 言 汇 编 语 言 高 级 语 言2、机器语言3、A L G O L 6 04、多个函数5、m a in6、#in c l u d e7、定 义 使 用8、声 明 部 分 执 行 部 分 声 明 部 分 执 行 部 分三、选择题1、D 2、B 3、B 4、C 5、C 6、C 7、D 8、C 9
7、、D 10、A 11、B 12、A13、B 14、C 15、A习题3参考答案一、填空题1、整 型 字 符 型 实 型2、字 母 数 字 下 划 线 字 母 下 划 线3、直 接 符 号 符 号4、0 Ox5、1 26、4 87、-32768 327678、-169、x+=l;10、2611、(m/10)%l 0*100+m/100(100*10)+m%10二、选择题1、D 2、C 3、A 4、B 5、B 6、D 7、B 8、C 9、A 10、A 11、C 12、B 13、B 14、D 15、B 16、D 17、B 18、D 19、C 20、A 21、B 22、D 23、D 24、D 25、D
8、26、D 27、C 28、A 29、C 30、B习题4参考答案一、填空题1、scanf printf2、按指定的输出格式将信息输出到屏幕上常规字符格式控制符3、X、E、G4、getche输入的字符回显,而 getch输入的字符不回显5、fflush6、解决某个问题的具体的方法和步骤7、自 然 语 言 描 述 伪 代 码 流 程 图 N-S图8、顺 序 分 支 循 环二、选择题1、B 2、C 3、D 4、C 5、B 6、C 7,D 8、C 9、B 10、B 11、D 12 C 13、D 14、D 15、A三、编程题1、编写一程序要求任意输入四位十六进制整数,以反序的方式输出该十六进制数。例如:输
9、入9A F 0,则输出0FA9。#includevoid main()(unsigned short a,b;scanf(%4x”,&a)输入4位十六进制数给变ab=(a&0X000F)12;取a 的最低一位十六进制数并左移12位后赋值给bb+=(a&0X00F0)4;取a 的次第一位十六进制数并左移4位后与b 相加再赋值给bb+=(a&0X0F00)4;取a 的次高一位十六进制数并右移4位后与b 相加再赋值给bb+=(a&0XF000)12;取 a 的最高一位十六进制数并右移12位后与b 相加再赋值给bprintf(4xn”,b);输出变化后的十六进制数2、编程从键盘输入两个整数分别给变量a
10、 和 b,要求在不借助于其他变量的条件下,将变量 a 和 b 的值实现交换。#includevoid main()(int a,b;scanf(%d%d”,&a,&b);printf(t6before swap:a=%d b=%dn,a,b);a=a+b;b=a-b;a=a-b;printf(44after swap:a=%d b=%dn”,a,b);)3、编程从键盘输入圆的半径r,计算出圆的周长和面积。#include#define PI 3.14159void main()(float r,c,s;scanfft%f,&r);c=2*r*PI;s=pi*r*r;printf(c=%f s=
11、%fn”,c,s);4、编程从键盘输入任意一个十六进制负整数,以输入的形式输出。例如:输入-FA 98,输出FA98。#includevoid main()(short int a;scanf(u%x,&a);printf(hxn”,a);5、已知一元二次方程ax2+bx+c=0,编一程序当从键盘输入a、b、c 的值后,计算x 的值。#include#includevoid main()(float a,b,c;float d;float xl,x2;printffinput a,b,c:);scanf(tu%f%f%f,&a,&b,&c);d=sqrt(b*b-4*a*c);xl=(-b+d
12、)/(2*a);x2=(-b-d)/(2*a);printffx 1 =%.2f x2=%.2fn,x 1,x2);6、假设从键盘输入某日午夜零点到现在已经历的时间(单位:s),遍一程序计算到现在为止已近过了多少天,现在的时间是多少?#includevoid main()(unsigned long t,r;int d,h,m,s;printf(second=);scanf(%d,&t);d=t/(24*3600);r=t%(24*3600);h=r/3600;m=(r%3600)/60;s=(r%3600)%60;printf(46have passed days is%d,current
13、time is%02d:%02d:%02dn,d,h,m,s):)习题5参考答案编程题1、编程序判断输入整数的正负性和奇偶性。#includevoid main()(int a;scanf(%d,&a);if(a=0)printffthe number%d is positive numbern,a);elseprintffthe number%d is negative numbern,a);if(a%2=0)printffthe number%d is even numbern,a);elseprintffthe number%d is odd numbern,a);)2、编程判断输入数据
14、的符号属性。#includevoid main()(int x,sign;scanfT%d”,&x);if(x0)sign=l;else if(x=0)sign=0;elsesign=-1;printf(4sign=%dn”,sign);)3、输入任意三个数numl、num2、num 3,按从小到大的顺序排序输出。#includevoid main()int numl,num2,num3;scanff%d%d%d”,&numl,&num2,&num3);if(numl=num2)if(num2=num3)printf(%d%d%dn,num3,numl,num2);elseprintf(u%d
15、%d%dn”,numl,num3,num2);elseif(num2=num3)printf(44%d%d%dn”,num3,num2,numl);elseif(numl=num3)printf(%d%d%dn”,num2,num3,numl);elseprintf(%d%d%dn,num2,numl,num3);)4、在屏幕上显示一张如下所示的时间表。#includevoid main()(char c;printff4*Time*n”);print 耳“1 morningn);printf(442 afternoonW);printf(“3 nightn);printffPlease en
16、ter your choice:);c=getcahr();switch(c)(case T:printf(6Good morningW);brenk;case 2:printffGood aftemoonYrT);break;case 3:printffGood nightn);break;default:printfSelection error!Xn99);)5、输入一个年份和月份,打印出该月份有多少天(考虑闰年),用 switch语句编程。#includevoid main()(int year,month;printf(t6Input year,month:);scanf(u%d%d
17、”,&year,&month);switch(month)(case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf(“31 daysn,);break;case 4:case 6:case 9:case 11:printfC430 daysn);break;case 2:if(year%4=0&year%100!=0)|(year%400=0)printff29 daysn);elseprintfC28 daysn);break;default:printffInput error!n);)习题6参考答案编程题1、编程计算2+4+6+
18、.+98+100的值。(1)利用for循环语句实现,在循环体外为sum赋初值0。#includevoid main()(int i,sum=0;for(i=2;i=100;i+=2)sum+=i;printffsum=%dn,sum);(2)利用while循环语句实现,在循环体外为i 和 sum赋初值。#includevoid main()(int i=2,sum=0;while(i=100)(sum+=i;i+=2;)printf(4sum=%dn,sum);)2、编程计算l*2*3+4*5*6+99*100*101 的值。#includevoid main()(int i;long ter
19、m,sum=0;for(i=l;i=99;i+=2)(term=i*(i+1 )*(i+2);sum+=term;printf(4sum=%dn,sum);3、编程计算1!+2!+3!+10!的值。(1)用累加和算法,累加项为term=term*i;i=l,2,10。Term的初始值为L使用单重循环完成。#includevoid main()(long term=l,sum=0;int i;for(i=l;i=10;i+)(term*=i;sum+=term;)printf,l!+2!+3!+10!=%ldn”,sum);)(2)用内层循环求阶乘,外层循环控制累加的项数。#includevoi
20、d main()(long term,sum=0;int i,j;for(i=l;i=10;i+)(term=1;for(j=l;j=i;j+)term*二 j;sum+=term;printfCl!+2!+3!+10!=%ldn”,sum);4 编程计算a+aa+aaa+.+aa.a(n 个 a)的值,n 和 a 的值由键盘输入。#includevoid main()(long term=0,sum=0;int a,i,n;printf(44Input a,n:n);scanf(ut%d,%d,&a,&n);for(i=l;i=n;i+)(term=term:M0+a;sum+=term;)
21、printfCsum=%ldn,sum);)5、参考答案:#includevoid main()(float term,result=1;int n;for(n=2;n=100;n+=2)term=(float)(n*n)/(n-1 )*(n+1);result*=term;)printf(result=%fn,2*result);)6、参考答案:#include#includevoid main()(int n=l,count=0;float x;double sum,term;printfifInput x:“)scanf(%f&x);sum=x;term=x;do(term=-term*
22、x*x/(n+l)(n+2);/计算相应项,并改相应符号sum+=term;n+=2;count+;while(fabs(term)=le-5);printffsin(x)=%count=%dn,sum,count);7、参考答案:#includevoid main()(int i,j,k,n;printflresult is:);for(n=100;n1000;n+)(i=n/100;分出百位j=(n-i*100)/10 分出十位k=n%10;分出个位if(n=i*i*i+j*j*j+k*k*k)printf(U 6%d”,n);)printfTrT);)8、参考答案:#include#in
23、cludevoid main()(int il,i2,i3,i4,k,n;printf(4tInput data is:);scanf(%d,&n);k=abs(n);il=k/1000;分离出千位i2=(k-il*1000)/100 分离出百位i3=(k-il*1000-i2*l 00)/10 分离出十位i4=k%10;分离出个位printffThe sum of the total bit is%dn”,il+i2+i3+i4);)9、参考答案:#includevoid main()(int n,m=0,s,r;printffInput data is:);scanf(d”,&n);Whi
24、le(s!=0)(r=s%10;从低位到高位逐一分离m=10*m+r;重新组合一正数s=s/10;/求其商)if(m=n)printfTyesW);elsepHntfCnoW);10、参考答案:#includevoid main()int x,y,z,count=0;x,y,z分别表示5分、2分和1分硬币的数量for(x=l;x=28;x+)5分硬币最多不超过28枚for(y=l;y=73;y+)/2分硬币最多不超过73枚(z=100-x-y;共有100枚硬币,减去5分和2分硬币后为1分硬币数量if(5*x+2*y+z=150)(count+/增加一种方案printf(02d,%02d,%02
25、d”,x,y,z);/输出每-一种方案if(count%6=0)printf(n);没输出6种方案后,换行)printfCcount=%dn,count);11、设计思想:将A、B、C、D4个人的回答用一条件表达式来表示,对 于 A 的回答:thisman!=A;对于 B 的回答:thisman=C;对于 C 的回答:thism an=D;对于 D 的回答:thisman!=,D 然后,采用枚举的方法,一个人一个人的去试,如果这4个条件表达式中有3个为真,即4个条件表达式的值相加为3,则可判定是其中某人做的好事。参考答案:#includevoid main()(int k=0;sum=0;g=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课后 习题 参考答案
限制150内