C语言程序设计课后习题18参考答案.docx

上传人:b****1 文档编号:1758688 上传时间:2023-05-01 格式:DOCX 页数:41 大小:56.89KB
下载 相关 举报
C语言程序设计课后习题18参考答案.docx_第1页
第1页 / 共41页
C语言程序设计课后习题18参考答案.docx_第2页
第2页 / 共41页
C语言程序设计课后习题18参考答案.docx_第3页
第3页 / 共41页
C语言程序设计课后习题18参考答案.docx_第4页
第4页 / 共41页
C语言程序设计课后习题18参考答案.docx_第5页
第5页 / 共41页
C语言程序设计课后习题18参考答案.docx_第6页
第6页 / 共41页
C语言程序设计课后习题18参考答案.docx_第7页
第7页 / 共41页
C语言程序设计课后习题18参考答案.docx_第8页
第8页 / 共41页
C语言程序设计课后习题18参考答案.docx_第9页
第9页 / 共41页
C语言程序设计课后习题18参考答案.docx_第10页
第10页 / 共41页
C语言程序设计课后习题18参考答案.docx_第11页
第11页 / 共41页
C语言程序设计课后习题18参考答案.docx_第12页
第12页 / 共41页
C语言程序设计课后习题18参考答案.docx_第13页
第13页 / 共41页
C语言程序设计课后习题18参考答案.docx_第14页
第14页 / 共41页
C语言程序设计课后习题18参考答案.docx_第15页
第15页 / 共41页
C语言程序设计课后习题18参考答案.docx_第16页
第16页 / 共41页
C语言程序设计课后习题18参考答案.docx_第17页
第17页 / 共41页
C语言程序设计课后习题18参考答案.docx_第18页
第18页 / 共41页
C语言程序设计课后习题18参考答案.docx_第19页
第19页 / 共41页
C语言程序设计课后习题18参考答案.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计课后习题18参考答案.docx

《C语言程序设计课后习题18参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课后习题18参考答案.docx(41页珍藏版)》请在冰点文库上搜索。

C语言程序设计课后习题18参考答案.docx

C语言程序设计课后习题18参考答案

C语言程序设计课后习题1-8参考答案

习题1参考答案

一、简答题

1、冯诺依曼计算机模型有哪几个基本组成部分?

各部分的主要功能是什么?

答:

冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能

部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。

数据运算

包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的。

存储器是计算机中具有记忆能力的部件,用来存放程序和数据。

输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

2、简述计算机的工作原理。

答:

计算机的工作原理可简单地概括为:

各种各样的信息,通过输入设备,进入计算机的

存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。

整个过程由控制器进行控制。

3、计算机软件系统分为哪几类?

答:

软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:

系统软件和应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。

这类软件一般与具体应用无关,是在系统一级上提供的服务。

系统软件主要包括以下两类:

一类是面向计算机本身的软件,如操作系统、诊断程序等。

另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。

应用程序是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。

4、什么叫软件?

说明软件与硬件之间的相互关系。

答:

软件是指计算机程序及有关程序的技术文档资料。

两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。

在不太严格的情况下,认为程序就是软件。

硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。

在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。

从这个意义上说,软件是用户与机器的接口。

二、填空题

1算术逻辑

2、键盘鼠标

3、控制器运算器

4、102

5、0Ox

6、原码反码补码

7、0001011111101001

8、127-128

三、选择题

1、C2、A3、B4、A5、B6、B7、D8、A9、A10、B11、A12、B

习题2参考答案

一、简答题

1、C语言有哪些特点?

答:

(1)简洁紧凑、灵活方便;

(2)运算符丰富;(3)数据结构丰富;(4)C语言是结构

式语言;(5)C语言的语法限制不太严格、程序设计自由度大;(6)C语言允许直接访冋

物理地址,可以直接对硬件进行操作;(7)C语言程序生成代码质量高,程序执行效率高;

(8)C语言使用范围大,可移至性好;(9)具有预处理功能;(10)具有递归功能。

2、C语言的主要应用有哪些?

答:

(1)许多系统软件和大型应用软件都是用C语言编写的,如UNIX、Linux等操作系

统。

(2)在软件需要对硬件进行操作的场合,用C语言明显优于其他高级语言。

例如,各

种硬件设备的驱动程序(像显卡驱动程序、打印机驱动程序等)一般都是用C语言编写的。

(3)在图形、图像及动画处理方面,C语言具有绝对优势,特别是游戏软件的开发主要

就是使用C语言。

(4)随着计算机网络飞速发展,特别是Internet的出现,计算机通信就

显得尤其重要,而通信程序的编制首选就是C语言。

(5)C语言适用于多种操作系统,像

Windows、UNIX、Linux等绝大多数操作系统都支持C语言,其他高级语言未必能得到支

持,所以在某个特定操作系统下运行的软件用C语言编制是最佳选择。

3、列举几种程序设计语言。

答:

C语言、Java语言、Pascal语言、BASIC语言、LOGO语言等。

二、填空题

1、机器语言汇编语言高级语言

2、机器语言

3、ALGOL60

4、多个函数

5、main

6、#include

7、定义使用

8、声明部分执行部分声明部分执行部分

三、选择题

1、D2、B3、B4、C5、C6、C7、D8、C9、D10、A11、B12、A

13、B14、C15、A

习题3参考答案

一、填空题

1、整型字符型实型

2、字母数字下划线字母下划线

3、直接符号符号

4、00x

5、12

6、48

7、-32768~32767

8、-16

9、x+=1;

10、26

11、(m/10)%10*100+m/100(100*10)+m%10

、选择题

1、D2、C

3、

A

4、B

5、B6、D7、

B8、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

26、

D

27、C

28、A

29、C

30、B

习题4参考答案

一、填空题

1、seanfprintf

2、按指定的输出格式将信息输出到屏幕上常规字符格式控制符

3、X、E、G

4、getehe输入的字符回显,而geteh输入的字符不回显

5、fflush

6、解决某个问题的具体的方法和步骤

7、自然语言描述伪代码流程图N-S图

8、顺序分支循环

二、选择题

1、B2、C3、D4、C5、B6、C7、D8、C9、B10、B11、D12、C13、

D14、D15、A

三、编程题

1、编写一程序要求任意输入四位十六进制整数,以反序的方式输出该十六进制数。

例如:

输入9AF0,则输出0FA9。

#include

voidmain()

{

unsignedshorta,b;

scanf(“%4x”,&a)〃输入4位十六进制数给变a

量a和b的值实现交换。

#include

voidmain()

{

inta,b;

scanf(“%d%d,&a,&b);

printf(“beforeswap:

a=%d=%dn”,a,b);

a=a+b;

b=a-b;

a=a-b;

printf(“afterswap:

a=%d=%dn”,a,b);

}

3、编程从键盘输入圆的半径r,计算出圆的周长和面积。

#include

#definePI3.14159

voidmain()

{

floatr,c,s;

scanf(“%f”,&r);

printf(“c=%fs=%f,c,s);

}

-FA98,输

4、编程从键盘输入任意一个十六进制负整数,以输入的形式输出。

例如:

输入

出-FA98。

#include

voidmain()

{

shortinta;

scanf(“%X',&a);

printf(“n”-a);

}

5、已知一元二次方程ax2+bx+c=0,编一程序当从键盘输入a、b、c的值后,计算x的值。

#include

#include

voidmain()

{

floata,b,c;

floatd;

floatx1,x2;

printf("inputa,b,c:

”);

scanf(“%f%f%f”,&a,&b,&c);

d=sqrt(b*b-4*a*c);

x仁(-b+d)/(2*a);

x2=(-b-d)/(2*a);

printf(“x仁%.2f2=%.2fn”,x1,x2);

}

s),遍一程序计算到现在

6、假设从键盘输入某日午夜零点到现在已经历的时间(单位:

为止已近过了多少天,现在的时间是多少?

#include

voidmain()

{

unsignedlongt,r;

intd,h,m,s;

printf(“second=”);

scanf(“%c”,&t);

d=t/(24*3600);

r=t%(24*3600);

h=r/3600;

m=(r%3600)/60;

s=(r%3600)%60;

printf(“havepasseddaysis%d,currenttimen”,d,h,m,s):

}

习题5参考答案

编程题

1编一程序判断输入整数的正负性和奇偶性。

#include

voidmain()

{

inta;

scanf(“%c”,&a);

if(a>=0)

printf(“thenumber%dispositivenumber,a);

else

if(a%2==0)

printf(“thenumber%disevennumber,a);else

printf(“thenumber%disoddnumber,a);

}

2、编程判断输入数据的符号属性。

#include

voidmain()

{

intx,sign;

scanf(“%d',&x);

if(x>0)

sign=1;

elseif(x==0)

sign=0;

else

sign=-1;

printf(“sigr%dn”,sign);

}

3、输入任意三个数

numl、num2、num3,按从小到大的顺序排序输出。

#include

voidmain()

{intnuml,num2,num3;

scanf(“%d%d%”,&numl,&num2,&num3);

if(num1<=num2)

if(num2<=num3)

printf(“%%d%dn”,numl,num2,num3);

else

if(num1>=num3)

printf(“%%d%dn”,num3,num1,num2);

else

printf(“%%d%dn”,num1,num3,num2);

else

if(num2>=num3)

printf(“%%d%dn”,num3,num2,num1);

else

if(num1>=num3)

printf(“%%d%dn”,num2,num3,num1);

else

printf(“%%d%dn”,num2,num1,num3);

}

4、在屏幕上显示一张如下所示的时间表。

#include

voidmain()

charc;

printf(

“*****Time*****n”

);

 

printf(“2afterno6n);

printf(“3nig'ht);

printf(“Pleaseenteryourchoice:

”);

c=getcahr();

switch(c)

{

case

‘1,:

printf(

“GooraTmobrenk;

case

‘2,:

printf(

“Goochaft^rrboeak;

case

‘3,:

printf(

“G6od;rtoighik;

default:

printf(

“Selectioner))r!

}

}

用switch语句编程。

5、输入一个年份和月份,打印出该月份有多少天(考虑闰年)

#include

voidmain()

{

intyear,month;

printf("Inputyear,month:

”);

scanf(“%d%c”,&year,&month);

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

printf(“31"days

break;

case4:

case6:

case9:

case11:

printf(“30'days

break;

case2:

if((year%4==0&&year%100!

=0)||(year%400==0))printf(“29days);

else

printf(“28days);

break;

default:

printf(“Inpuberijor!

}

}

习题6参考答案

编程题

1、编程计算2+4+6+…+98+100的值。

(1)利用for循环语句实现,在循环体外为sum赋初值0。

#include

voidmain()

{

inti,sum=0;

for(i=2;i<=100;i+=2)

sum+=i;

(2)利用while循环语句实现,在循环体外为i和sum赋初值。

#include

voidmain()

{

inti=2,sum=0;

while(i<=100)

{

sum+=i;

i+=2;

}

printf(“sum=n%d,sum);

}

2、编程计算1*2*3+4*5*6+…+99*100*101的值。

#include

voidmain()

{

inti;

longterm,sum=0;

for(i=1;i<=99;i+=2)

{

term=i*(i+1)*(i+2);

sum+=term;

}

3、编程计算1!

+2!

+3!

+…+10的值。

(1)用累加和算法,累加项为term=term*i;i=1,2,…,10Term的初始值为1,使用单重循环完成。

#include

voidmain()

{

longterm=1,sum=0;

inti;

for(i=1;i<=10;i++)

{

term*=i;

sum+=term;

}

printf(“1!

+2!

+3!

+…+10!

=n%ldsum);

}

(2)用内层循环求阶乘,外层循环控制累加的项数。

#include

voidmain()

{

longterm,sum=0;

inti,j;

for(i=1;i<=10;i++)

{

term=1;

for(j=1;j<=i;j++)

term*=j;

sum+=term;

printf(“1!

+2!

+3!

+…+10!

=n%l(dsum);

}

4、编程计算a+aa+aaa+…+aa..(n个a)的值,n和a的值由键盘输入。

#include

voidmain()

{

longterm=0,sum=0;

inta,i,n;

printf("Inputan”:

);

scanf(“%d,%c”,&a,&n);

for(i=1;i<=n;i++)

{

term=term*10+a;

sum+=term;

}

printf(“sum=%ld,sum);

}

5、参考答案:

#include

voidmain()

{

floatterm,result=1;

intn;

for(n=2;*=100;n+=2)

term=(float)(n*n)/((n-1)*(n+1));

result*=term;

}

printf(“result=%f,2*result);

}

6、参考答案:

#include

#include

voidmain()

{

intn=1,count=0;

floatx;

doublesum,term;

printf("Inputx:

")

scanf(“%ff,&x);

sum=x;

term=x;

do

{

term=-term*x*x/((n+1)(n+2));//计算相应项,并改相应符号sum+=term;

n+=2;

count++;

}while(fabs(term)>=le-5);

printf(“sin(x)=%f,count=%d,sum,count);

7、参考答案:

#include

voidmain()

{

inti,j,k,n;

printf(“resultis:

”);

for(n=100;n<1000;n++)

{

i=n/100;〃分出百位

j=(n-i*100)/10〃分出十位

k=n%10;〃分出个位

if(n==i*i*i+j*j*j+k*k*k)

printf(“%”,n);

}

printf(n”“);

}

8、参考答案:

#include

#include

voidmain()

{

inti1,i2,i3,i4,k,n;

printf(”Inputdatais:

”);

seanf(“%d,&n);

k=abs(n);

i1=k/1000;//分离出千位

i2=(k-i1*1000)/100//分离出百位

i3=(k-i1*1000-i2*100)/10〃分离出十位

i1+i2+i3+i4);

i4=k%10;//分离出个位

printf(“Thesumofthetotalbitis%d,}

9、参考答案:

#include

voidmain()

{

intn,m=0,s,r;

printf("Inputdatais:

”);

scanf(“%d',&n);

s=n;

While(s!

=0)

{

r=s%10;//从低位到高位逐一分离

m=10*m+r;//重新组合一正数

s=s/10;//求其商

}

if(m==n)

printf(“n”s);

else

printf(nno);

10、参考答案:

#include

voidmain()

{

intx,y,乙count=0;〃x,y,z分别表示5分、2分和1分硬币的数量

for(x=1;x<=28;x++)〃5分硬币最多不超过28枚

for(y=1;y<=73;y++)〃2分硬币最多不超过73枚

{

z=100-x-y;〃共有100枚硬币,减去5分和2分硬币后为1分硬币数量

if(5*x+2*y+z==150)

{

count++//增加一种方案

printf(“%02%02d,%02d”,x,y,z);〃输出每一种方案

if(count%6==0)

printf(n”);//没输出6种方案后,换行

}

}

printf(“count=%d,count);

}

11、设计思想:

将A、B、C、D4个人的回答用一条件表达式来表示,对于A的回答:

thisman!

='A'于B的回答:

thisman==';C对于C的回答:

thisman==';对于D的回

答:

thisman!

='D'然后,采用枚举的方法,一个人一个人的去试,如果这4个条件表达式

中有3个为真,即4个条件表达式的值相加为3,则可判定是其中某人做的好事。

参考答案:

#include

voidmain()

{

intk=0;sum=0;g=0;

charthisman='';

for(k=0;k<=3;k++)//循环控制变量为k,循环共进行4次

{

D')+(thisman!

='D');

thisman='A'+/k初始认为A做好事,依次为B、C、Dsum=(thisman!

='A')+(thisman=='C')+(thisman==if(sum==3)

{

printf(“Thismanis%c,thisman);

g=1;

}

}

if(g!

=1)

printf(“Can'tfoUnd

}

12、参考答案⑴:

#include

voidmain()

{

inti,j;

for(j=1;j<=i-1;j++)//输出每行前的空格

printf(“”);

for(j=1;j<=5-2*(i-1);j++)〃输出每行的*号

printf(“*”);

printf(n"");

}

for(i=1;i<=2;i++)//接着显示后两行

{

for(j=1;j<=2-i;j++)

printf(“”);

for(j=1;j<=2*i+1;j++)

printf(“*”);

printf(n"");

}

}

参考答案

(2):

#include

voidmain()

{

inti,j,k;

for(i=1;i<=5;i++)//i控制行数

{

for(j=1;j<=5-i;j++)//随行数的增加,输出递减数目的空格

printf(“”);

for(k=1;k<=5;k++)//每行输出5个*字符

printf(“*”);

printf(n“);〃将光标移到下一行起始位置处

}

参考答案(3):

#include

voidmain()

{

inti,j;

for(i=1;i<=5;i++)

{

for(j=1;j<=2*(i-1)+1;j++)

printf(“*”);

printf(n”

}

}

习题7参考答案

编程题

1、参考答案:

#include

void

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 判决书

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

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