谭浩强C程序设计第三版课后答案(整本书)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

·

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

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

解:

main ( )

{int a,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章程序的灵魂——算法

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

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

什么叫结构化程序设计它的主要内容是什么

解:结构化程序就是用高级语言表示的结构化算法。它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。

第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)[

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

此题可以这样考虑:带符号数在计算机中采用补码表示,正数的补码与原码相同,负数的补码=模+真值。若使用16位存储,模为216=65536。-617的补码为65536+(-167)=64919=(176627)8=(FD97)

16

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

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

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

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

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

数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。

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

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

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

(

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

# include<>

void main ( )

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

printf (“a%c b%c\t c%c\t abc\n”, c1, c2, c3);

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

}

#

解:程序运行的结果为:

aa bb cc abc

A N

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 ( )

{ char cl=’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例能否改成如下:

main ( )

{ int c1, c2; (原为 char c1, 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=,a=7,y=4..7

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

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

解:

(1)

(2)

3.10写出程序运行的结果。

}

main ( )

{ int i, 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写出下面赋值的结果。格中写了数值的是要将它赋给其他类型的变量,将所有空格填上赋值后的数值。

出下面表达式运算后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

相关文档
最新文档