C程序设计第三版习题参考解答.docx

上传人:b****5 文档编号:3160688 上传时间:2022-11-18 格式:DOCX 页数:117 大小:109.95KB
下载 相关 举报
C程序设计第三版习题参考解答.docx_第1页
第1页 / 共117页
C程序设计第三版习题参考解答.docx_第2页
第2页 / 共117页
C程序设计第三版习题参考解答.docx_第3页
第3页 / 共117页
C程序设计第三版习题参考解答.docx_第4页
第4页 / 共117页
C程序设计第三版习题参考解答.docx_第5页
第5页 / 共117页
点击查看更多>>
下载资源
资源描述

C程序设计第三版习题参考解答.docx

《C程序设计第三版习题参考解答.docx》由会员分享,可在线阅读,更多相关《C程序设计第三版习题参考解答.docx(117页珍藏版)》请在冰豆网上搜索。

C程序设计第三版习题参考解答.docx

C程序设计第三版习题参考解答

C程序设计(第三版)课后习题参考解答

第1章C语言概述

1.5参照本章例题,编写一个C程序,输出以下信息:

******************************

VeryGood!

******************************

解:

main()

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

printf(“\n”);

printf(“VeryGood!

\n”);

printf(“\n”);

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

}

1.6写一个程序,输入a,b,c三个值,输出其中最大者。

解:

main()

{inta,b,c,max;

printf(“请输入三个数a,b,c:

\n”);

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

max=a;

if(max

max=b;

if(max

max=c;

printf(“最大数为:

%d”,max);

}

第2章程序的灵魂——算法

2.1什么叫结构化的算法?

为什么要提倡结构化的算法?

解:

由一些基本结构顺序组成的算法称为结构化的算法。

由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。

2.7什么叫结构化程序设计?

它的主要内容是什么?

解:

结构化程序就是用高级语言表示的结构化算法。

它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。

第3章数据类型、运算符与表达式

3.3请将下面各数用八进制和十六进制数表示:

(1)10

(2)32(3)75(4)-617

(5)-111(6)2483(7)-28654(8)21003

解:

(1)(10)10=(12)8=(A)16

(2)(32)10=(40)8=(20)16

(3)(75)10=(113)8=(4B)16

(4)(-617)10=(176627)8=(FD97)16

此题可以这样考虑:

带符号数在计算机中采用补码表示,正数的补码与原码相同,负数的补码=模+真值。

若使用16位存储,模为216=65536。

-617的补码为65536+(-167)=64919=(176627)8=(FD97)16

(5)(-111)10=(177621)8=(FF91)16

(6)(2483)10=(4663)8=(9B3)16

(7)(-28654)10=(110022)8=(9012)16

(8)(21003)10=(51013)8=(520B)16

3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。

变量的类型

25

-2

32769

int型

long型

sort型

signedchar(8位)

unsignedint型

unsignedlong型

unsignedshort型

unsignedchar型

注:

如果没有学过二进制和补码,此题可以不做。

解:

各数据在内存中的存储形式如下表所示:

变量的类型

25

-2

32769

int型

00…000011001

8位

111111*********0

15

100…001(溢出)

14

long型

00…000011001

24

11…1110

31

00…0100…001

1614

short型

100…000011001

8

111111*********0

15

100…001(溢出)

14

signedchar(8位)

100011001

11111110

00000001(溢出)

unsignedint型

00…000011001

8

11…110

15

100…001

14

unsignedlong型

00…000011001

24

11…110

31

00…0100…001

1614

unsignedshort型

00…000011001

8

11…110

15

100…001

8

unsignedchar型

00011001

11111110

00000001

其中int和short类型,其取值范围是-32768~32767。

32769在这两种类型中实际表示负数,它是一个负数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。

char和unsignedchar为8位,若将int或long类型数据赋给这种类型,则截取数据低8位。

同理,若将long赋给int,则截取低16位。

3.5字符常量和字符串常量有什么区别?

解:

字符常量是一个字符,用单引号括起来。

字符串常量是由0个或若干个字符组合而成,用双引号括起来,存储时自动在字符串最后加一个结束符号’\0’。

3.6写出以下程序运行的结果:

main()

{charcl=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);

printf(“\t\b%c%c”,c4,c5);

}

解:

程序运行的结果为:

aabbccabc

AN

3.7要将“China”译成密码,密码规律是:

用原来的字母后面第4个字母代替原来的字母。

例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。

因此,“China”应译为“Glmre”。

请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’,’h’,’i’,’n’,’a’,经过运算,使c1,c2,c3,c4,c5的值分别变为’G’,’l’,’m’,’r’,’e’,并输出。

解:

main()

{charcl=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;

c1+=4;

c2+=4;

c3+=4;

c4+=4;

c5+=4;

printf(“密码是%c%c%c%c%c\n,c1,c2,c3,c4,c5);

}

运行结果:

密码是Glmre

3.8例2.6能否改成如下:

main()

{intc1,c2;(原为charc1,c2)

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);

printf(“%d%d\n”,c1,c2);

}

解:

可以。

因为在可输出的字符范围内,用整型和用字符型作用相同。

3.9求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4

设x=2.5,a=7,y=4..7

(2)(float)(a+b)/2+(int)x%(int)y

设a=2,b=3,x=3.5,y=2.5

解:

(1)2.5

(2)3.5

3.10写出程序运行的结果。

main()

{inti,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n);

}

解:

运行结果为:

9,11,9,10

3.11写出下面赋值的结果。

格中写了数值的是要将它赋给其他类型的变量,将所有空格填上赋值后的数值。

int

99

42

char

‘d’

unsignedint

76

65535

float

53.65

longint

68

解:

int

99

100

76

53

68

42

-1

char

‘c’

‘d’

‘L’

‘5’

‘D’

‘*’

unsignedint

99

100

76

53

68

42

65535

float

99.000000

100.000000

76.000000

53.65

68.000000

42.000000

65535.000000

longint

99

100

76

53

68

42

65535

3.12出下面表达式运算后a的值,设原来a=12。

设a和n都已定义为整型变量。

(1)a+=a

(2)a-=2

(3)a*=2+3(4)a/=a+a

(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a

解:

(1)24

(2)10

(3)60(4)0

(5)0(6)0

第4章最简单的C程序设计——顺序程序设计

4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51247,n=128765,c1=’a’,c2=’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

要求输出的结果如下:

a=□3□□b=□4□□c=□5

x=1.200000,y=2.400000,z=-3.600000

x+y=□3.60□□y+z=-1.20□□z+x=-2.40

u=□51247□□n=□□□128765

c1=’a’□or□97(ASCII)

c2=’b’□or□98(ASCII)

解:

main()

{

inta,b,c;

longintu,n;

floatx,y,z;

charc1,c2;

a=3;b=4;c=5;

x=1.2;y=2.4;z=-3.6;

u=51247;n=128765;

c1=’a’;c2=’b’;

printf(“\n”);

printf(“a=%2d□□b=%2d□□c=%2d\n”,a,b,c);

printf(“x=%.6f,y=%.6f,z=%.6f\n”,x,y,z);

printf(“x+y=□%.2f□□y+z=%.2f□□z+x=%.2f\n”,x+y,y+z,z+x);

printf(“u=%6ld□□n=%9ld\n”,u,n);

printf(“c1=’%c’or%d(ASCII)\n”,c1,c1);

printf(“c2=’%c’or%d(ASCII)\n”,c2,c2);

}

4.5请写出下面程序的输出结果:

main()

{inta=5,b=7;

floatx=67.8564,y=-789.124;

charc=’A’;

longn=1234567;

unsignedu=65535;

printf(“%d%d\n”,a,b);

printf(“%3d%3d\n”,a,b);

printf(“%f,%f\n”,x,y);

printf(“%-10f,%-10f\n”,x,y);

printf(“%8.2f,%8.2f,%4f,%4f,%3f,%3f\n”,x,y,x,y,x,y);

printf(“%e,%10.2e\n”,x,y);

prin

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

当前位置:首页 > 表格模板 > 表格类模板

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

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