c语言程序设计第五版习题答案

}

【分析与提示】

0(NULL的ASCII码值是0)

49,1(数字1的ASCII码值是49) 58,:,72(48+10等于58,正好是“:”的ASCII码值,八进制表示是72) 【解答】0

49,1 58,:,72 三、改错题

1. 请修改下列程序,使其能够通过编译。

#include Void Main() {

int a=6;b=8; int c; c=a*b;

printf(‘%d’,c); }

【答案】错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。 正确的程序如下: #include void main() {

int a=6,b=8; int c; c=a*b;

printf(\}

2. 请修改下列程序,使其能够正确运行。

#include void main(); {

float f=7.12; char c=”c”;

printf(“%d\\n”,int(f%3)); printf(“%c”,c); }

【答案】错误的地方有3处:(1)第2行main();不应该有分号;(2)定义char c=”c”; 时,字符常量应该用单引号;(3)打印语句printf(“%d\\n”,int(f%3));的格式有错,应该在f前的int用括号括起来,因为实型数据不能执行取余运算。 正确的程序如下: #include void main()

6

{

float f=7.12; char c='c';

printf(\printf(\}

第3章 顺序结构程序设计

一. 简答题

1.程序有哪三种基本结构?

【解答】程序的三种基本结构为:顺序结构、选择结构和循环结构。 2.C语言的语句有哪几类?表达式语句与表达式有什么不同?

【解答】C语句可分为以下五类:表达式语句、函数调用语句、控制语句、复合语句和空语句。其中表达式语句与表达式的区别在于表达式语句是表达式加上“;”组成。 二、填空题

1.符号’&’ 是_______运算符,&a是指_______。 2.C语言中的空语句就是_______。

3.Scanf函数中的“格式字符”后面应该是_______,而不应该是______。 4.若想输出字符%,则应该在“格式字符”的字符串中用_____表示。 5.int x=7;执行x+=x- =x+x;后x的值是_______。

6.int a=10,b=20;a+=b;b=a-b;a- =b; 的功能是_______。 答案:1.地址、变量a的内存地址。

2.一个分号。

3.变量地址,变量名。

4. 连续2个%号。 5. -14

6.交换 变量a,b的值,打印出a=20,b=10。 三.运行程序写结果

1.以下程序的执行结果是 。

#include main() {

double d=3.2;int x,y; x=1.2;y=(x+3.8)/5.0; printf(\

}

【解答】0

2.以下程序的执行结果是 。 main() {

double d;float f;long l;int i; i=f=l=d=20/3;

printf(\

7

}

【解答】6 6 6. 6.

3.以下程序的执行结果是 。 main() { int k=17;

printf(\}

【解答】17,21,11

4.以下程序的执行结果是 。 #include main() {

char a,b,c,d;

a='A',b='B',c='C',d='D'; printf(\ printf(\ printf(\ printf(\

}

【分析与提示】可以用%c格式输出的,也可以用%d格式输出,所以与%md近似,m指出了要输出数据的宽度。若数据位数小于m,则左端补空格,若数据位数大于m,则按实际位数输出。

【解答】A B C D

5.以下程序的执行结果是 。

#include main() { char c1,c2;

scanf(\

printf(\}

【解答】运行输入:AB<回车>

运行结果为:c1=A,c2=A,c3=65,c4=66

6.以下程序的执行结果是 。 #include main() { char c1,c2;

scanf(\ ++c1;

8

--c2;

printf(\

}

【分析与提示】例如当输入B,C<回车>,B,C的ASCII码值为66,67,执行++c1; --c2;后,c1为66+1变成67即C,c2为67-1变成66即B。

【解答】运行输入:B,C<回车>,运行结果为:c1=C,c2=B 7.以下程序的执行结果是 。

main() {

char ch='a';int a=98;

unsigned b=1000;long c=;float x=3.14; double y=1.;

printf(\printf(\printf(\printf(\printf(\printf(\

}

【解答】(1)a=98,a=b,ch=97,ch=a

(2)b=1000 (3)c=

(4)x=3., y=1.

(5)x=3.14000e+00,y=1.23457e+00 (6)y=1.23

8.以下程序的执行结果是 。 #include main() { int a,b; float x;

scanf(\x=a/b;

printf(\

}

【解答】运行输入:2,2<回车>,运行结果为:1.

9.当输入12345,a时,给出程序的运行结果,执行结果是 。 #include main() {

int a;char c;

scanf(\printf(\

9

}

【分析与提示】%md,m指出了要输出数据的宽度。若数据位数小于m,则左端补空格,若数据位数大于m,则按实际位数输出。a的ASCII码值是97。

【解答】12345,97

10.分析下面程序,在键盘上输入数据 才能使得变量a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8。

程序如下:

#include main() { int a,b; float x,y,z; char c1,c2;

scanf(\printf(\

}

【分析与提示】按%5 d格式输入a与b的值时,要先键入三个空格,然后再键入10与20。%*f是用来禁止赋值的。在输入时,对应%*f位置可以随意输入一个数(我们输入1.5,该数不会赋值给任何变量的)。

【解答】运行输入:└┘└┘└┘10└┘└┘└┘20Aa1.5└┘-3.75└┘1.5,67.8 <回车> 11.一个程序中,使用了多个scanf函数输入数据,用a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’ 输入到每个变量,应该如何输入数据?

main() { int a,b; float x,y; char c1,c2;

scanf(\ scanf(\ scanf(\

printf(\

}

【分析与提示】在使用多个scanf函数输入数据时,第一个输入行末尾输入的回车被第二个scanf函数吸收,因此在第二、三个scanf函数的双引号后放置一个空格以抵消上行输入的回车键。若没有一个空格,则按上面输入的数据会出错。

【解答】运行输入:a=3, b=4<回车>

X=8, y=71.82<回车> C1=AC2=a<回车>

运行结果:a=3,b=7,x=8.,y=71.,c1=A,c2=a

四.编程题

1.由键盘输入1个字母,输出其ASCII码值。 【分析与提示】将一个字符常数赋给一个字符变量,并不是把该字符本身放到内存单元中去,而是将该字符的ASCII代码放到内存单元中,因此,字符型数据也可以像整型数据那

10

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4