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

上传人:b****4 文档编号:18168718 上传时间:2022-12-13 格式:DOCX 页数:27 大小:25.16KB
下载 相关 举报
C语言程序设计课后习题18参考答案文档格式.docx_第1页
第1页 / 共27页
C语言程序设计课后习题18参考答案文档格式.docx_第2页
第2页 / 共27页
C语言程序设计课后习题18参考答案文档格式.docx_第3页
第3页 / 共27页
C语言程序设计课后习题18参考答案文档格式.docx_第4页
第4页 / 共27页
C语言程序设计课后习题18参考答案文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

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

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

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

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、A13、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、C3、A4、B5、B6、D7、B8、C9、A10、A11、C12、B13、B14、D15、B16、D17、B18、D19、C20、A21、B22、D23、D24、D25、D26、D27、C28、A29、C30、B

习题4参考答案

1、scanfprintf

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

3、X、E、G

4、getche输入的字符回显,而getch输入的字符不回显

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<

stdio.h>

voidmain()

{

unsignedshorta,b;

scanf(“%4x”,&

a)//输入4位十六进制数给变a

b=(a&

0X000F)<

<

12;

//取a的最低一位十六进制数并左移12位后赋值给b

b+=(a&

0X00F0)<

4;

//取a的次第一位十六进制数并左移4位后与b相加再赋值给b

0X0F00)<

//取a的次高一位十六进制数并右移4位后与b相加再赋值给b

0XF000)<

//取a的最高一位十六进制数并右移12位后与b相加再赋值给b

printf(“%4x\n”,b);

//输出变化后的十六进制数

}

2、编程从键盘输入两个整数分别给变量a和b,要求在不借助于其他变量的条件下,将变量a和b的值实现交换。

inta,b;

scanf(“%d%d”,&

a,&

b);

printf(“beforeswap:

a=%db=%d\n”,a,b);

a=a+b;

b=a-b;

a=a-b;

printf(“afterswap:

a=%db=%d\n”,a,b);

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

#definePI3.14159

floatr,c,s;

scanf(“%f”,&

r);

c=2*r*PI;

s=PI*r*r;

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

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

输入-FA98,输出-FA98。

shortinta;

scanf(“%x”,&

a);

printf(“-%hx\n”,-a);

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

math.h>

floata,b,c;

floatd;

floatx1,x2;

printf(“inputa,b,c:

”);

scanf(“%f%f%f”,&

b,&

c);

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

x1=(-b+d)/(2*a);

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

printf(“x1=%.2fx2=%.2f\n”,x1,x2);

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

s),遍一程序计算到现在为止已近过了多少天,现在的时间是多少?

unsignedlongt,r;

intd,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(“havepasseddaysis%d,currenttimeis%02d:

%02d:

%02d\n”,d,h,m,s):

习题5参考答案

编程题

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

inta;

if(a>

=0)

printf(“thenumber%dispositivenumber\n”,a);

else

printf(“thenumber%disnegativenumber\n”,a);

if(a%2==0)

printf(“thenumber%disevennumber\n”,a);

printf(“thenumber%disoddnumber\n”,a);

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

#include<

voidmain()

{

intx,sign;

scanf(“%d”,&

x);

if(x>

0)

sign=1;

elseif(x==0)

sign=0;

sign=-1;

printf(“sign=%d\n”,sign);

}

3、输入任意三个数num1、num2、num3,按从小到大的顺序排序输出。

intnum1,num2,num3;

scanf(“%d%d%d”,&

num1,&

num2,&

num3);

if(num1<

=num2)

if(num2<

=num3)

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

if(num1>

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

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

else

if(num2>

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

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

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

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

charc;

printf(“*****Time*****\n”);

printf(“1morning\n”);

printf(“2afternoon\n”);

printf(“3night\n”);

printf(“Pleaseenteryourchoice:

c=getcahr();

switch(c)

case‘1’:

printf(“Goodmorning\n”);

brenk;

case‘2’:

printf(“Goodafternoon\n”);

break;

case‘3’:

printf(“Goodnight\n”);

default:

printf(“Selectionerror!

\n”);

5、输入一个年份和月份,打印出该月份有多少天(考虑闰年),用switch语句编程。

intyear,month;

printf(“Inputyear,month:

scanf(“%d%d”,&

year,&

month);

switch(month)

case1:

case3:

case5:

case7:

case8:

case10:

case12:

printf(“31days\n”);

case4:

case6:

case9:

case11:

printf(“30days\n”);

case2:

if((year%4==0&

&

year%100!

=0)||(year%400==0))

printf(“29days\n”);

printf(“28days\n”);

default:

printf(“Inputerror!

习题6参考答案

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

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

inti,sum=0;

for(i=2;

i<

=100;

i+=2)

sum+=i;

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

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

inti=2,sum=0;

while(i<

=100)

i+=2;

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

inti;

longterm,sum=0;

for(i=1;

=99;

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

sum+=term;

3、编程计算1!

+2!

+3!

+…+10!

的值。

(1)用累加和算法,累加项为term=term*i;

i=1,2,…,10。

Term的初始值为1,使用单重循环完成。

longterm=1,sum=0;

=10;

i++)

term*=i;

printf(“1!

=%ld\n”,sum);

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

inti,j;

term=1;

for(j=1;

j<

=i;

j++)

term*=j;

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

longterm=0,sum=0;

inta,i,n;

printf(“Inputa,n:

scanf(“%d,%d”,&

n);

=n;

term=term*10+a;

printf(“sum=%ld\n”,sum);

5、参考答案:

floatterm,result=1;

intn;

for(n=2;

n<

n+=2)

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

result*=term;

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

6、参考答案:

intn=1,count=0;

floatx;

doublesum,term;

printf(“Inputx:

”)

scanf(“%f”,&

sum=x;

term=x;

do

term=-term*x*x/((n+1)(n+2));

//计算相应项,并改相应符号

n+=2;

count++;

}while(fabs(term)>

=le-5);

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

7、参考答案:

inti,j,k,n;

printf(“resultis:

for(n=100;

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(“%d”,n);

printf(“\n”);

8、参考答案:

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

printf(“Inputdatais:

k=abs(n);

i1=k/1000;

//分离出千位

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

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

i4=k%10;

//分离出个位

printf(“Thesumofthetotalbitis%d\n”,i1+i2+i3+i4);

9、参考答案:

intn,m=0,s,r;

s=n;

While(s!

r=s%10;

//从低位到高位逐一分离

m=10*m+r;

//重新组合一正数

s=s/10;

//求其商

if(m==n)

printf(“yes\n”);

printf(“no\n”);

10、参考答案:

intx,y,z,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(“%02d,%02d,%02d”,x,y,z);

//输出每一种方案

if(count%6==0)

printf(“\n”);

//没输出6种方案后,换行

printf(“count=%d\n”,count);

11、设计思想:

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

thisman!

=’A’;

对于B的回答:

thisman==’C’;

对于C的回答:

thisman==’D’;

对于D的回答:

=’D’;

然后,采用枚举的方法,一个人一个人的去试,如果这4个条件表达式中有3个为真,即4个条件表达式的值相加为3,则可判定是其中某人做的好事。

参考答案:

intk=0;

sum=0;

g=0;

charthisman=’’;

for(k=0;

k<

=3;

k++)//循环控制变量为k,循环共进行4次

thisman=’A’+k;

//初始认为A做好事,依次为B、C、D

sum=(thisman!

=’A’)+(thisman==’C’)+(thisman==’D’)+(thisman!

=’D’);

if(sum==3)

printf(“Thismanis%c\n”,thisman);

g=1;

if(g!

=1)

printf(“Can’tfound\n”);

12、参考答案

(1):

for(i=1;

i++)//先显示前三行

for(j=1;

=i-1;

j++)//输出每行前的空格

printf(“”);

=5-2*(i-1);

j++)//输出每行的*号

printf(“*”);

=2;

i++)//接着显示后两行

=2-i;

=2*i+1;

参考答案

(2):

voidma

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1