文档库 最新最全的文档下载
当前位置:文档库 › c语言课后题及参考答案(1)

c语言课后题及参考答案(1)

c语言课后题及参考答案(1)
c语言课后题及参考答案(1)

《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案

(教育部考试中心)高等教育出版社出版

https://www.wendangku.net/doc/1b7383561.html,/user1/39824/archives/2007/20270.html

第一章程序设计基本概念

1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。

答案:.exe

1.2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。

答案:.c .obj .exe

1.3 结构化程序由_____、_____、_____三种基本结构组成。

答案:顺序、选择、循环

第二章 C程序设计的初步知识

一、选择题

2.1 以下选项中正确的整型常量是

A)12. B)-20 C)1,000 D)4 5 6

答案:B

2.2 以下选项中正确的实型常量是

A)0 B)3. 1415 C)0.329×10(2)(10的2次方) D).871

答案:D

2.3 以下选项中不正确的实型常量是

A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2

答案:B

2.4 以下选项中不合法的用户标识符是

A)abc.c B)file C)Main D)PRINTF

答案:A

2.5 以下选项中不合法的用户标识符是

A)_123 B)printf C)A$ D)Dim

答案:C

2.6 C语言中运算对象必需是整型的运算符是

A)% B)/ C)! D)**

答案:A

2.7 可在C程序中用作用户标识符的一组标识符是

A)void define WORD

B)as_b3 _123 If

C)For -abc case

D)2c DO SIG

答案:B

2.8 若变量已正确定义并赋值,符合C语言语法的表达式是

A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b

答案:B

2.9 以下叙述中正确的是

A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。

B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。

C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。

D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。

答案:B

2.10 以下叙述中正确的是

A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。

B)C程序由主函数组成。

C)C程序由函数组成。

D)C程序由函数和过程组成。

答案:C

2.11 TURBO C中int类型变量所占字节数是

A)1 B)2 C)3 D)4

答案:B

2.12 不合法的八进制数是

A)0 B)028 C)077 D)01

答案:B

2.13 不合法的十六进制数是

A)oxff B)0Xabc C)0x11 D)0x19

答案:A

二、填空题

2.14 若k为int整型变量且赋值11。请写出运算k++后表达式的值A)_____和变量的值B)_____。

答案:11、12

2.15 若x为double型变量,请写出运算x=

3.2,++x后表达式的值A)_____和变量的值B)_____。

答案:4.2、4.2

2.16 函数体由符号____开始,用符号____结束。函数体的前面是____部分,其后是____部分。

答案:{、}、定义、执行

2.17 C语言中的标识符可分为____、____、和预定义标识符三类。

答案:关键字、用户标识符

2.18 在C语言程序中,用关键字____定义基本整型量,用关键字____定义单精度实型变量,用关键字___定义双精度实型变量。

答案:int、float、double

2.19 把a1、a2定义成单精度实型变量,并赋初值1的定义语句是____。

答案:float a1=1.0,a2=1.0;

2.20 C程序中定义的变量,代表内存中的一个____。

答案:存储单元

2.21 表达式

3.5+1/2的计算结果是____。

答案:3.5

2.22 对以下数学式,写出三个等价的C语言表达式____、____、____。

a×b

——

c

答案:a*b/c、a/c*b、b/c*a

2.23 表达式s=10应当读做“____”。

答案:将10赋给变量s

2.24 计算机中内存储器的最小存储单位称____,其中能容纳的数是____。

答案:位、0或1

2.25 通常一个字节包含____个二进制位。在一个字节中能存放的最大(十进制)整数是____,它的二进制数的形式是____;最小(十进制)整数是____,它的二进制数的形式是____。

答案:8、255、1111 1111、-128、1000 0000

2.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是____、最小(十进制)整数是____,它的二进制数的形式是____。

答案:65535、-32768、1000 0000 0000 0000

2.27 在C语言中整数可用____进制数、____进制数和____进制数三种数制表示。

答案:十、八、十六

三、上机改错题

2.24 【分析与解答】

第1行的错误:

(1) include是一个程序行,因此在此行的最后不应当有分号(;)。

(2) include程序行中后面的stdio.h是一个文件名,按规定,文件名应当放在一对双引号(″ ″) 内,或放在一对尖括号(< >)内。

第2行的错误:

(1) main()是主函数的起始行,不是语句,因此最后不应当有分号(;)。

(2) 在同一行上的/ * main function * / 显然是注释;C语言规定:注释由/*开头,由*/结束,但在*号和/之间不得插入任何空格,而在此处“/*”和“/*”之间存在空格,因此,/ * main function * /的写法式是错误的,而应写成:/* main function */。

第3行的错误:

(1) 在主函数的起始行main()的后面是函数体,函数体由左花括号({)开始。但在函数体的第一行:float的前面缺少了左花括号({)。

(2) 在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 显然是注释;C语言规定:注释由/*开头,由*/结束,并且开头的/*将去找最近的*/去配对,因此在/* /*r is radius*/中,第一个/*与最后的那个*/配上了对,结果紧跟在后面的那个逗号(,)落在了注释的外面,而构成了一个多余符号,为此,在编译时将报告“语法错”。

第6行的错误:

(1) printf(″%f \[KG-*3]n″,s)应当是一条输出语句,但在最后缺少了一个分号。

(2) printf(″%f \[KG-*3]n″,s);是程序的最后一条语句,程序应当结束;但缺少了程序体结束所需的右花括号(});此右花括号可以放在printf(″%f \[KG-*3]n″,s);的后面,也可以放在printf(″%f \[KG-*3]n″,s);的下一行上。

2.25 【分析与解答】

第1行的错误:在include行中的文件名应该是stdio.h,而不是stdio.a。

第2行的错误:在main的后面缺少一对圆括号。

第4行的错误:在c=4 0的后面缺少分号。

第6行的错误:在printf(″%f \〖KG-*3〗n″,v)的后面缺少分号。

第三章、顺序结构

一、选择题

3.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是

A) a=b=c=100; B) d++; C) c+b; D) d=(c=22)-(b++);

答案:C

3.2 以下选项中不是C语句的是

A) {int i; i++; printf("%d\\n", i); }

B) ; C) a=5,c=10 D) { ; }

答案:C

3.3 以下合法的C语言赋值语句是

A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) --i;

答案:D

3.4 以下程序的输出结果是

A) 0 B) 1 C) 3 D)不确定的值

main()

{

int x=10,y=3;

printf("%d\\n", y=x/y);

}

答案:C

3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是

A) read(a,b,c); B) scanf("%d%d%d",a,b,c);

C) scanf("%D%D%D",&a,&b,&c); D) scanf("%d%d%d",&a,&b,&c);

答案:D

3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是

A) 10 22 33 B) 10.0,22.0,33.0 C) 10.0 22.0 33.0 D) 10 22 33

scanf("%f %f %f", &a, &b, &c);

答案:B

3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是

A) a=a+b,b=a-b,a=a-b; B) t=a,a=b,b=t;

C) a=t; t=b; b=a; D) t=b; b=a; a=t;

答案:C

3.8 若变量已正确定义,以下程序段的输出结果是

A) 输出格式说明与输出项不匹配,输出无定值

B) 5.17000 C) 5.168000 D) 5.169000

x=5.16894;

printf("%f\\n",(int)(x*1000+0.5)/(float)1000);

答案:D

3.9 若有以下程序段,c3中的值是

A) 0 B) 1/2 C) 0.5 D) 1

int c1=1,c2=2,c3;

c3=c1/c2;

答案:A

3.10 若有以下程序段,其输出结果是

A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10

int a=0,b=0,c=0;

c=(a-=a-5),(a=b,b+3);

printf("%d,%d,%d\\n",a,b,c);

答案:B

3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是

A) a=98,b=765,c=4321 B) a=10,b=432,c=8765

C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765,c=4321.0

main()

{

int a; float b,c;

scanf("%2d%3f%4f",&a,&b,&c);

printf("\\na=%d,b=%f,c=%f\\n",a,b,c);

}

答案:C

3.12 以下程序的输出结果是

A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d

main()

{ int a=2,b=5;

printf("a=%%d,b=%%d\\n",a,b);

}

答案:D

3.13 若int类型占两个字节,则以下程序段的输出是

A) -1,-1 B) -1,32767 C) -1,32768 D) -1,65535

int a=-1;

printf("%d,%u\\n",a,a);

答案:D

3.14 以下程序段的输出是

A) *496 * B) * 496* C) *000496* D)输出格式符不合法

int x=496;

printf("*%-06d*\\n",x);

答案:A

3.15 以下程序段的输出是

A) |3.1415| B) | 3.0| C) | 3| D) | 3.|

float a=3.1415;

printf("|%6.0f|\\n",a);

答案:C

3.16 以下程序段的输出是

A) |2345.67800| B) |12345.6780| C) |12345.67800| D) |12345.678|

printf("|%10.5f|\\n",12345.678);

答案:C

3.17 以下程序段的输出是

A) *0000057.66* B) * 57.66* C) *0000057.67* D) * 57.67*

float a=57.666;

printf("*%010.2f*\\n",a);

答案:C

3.18 若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是

A) scanf("%f",c); B) scanf("%8.4f",&c);

C) scanf("%6.2f",&c); D) scanf("%8",&c);

283.1900 表示Enter键

答案:由于印刷错误,本题没有正确答案。改正意见:

把选项A改为:scanf("%f",&c);或者把选项D改为:scanf("%8f",&c);则可分别选择A或者D为正确答案。

3.19 若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(□代表空格)

A) 3.12□□9.0B) a=□□3.12b=□□□9

C) a=3.12,b=9 D) a=3.12□□,b=9□□□□

scanf("a=%f,b=%f",&a,&b); 表示Enter键

答案:C

3.20 以下程序的输出结果是

A) 9 8 B) 8 9 C) 6 6 D) 以上三个都不对

#include "math.h"

main()

{ double a=-3.0, b=2;

printf("%3.0f %3.0f\\n",pow(b,fabs(a)),pow(fabs(a),b));

}

答案:B

二、填空题

3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。

(1)____(2)____(3)____

int i=-200,j=2500;

printf("(1) %d %d",i,j);

printf("(2) i=%d, j=%d\\n",i,j);

printf("(3) i=%d\\n j=%d\\n",i,j);

答案:

-200 2500

i=-200, j=2500

i=-200

j=2500

3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时

scanf("%d",&i); scanf("%d",&j); scanf("%d",&k);

当执行第一个输入语句,从键盘输入:

12.3 表示Enter键

则变量i、j、k的值分别是____、____、____。

答案:12、0、0

3.23 复合语句在语法上被认为是____。空语句的形式是____。

答案:一条语句、;

3.24 C语句的最后用____结束。

答案:;

3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式____、_____、____。

int k; float a; double x;

scanf("%d%f%lf",&k,&a,&x);

printf("k=%d,a=%f,x=%f\\n",k,a,x);

答案:

(1) 100 25.81 1.89234

(2) 100 25.811.89234

(3) 100 25.81 1.89234

3.26 以下程序段的输出结果是____。

int x=0177;

printf("x=%3d,x=%6d,x=$%6o,x=%6x,x=%6u\\n",x,x,x,x,x);

答案:x=127,x= 127,x= 177,x= 7f,x= 127

3.27 以下程序段的输出结果是____。

int x=0177;

printf("x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\\n",x,x,x,x,x);

答案:27、x=127,x=127 ,x=$127 ,x=$000127,x=%06d

3.28 以下程序段的输出结果是____。

double a=513.789215;

printf("a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf\\n",a,a,a,a);

答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500

三、编程题和改错题

3.16 【分析与解答】

(1) 主函数名main后应有一对圆括号。

(2) 变量定义语句中,v的前面缺逗号。

(3) 第三行的printf语句用以提示输入,但是原样输出的字符串没有用双引号括起来;另外,从输入的形式看,输入的数据紧跟在提示之后,因此,printf格式串中最后不应该有换行符——\n。

(4) 因为输入项a、b、c从定义和计算结果来看都是double类型,因此,第四行scanf语句格式串中的格式说明不应当用%d而应当用%lf;且每一个变量之前应该加地址运算符&。

(5) 第七行的printf语句中应当把%d都改成%lf或%f;按输出要求在格式串中应添加相应的原样输出的字符;因为下一个print f的输出从新的一行开始,因此在本输出语句的格式串的最后应当加换行符——\n。

(6) 第八行的printf语句中应当把格式串整理合并放在输出项的前面,输出项放在后面,%d都改成%lf或%f;中间的\n删去。

(7) 请读者自己写出修改后的程序,并上机调试。

3.17【分析与解答】

(1) 分析:可用算术式560÷60把分钟换算成小时和分钟,商数就是小时数,余数就是分钟数。

(2) 确定变量的名字和定义变量的类型:在程序中把小时数放在变量h中,把分钟数放在变量m中。这两个变量的类型可以是整型(本题中采用整型),也可以是实型。

(3) 确定所用算法:求〖SX()560〖〗60〖SX〗〗的商数,在C语言中可以用整除的算法,语句是h=560/60;。求余数可用求余运算符 %:560%60,其值放入变量m中的语句是:m=560%60;。(4) 设计输出格式。若输出的形式定为:小时:分钟,则按此形式设计输出语句。

(5) 把以上内容放在主函数的一对花括号中。

(6) 编写程序如下:

main()

{ int h, m;

h=560/60;

m=560%60;

printf(″The result: %3d : %3d\n″, h,m);

}

运行结果是:

The result: 9 : 20

3.18 【分析与解答】

(1) 确定变量的名字和定义变量的类型。若用a存放1500,用b存放350;用q存放商数,用r存放余数,所有变量应定义成in t类型。

(2) 设计输入语句从终端输入1500和350;在输入语句之前,应当设计一个输出语句,用以提示输入。

(3) 可用整除求商数,结果放在变量q中。可用求余运算符%求两数之余数,结果放在变量r中。

(4) 设计输出语句。输出a、b、q、r。

(5) 把以上内容放在主函数的一对花括号中。

本题的程序与3.30相似,请读者参考上题并根据本题的解释自己编程,并上机调试。

3.19 【分析与解答】

(1) 定义4个双精度变量a、b、c和ave,变量a、b、c分别存放读入的3个双精度数,ave存放它们的平均值。

(2) 设计输入语句,以及在此之前用于提示输入的(printf)语句。

(3) 设计求平均值的算法,把所求得的平均值放入变量ave中。

(4) 设计把变量ave中的数,从小数点后第二位数进行四舍五入的算法。现举例说明:若ave中的数为123.4644,为了保留此值小数点后一位,可用表达式:(int)(123.4644*10)/10.0;依次推算,为了保留此值小数点后二位,可用表达式:(int)(123.464 4*100)/100.0;其他依此类推。

(5) 若要求对小数点后第二位数进行四舍五入,则可对原数加0.05后再进行以上运算。如要求保留123.4644小数点后一位且对第二位数进行四舍五入,可用表达式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用实数10.0而不能用整数10,否则就变成整除了;若要求保留123.4644小数点后两位且对第三位数进行四舍五入,可用表达式:(int)((123.467+0.005)*100)/10 0.0;其他依此类推。

(6) 设计输出语句。输出a、b、c和ave。

(7) 把以上内容放在主函数的一对花括号中。

(8) 编写程序如下:

main()

{ double a,b,c,ave;

printf(″Enter a ,b ,c : ″);

scanf(″%lf%lf%lf″, &a, &b, &c );

ave=(a+b+c)/3;

printf(″ave=%f\n″, ave); /*用以比较四舍五入前后的数据*/

ave=(int)((ave+0.05)*10)/10.0;

printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave);

}

3.20 【分析与解答】

(1) 关于对变量中的数进行交换的算法请参考3.7题中的解释和《教程》中有关的例题。

(2) 定义4个整型变量a、b、c和t,变量a、b、c分别存放读入的3个整数,t用作临时存储单元。

(3) 设计输入语句,以及在此之前用于提示输入的(printf)语句。

(4) 输出a、b、c中的值,以便于比较。

(5) 交换的步骤如下:

①把c中的值赋给t。

②把b中的值赋给c。

③把a中的值赋给b。

④把t中的值赋给a。

经过以上步骤,已按要求进行了交换。

(6) 输出a、b、c中的值。

(7) 编写程序如下:

main()

{ int a, b, c, t;

printf(″Enter a, b, c :\n″);

scanf(″%d%d%d″,&a,&b,&c);

printf(″(1) a=%d,b=%d,c=%d\n″,a,b ,c);

t=c; c=b; b=a; a=t;

printf(″(2) a=%d,b=%d,c=%d\n″,a,b,c);

}

第四章、选择结构

一、选择题

4.1 下列运算符中优先级最高的运算符是

A) ! B) % C) -= D) &&

答案:A

4.2 下列运算符中优先级最低的运算符是

A) || B) != C) <= D) +

答案:A

4.3 为表示关系x≥y≥z,应使用的C语言表达式是

A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)

C) (x>=y>=z) D) (x>=y)&(y>=z)

答案:A

4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是

A) a&&b B) a<=b C) a||b+c&&b-c D) !((a

答案:D

4.5 以下程序的输出结果是

A) 0 B) 1 C) 2 D) 3

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c+=1;

printf("%d\\n",c);

}

答案:C

4.6 以下程序的输出结果是

A)1 B) 2 C) 3 D) 4

main()

{ int w=4,x=3,y=2,z=1;

printf("%d\\n",(w

}

答案:A

4.7 若执行以下程序时从键盘上输入3和4,则输出结果是

A) 14 B) 16 C) 18 D) 20

main()

{ int a,b,s;

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

s=a;

if(a

s*=s;

printf("%d\\n",s);

}

答案:B

4.8 下面的程序片段所表示的数学函数关系是

-1(x<0)

A) y= 0(x=0)

1(x>0)

1(x<0)

B) y= -1(x=0)

0(x>0)

0(x<0)

C) y= -1(x=0)

1(x>0)

-1(x<0)

D) y= 1(x=0)

0(x>0)

y=-1;

if(x!=0) y=1;

if(x>0) y=1;

else y=0;

答案:A

4.9 运行以下程序后,输出

A) **** B) &&&&

C) ####&&&& D) 有语法错误不能通过编译

{ int k=-3;

if(k<=0) printf("****\\n")

else printf("&&&&\\n");

}

答案:D

4.10 若a和b均是正整型变量,以下正确的switch语句是

A) switch(pow(a,2)+pow(b,2))

{ case 1: case 3: y=a+b; break;

case 0: case 5: y=a-b;

}

B) switch(a*a+b*b);

{ case 3:

case 1: y=a+b; break;

case 0: y=b-a; break;

}

C) switch a

{ default: x=a+b;

case 10: y=a-b; break;

case 11: x=a*d; break;

}

D) switch (a+b)

{ case10 : x=a+b; break;

case11 : y=a-b; break;

}

答案:没有正确答案。如果C选项改为:

switch(a)

{ default: x=a+b;

case 10: y=a-b; break;

case 11: x=a*b; break;

}

则答案可以选择C

二、填空题

4.11 C语言中用____表示逻辑值“真”,用____表示逻辑值“假”。

答案:非0、0

4.12 C语言中的关系运算符按优先级别是____、____、____、____。

答案:>、<、>=、<=、==、!=

4.13 C语言中的逻辑运算符按优先级别是____、____、____。

答案:!、&&、||

4.14 C语言中的关系运算符和逻辑运算符的优先级别是____、____、____、____、____、____、____。

答案:!、<、>、==、!=、&&、||

4.15 C语言中逻辑运算符____的优先级高于算术运算符。

答案:!

4.16 将下列数学式改写成C语言的关系表达式或逻辑表达式A)____B)____。

A)a=b或a4

答案:A)a==b||a4||x<-4

4.17 请写出以下程序的输出结果____。

main()

{ int a=100;

if(a>100) printf("%d\\n",a>100);

else printf("%d\\n",a<=100);

}

答案:1

4.18 请写出与以下表达式等价的表达式A)____B)____。

A) !(x>0) B) !0

答案:A) x<=0 B) 1

4.19 当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为____、____、____。

b=a; a=c; c=b;

答案:3、2、2

4.20 若变量已正确定义,以下语句段的输出结果是____。

x=0; y=2; z=3;

switch(x)

{ case 0: switch(y==2)

{ case 1: printf("*"); break;

case 2: printf("%"); break;

}

case 1: switch(z)

{ case 1: printf("$");

case 2: printf("*"); break;

default : printf("#");

}

}

答案:*#

三、编程题

4.21 【分析与解答】相关内容请参考《教程》4.2节和4.4节。

(1) 改写如下:

switch(a/10)

{ default : m=5; break;

case 0 : case 1 : case 2 : m=1; break;

case 3 : m=2; break;

case 4 : m=3; break;

case 5 : m=4; break;

};

(2) 本题中对a的判断条件有一定的规律可寻;关键是,在switch语句后的表达式中利用了a/10,从而简化了case标号。

4.22 【分析与解答】

编写本题的程序,首先要解决如何计算学生当前的年龄(设存放实足年龄的变量是age)。

(1) 如果当前的月份大于生日的月份,则学生的实足年龄age=y1-y0。

(2) 如果当前的月份等于生日的月份,就要看日数,当前的日数大于或等于生日的日数,则学生的实足年龄age=y1-y0。

(3) 如果不满足以上的条件,就可断定当前的日期没有超过生日日期,就是说学生的年龄应当是age=y1-y0-1。

以上3条,用C语言可以描述如下:

if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0)) age=y1-y0;

else age=y1-y0-1;

读者可以参考以上语句写出程序,也可以根据分析写出与此形式不同的语句和程序。

4.23【分析与解答】

(1) 若输入的整数a是奇数,输出 dd number,是偶数输出:even number。

(2) 若一个a是偶数,它就能被2除尽,即a%2==0,输出even number;若是奇数,

它就不能被2除尽,即a%2!〖KG-*2〗=0,输出odd number。

读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。

4.24 【分析与解答】

本题的主要算法是从3个数中找出最大的那个数。假定始终把最大的数放在变量max中。

(1) 假定a中的数最大,把a赋给max。

(2) 用b去和max比较,若b大于max,则把b赋给max;若不大于max,则什么也不做。

(3) 用c去和max比较,若c大于max,则把c赋给max;若不大于max,则什么也不做。

(4) 经过以上操作,max中已放入了a、b、c三个数中的最大数,输出max即可。

读者可以参考以上给出的算法,写出相应的C语句,并编写出完整的程序。

4.25 【分析与解答】

(1) 本题已给出了非常明确的条件,只要写出正确的条件判断语句就可基本完成程序的编写。

(2) 由给出的函数可知,只有x的值在规定的范围内时,才求出y的值,因此程序应当对输入的x进行判断,若超过范围就不求y的值。

(3) 现以使用if[CD#*2]else语句为例写出程序供参考。

main()

printf(″Enter x : ″); scanf(″%d″, &x); if(x>-5&&x<10)

{ if(x==0) y=x-1;

else if(x<10 && x>0 ) y=x+1;

else if(x<0 && x>-5) y=x;

printf(″x=%d y=%d\n″, x,y);

}

printf(″***END***\n\n″);

}

第五章、循环结构

一、选择题

5.1 以下程序段的输出结果是

A) 9 B) 1 C) 11 D) 10

int k,j,s;

for(k=2; k<6; k++,k++)

{ s=1;

for(j=k; j<6; j++) s+=j;

}

printf("%d\\n", s);

答案:D

5.2 以下程序段的输出结果是

A) 12 B) 15 C) 20 D) 25

int i,j,m=0;

for(i=1; i<=15; i+=4)

for(j=3; j<=19; j+=4) m++;

printf("%d\\n", m);

答案:C

5.3 以下程序段的输出结果是

A) 10

9

8

B) 9

8

7

C) 10

9

8

7

D) 9

8

7

6

int n=10;

while(n>7)

{ n--;

printf("%d\\n", n);

}

5.4 以下程序段的输出结果是

A) 1 B) 3 0 C) 1 -2 D) 死循环

int x=3;

do

{ printf("%3d",x-=2); }

while(!(--x));

答案:C

5.5 以下程序段的输出结果是

A) 15 B) 14 C) 不确定 D) 0

main()

{ int i,sum;

for(i=1; i<6; i++) sum+=sum;

printf("%d\\n",sum);

}

答案:C

5.6 以下程序段的输出结果是

A) 741 B) 852 C) 963 D) 875421

main()

{ int y=10;

for(; y>0; y--)

if(y%3==0)

{ printf("%d", --y); continue; }

}

答案:B

5.7 若x是int型变量,以下程序段的输出结果是

A) **3

##4

**5

B) ##3

**4

##5

C) ##3

**4##5

D) **3##4

**5

for(x=3; x<6; x++)

printf((x%2)?("**%d"):(##%d\\n"),x);

答案:D

5.8 以下程序的输出结果是

A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$

main()

{ int i;

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

{ if(i%2) printf("*");

else contionue;

printf("#");

}

printf("$\\n");

}

5.9 以下叙述正确的是

A) do_while语句构成的循环不能用其它语句构成的循环来代替。

B) do_while语句构成的循环只能用break语句退出。

C) 用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。

D) 用do_while语句构成循环时,只有在while后的表达式为零时结束循环。

答案:D

5.10 以下程序的输出结果是

A) 39 81 B) 42 84 C) 26 68 D) 28 70

main()

{ int x,i;

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

{ x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%d ", x);

}

printf("\\n");

}

答案:D

二、填空题

5.11 当执行以下程序段后,i的值是____、j的值是____、k的值是____。

int a,b,c,d,i,j,k;

a=10; b=c=d=5; i=j=k=0;

for( ; a>b; ++b) i++;

while(a>++c) j++;

do k++; while(a>d++);

答案:5、4、6

5.12 以下程序段的输出结果是____。

int k,n,m;

n=10; m=1; k=1;

while(k<=n) m*=2;

printf("%d\\n",m);

答案:死循环

5.13 以下程序的输出结果是____。

main()

{ int x=2;

while(x--);

printf("%d\\n",x);

}

答案:-1

5.14 以下程序段的输出结果是____。

int i=0,sum=1;

do { sum+=i++; }while(i<5);

printf("%d\\n",sum);

答案:11

5.15 有以下程序段:

s=1.0;

for(k=1; k<=n; k++) s=s+1.0/(k*(k+1));

printf("%f\\n",s);

请填空,使下面的程序段的功能完全与之等同。

s=0.0;

____;

k=0;

do

{ s=s+d;

____;

d=1.0/(k*(k+1));

}

while(____);

printf("%f\\n",s);

答案:d=1.0、k++、k<=n

5.16 以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。 main()

{ float x,amax,amin;

scanf("%f",&x);

amax=x; amin=x;

while(____)

{ if(x>amax) amax=x;

if(____) amin=x;

scanf("%f",&x);

}

printf("\\namax=%f\\namin=%f\\n",amax,amin);

}

答案:x>=0、x

三、编程题

5.17【分析与解答】

(1) 本题的基本算法是求累加值。累加项的值有规律的递增,每一项的绝对值比前一项增2,因此可以利用循环的控制变量的递增来得到累加项的绝对值。例如:

for( i=1; i<=101; i+=2 )…

(2) 按所给的算式可以看到,累加项的符号是在交叉改变的,为此应当在循环体内设

置一个变量,使它的符号按此规律交叉改变,这可用:s=-s;来实现,s的初值为1;当s的值为1时,赋值后s中新的值为-1,当s的值为-1时,赋值后s中新的值为1。用s去乘累加项,将使累加项的符号也随之有规律地改变。

(3) 若累加和放在变量sum中,累加项放在变量t中,按照以上叙述,for循环体内的语句可以设计如下:

s=-s; t=s*i; sum=sum+t;

(4) sum的值是51。

(5) 请读者自己对变量做出正确的定义并赋初值,设计输出语句,完善程序。

5.18 【分析与解答】

(1) 本题的基本算法是求累加值。累加项的分子部分都是1;分母的值有规律的递增,依次为1!、2!、…、n!,即,若第i-1项的累加项为

t(i-1) ,则第i项的累加项是 t( i-1)*i,在程序中可用表达式:t=t/i(i从1变化到n)来表示。

(2) 根据以上分析,若用变量t来存放累加项,当i的值从1变化到n时,可用以下语句来实现累加:

t=t/i; e+=t;

(3) 为了实现累加过程,以上语句应当放在循环内,循环控制变量从1变化到n。

(4) 若用for循环,按题目要求已指定n的值是50。若用while循环,并没有指定n的值,但已指定了循环结束的条件,当t的值小于10 -4 结束循环。

(5) 现例示用while循环来求e值的部分程序:

i=1; e=1.0; t=1.0;

while( t>=1e-4 )

{ t=t/i;

e+=t;

i++;

}

(6) 请读者自己对变量做出正确的定义,设计输出语句,完善程序;也可以参考此程序段,

按照自己的思路独立地完成程序。

(7) e的值应当是:2.71828。

(8) 根据以上分析,读者已不难用for循环来实现求e值的计算。

(9) 注意:在完成此程序时,不要对分母中的阶乘值进行单独计算,因为17!的值已超过long类型的最大值,更无法求到50!。

5.19【分析与解答】

(1) 从1880年至2000年的年数可用一个for循环来取得。

(2) 对每一年,用以上指定的条件来进行判断,若满足条件即为闰年,进行输出。

(3) 按输出的要求,需要设一个变量用于统计一行中输出的个数,若在一行上已连续输出了5个年数,就需输出一个换行符,使下一个输出项在新的一行上开始;若用变量n来做此统计,则当表达式n%5==0时就应输出一个换行符,同时使n重新置0值。

(4) 若变量y代表年数,if语句的逻辑表达式可以写成如下:

(y%4==0 && y%100!=0[JB>1|][JB>1|]y%400==0)

(5) 以下程序段供参考:

for ( y=1880; y<=2000; y++ )

if(y%4==0 && y%100![KG-*2]=0[JB>1|][JB>1|]y%400==0)

{ printf(″%d ″,y);

n++;

if(n%5==0)

{ printf(″\n″); n=0; }

}

(6) 请读者自己对变量做出正确的定义并赋初值,完善程序;也可以参考此程序段,按照自己的思路独立地完成程序。从1880年至2000年有30个闰年。

5.20 【分析与解答】

(1) 不难理解利用以下的for循环可以在一行上连续输出n个*号:

for(i=1; i<=n; i++) printf(″*″);

printf(″\n″);

若n的值是6,则连续输出6个*号。

(2) 以上图形是在各行上输出数目不等的*号,只是*号的数目依次有规律地变化。在上半部分各行依次是1、3、5、7个,因此可以用以下的程序段来实现这样的输出:

for(k=1;k<=7;k++,k++)

{ for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

在下半部依次是5、3、1个;因此可以用以下的程序段来实现这样的输出:

for(k=5;k>=1;k--,k--)

{ for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

以上程序段从第一列起输出的结果如下:

*

***

*****

*******

*****

***

*

现在我们已完成了在每行输出指定数目的*号。

(3) 输出结果与题目要求不同,它们的区别是:按题目每一行之前有不同的空格,而这里则是所有的行都在第一列上开始输出*号;所以接着就应当解决这一问题。

(4) 分析题目要求,每行第一个*号位置的缩进是有规律的,假定中间这一行第一个*号位置是在第一列,则可看出,第一至第三行的缩进分别是3、2、1个空格;而图形下半部的缩进数则刚好相反。这可在以上循环中添加输出连续空格的for循环来实现,对于上半部程序如下:

b=3;

for(k=1;k<=7;k++,k++)

{ for(j=1;j<=b; j++)printf(″″);

b--;

for(i=1;i<=k; i++)printf(″*″);

printf(″\n″);

}

(5) 请读者在理解以上给出的示例的基础上,自己添加下半部空格的输出。

第六章、字符型数据

一、选择题

6.1 C语言中的简单数据类型有

A) 整型、实型、逻辑型 B) 整型、实型、字符型

C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型

答案:B

6.2 C语言中,字符(char)型数据在微机内存中的存储形式是

A) 反码 B) 补码 C) EBCDIC码 D) ASCII码

答案:D

6.3 设有语句char a=\'\'\\72\'\';,则变量a

A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法

答案:A

6.4 C语言中不合法的字符常量是

A) \'\'\\0xff\'\' B) \'\'\\65\'\' C) \'\'&\'\' D) \'\'\\028\'\'

答案:本题A)和D)选项都是不合法的字符常量。若A)选项改为\'\'\\xff\'\',则正确。

6.5 C语言中不合法的字符串常量是

A) "\\121" B) \'\'y=\'\' C) "\\n\\n" D) "ABCD\\x6d"

答案:B

6.6 判断char型变量c是否为大写字母的最简单且正确的表达式是

A) \'\'A\'\'<=c<=\'\'Z\'\' B) (c>=\'\'A\'\')&(c<=\'\'Z\'\') C) (\'\'A\'\'<=c)AND(\'\'Z\'\'>=c) D) (c>=\'\'A\'\')&&(c<=\'\'Z\'\')

答案:D

6.7 以下程序的输出结果是

A) 因输出格式不合法,无正确输出 B) 65,90

C) A,Y D) 65,89

main()

{ char c1=\'\'A\'\',c2=\'\'Y\'\';

printf("%d,%d\\n",c1,c2);

}

答案:D

6.8 以下程序段的输出结果是

A) A B) a C) Z D) z

main()

{ char x=\'\'A\'\';

x=(x>=\'\'A\'\'&&x<=\'\'Z\'\')?(x+32):x;

printf("%c\\n",x);

}

答案:B

6.9 以下程序的输出结果是

A) 67,C B) B,C C) C,D D) 不确定的值

main()

{ char ch1,ch2;

ch1=\'\'A\'\'+\'\'5\'\'-\'\'3\'\';

ch2=\'\'A\'\'+\'\'5\'\'-\'\'3\'\';

printf("%d,%c\\n",ch1,ch2);

}

答案:A

6.10 对以下程序,从第一列开始输入数据:2473代表Enter。程序的输出结果是

A) 668977 B) 668966 C) 66778777 D) 6688766

#include "stdio.h"

main()

{ int c;

while((c=getchar())!=\'\'\\n\'\')

{ switch(c-\'\'2\'\')

{ case 0 :

case 1 : putchar(c+4);

case 2 : putchar(c+4); break;

case 3 : putchar(c+3);

default : putchar(c+2); break;

}

printf("\\n");

}

}

答案:A

6.11 若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是(□代表空格)

A) 2.0□%□4.0□# B) 2.0%4.0#

C) 2%□□4#D) 2□%□4□

scanf("%f%c%f%c",&a,&c1,&b,&c2);

代表Enter键)

答案:B

二、填空题

6.12 EOF的十进制值是____。

答案:-1

6.13 C语言中,字符占内存____个字节。

答案:1

6.14 调用C语言对字符处理的库函数时,在#include命令行中应包括的头文件是____。

答案:string.h

6.15 若输入字符A,在以下while语句执行后ch的值是____。

while(ch=getchar()==\'\'A\'\');

答案:1

6.16 若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是_ ___,请用代表Enter键。

scanf("%d%c%d%c%d%c%d%c",&w,&a,&x,&b,&y,&c,&z,&d);

答案:10A20B30C40D

6.17 若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入

7.29和101.298,从键盘正确输入数据的形式是____。

char c1,c2; float a1,a2;

scanf("%f%f",&a1,&a2); scanf("%c%c",&c1,&c2);

答案:7.29101.298AB

6.18 若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入

7.29和101.298,从键盘正确输入数据的形式是____。

char c1,c2; float a1,a2;

scanf("%c%f%c%f",&c1,&a1,&c2,&a2);

答案:A7.29B101.298

6.19 若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出各种从键盘正确输入数据的形式。

char c1,c2,c;

scanf("%4c",&c1); scanf("%4c",&c2); scanf("%4c",&c3);

答案:A□□□B□□□C□□□

三、编程题

6.20【分析与解答】

(1) 在进行字符输入时,即使一次输入了一行字符(最后用回车结束输入),字符也只能一个一个地读入。若ch已定义为char型变量,可以用以下的程序段来完成操作: ch=getchar();

while(ch![KG-*2]=′\n′)

{ ……

ch=getchar();

}

当读入的是一个回车符时,循环就结束。循环体内的“……”符号表示需要在循环体内完成的其他操作。

(2) 在循环内要求进行的操作之一是:输出每个字符以及与之对应的ASCII代码值。因此可用以下语句来实现。

printf(″%c : %d ″,ch,ch);

(3) 在循环内要求进行的另一个操作是:每行只能输出3对字符和与之对应的ASCII代码值。若n已定义为int型变量,则可用来作计数器;使n的初值为0,每输出一次,n的值增1,当n的值为3的整数倍时,额外输出一个换行符。例如:

n++;

if(n%3==0)putchar(′\n′);

(4) 把(2)和(3)中给出的语句放在循环体内,并按要求给出正确的定义和初值,就可完成题目所要求的操作。

(5) 也可以在while后的一对括号中来完成字符的读入,如while((ch=getchar())![KG-*2]=′\n′)。这时,循环内、外的“c h=getchar();”语句应当去掉。

6.21【分析与解答】

(1) 一行字符的读入,请参照题6.20(1)和(5)中的解释。循环体内的“……”符号表示需要在循环体内完成的其他操作。

ch=getchar();

while(ch![KG-*2]=′\n′)

{ ……

ch=getchar();

}

(2) 在本题中循环体内需要把读入的所有数字字符转换成一个整数。若用变量n来存放这个整数,为了保证有效的存放,应当把它定义成long类型。

(3) 要把输入的一串数字字符转换成一个整数,首先需要判断当前读入的字符是否是数字字符,若不是则什么也不做;若是,则进行以下操作:

①把当前读入的一个字符转换成一个一位整数,这可由语句“d=ch-′0′; ”来实现,在这里d是一个整型变量;

② 把d中的一位数归并到n的低位中,这可用语句“n=n*10+d;”来实现。这里所述的操作可由以下语句来完成:

if(ch>=′0′&&ch<=′9′){ d=ch-′0′; n=n*10+d; }

if语句后一对括号中的判断表达式可以调用字符函数isdigit来实现:

if( isdigit(ch) ) { d=ch-′0′; n=n*10+d; }

if子句的两个语句可以合并成:n=n*10+ch-′0′;。

(4) 把(3)中的语句放入循环中:

ch=getchar();

while(ch![KG-*2]=′\n′)

{ i f(ch>=′0′&&ch<=′9′) n=n*10+ ch-′0′;

ch=getchar();

}

(5) 请自己写出定义语句并赋初值。注意,最后输出n时,应当使用格式说明%ld,而不能使用%d。

6.22【分析与解答】

(1) 行数的统计可通过统计输入的′\n′符的个数来完成。

(2) 统计的过程应当放在一个while循环体中;判断循环是否进行的条件可以用:((ch=getchar())==EOF)。若用整型变量n作为计数器对′\n′符进行统计,只要读入的字符是′\n′,则n增1。如:

while((ch=getchar())![KG-*2]=EOF)

if(ch==′\n′)n++;

(3) EOF是在stdio.h中预定义了的标识符,在TURBO C的环境下,键入Ctrl+Z(即按住键盘上的Ctrl键,同时按字母Z键)后,敲Enter键,即输入了EOF。

6.23【分析与解答】

(1) 本题要求的操作同样可在while循环中完成:

while((ch=getchar())!=′\n′)

{ …… }

(2) 若用整型变量n作为计数器对小写字母进行统计,只要读入的字符是小写字母,则n增1。如:

if(ch>=′a′ && ch<=′z′)n++;

(3) 在退出循环后,输出n的值。

(4) 请自己完善程序。

6.24【分析与解答】

(1) 若图案的行数输入到变量L中。

(2) 按要求L决定了图形的行数,因此可通过循环来实现L行的输出:

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

{ …… }

循环体中的“……”号,代表输出L行的操作。

(3) 假定ch中存放了一个字符,我们知道,通过以下循环可以在一行上输出n个字符:

for(j=1; j<=n; j++)putchar(ch);

putchar(′\n′);

注意,在循环后putchar(′\n′);语句不可少,它用以换行。

(4) 现在应当解决如何按要求给出每行输出的字符。由图分析,行数(或行号)为1时输出字符A,行数为2时输出字母B……若输出的字母放在变量ch中,行号取决于外循环的控制变量i,则输出的字母和行号的关系可用表达式:ch=′A′+i-1来表示。当i 为1时ch中被赋予字母A,当i为2时ch中被赋予了字母B,其他依此类推。因此,在此表达式后,利用(3)中的循环就解决了各行上输出的字母。

(5) 按要求每行输出的字母的个数不同,第二行输出3个字母,第三行输出5个字母,第四行输出7个字母……(3)中for循环体的执行次数取决于n的值,也就是说n的值决定了每行输出字母的个数。其实,n的值与行号有着密切的关系:n=2*i-1,当i为1时n的值是1、当i的2时n的值是3、当i的3时n的值是5、当i的4时n的值是7。因此在(3) 中for循环之前可用此表达式求出n的值。

(6) 总结以上分析,我们可得到以下的程序段:

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

{ ch=′A′+i-1;

n=2*i-1;

for(j=1; j<=n; j++)putchar(ch);

putchar(′\n′);

}

若所用的变量都已正确定义,通过输入L的值为5,则程序段在第一列起有以下的输出结果:

A

BBB

CCCCC

DDDDDDD

EEEEEEEEE

和题目的要求比较已趋接近,不同的是在每行没有适当的缩进。

(7) 现在来解决每行的缩进问题。由题中给出的图形可知,若指定输出5行,第一行缩进5个空格,第二行则缩进4个空格,第三行则缩进3个空格,第四行则缩进2个空格,第五行则缩进1个空格。这同样可以由以下的for循环来实现:

for(k=L; k>=i; k--)putchar(′ ′);

把此循环放在i控制的循环体内、输出每行字符的循环之前即可。

(8) 请读者自己补充有关的include行、语句和变量的定义,以完成整个程序。注意,如果有能力可在某些地方作些简化。

第七章、函数

一、选择题

7.1 以下说法中正确的是

A) C语言程序总是从第一个定义的函数开始执行

B) 在C语言程序中,要调用的函数必须在main函数中定义

C) C语言程序总是从main函数开始执行

D) C语言程序中的main函数必须放在程序的开始部分

答案:C

7.2 以下函数的类型是

A) 与参数x的类型相同 B) void类型 C) int类型 D) 无法确定

fff(float x)

{ printf("%d\\n",x*x); }

答案:C

7.3 以下函数调用语句中,含有的实参个数是

A) 1 B) 2 C) 4 D) 5

func( (exp1,exp2),(exp3,exp4,exp5));

答案:B

7.4 以下程序的输出结果是

A) 11 B) 20 C) 21 D) 31

fun(int a,int b)

{ int c;

c=a+b;

return c;

}

main()

{ int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

printf("%d\\n",r);

}

答案:C

7.5 以下程序的输出结果是

A) -1 B) 0 C) 1 D) 2

main()

{ int i=2,p;

p=f(i,i+1);

printf("%d",p);

}

int f(int a, int b)

{ int c;

c=a;

if(a>b) c=1;

else if(a==b) c=0;

else c=-1;

return(c);

}

答案:A

7.6 以下程序的输出结果是

A) 0 B) 1 C) 6 D) 无定值

fun(int a,int b,int c)

{ c=a*b; }

main()

{ int c;

fun(2,3,c);

printf("%d\\n",c);

}

答案:D

7.7 以下程序的输出结果是

A) 5.500000 B) 3.000000 C) 4.000000 D) 8.25

double f(int n)

{ int i; double s;

s=1.0;

for(i=1; i<=n; i++) s+=1.0/i;

return s;

}

main()

{ int i,m=3; float a=0.0;

for(i=0; i

printf("%f\\n",a);

}

答案:A

二、填空题

7.8 以下程序的输出结果是____。

C语言题库及答案

C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

《C语言程序设计》课后习题答案

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

C语言课后习题答案(完整版)-第四版-_谭浩强

C语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

C语言函数题库及答案

C语言函数题库及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

第六部分函数 一、单项选择题 1.C语言中的函数返回值的类型是由(D)决定 A.return语句中的表达式B.调用函数的主调函数 C.调用函数时临时D.定义函数时所指定的函数类型 2.下面不正确的描述是(B)。 A.调用函数时,实参可以是表达式 B.调用函数时,实参和形参可以共用内存单元 C.调用函数时,将形参分配内存单元 D.调用函数时,实参与形参的类型必须一致 3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是 (D) A.地址传递B.值传递 C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式 4.下面的函数调用语句中含有(A)个实参 inta,b,c; intsum(intx1,intx2); …… total=sum((a,b),c); A.2B.3C.4 D.5 5.在C语言中(C) A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义和调用均不可以嵌套 C.函数的定义不可以嵌套,但是函数的调用可以嵌套 D.函数的定义和调用均可以嵌套 6.关于C语言中的return语句正确的是(C) A.只能在主函数中出现 B.在每个函数中都必须出现 C.可以在一个函数中出现多次 D.只能在除主函数之外的函数中出现 7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D) (floatx[],intn) (float*x,intn) (floatx[10],intn) (floatx,intn) 8.在C语言中,函数的数据类型是指(A) A.函数返回值的数据类型 B.函数形参的数据类型 C.调用该函数时的实参的数据类型 D.任意指定的数据类型 9.已知如下定义的函数: fun1(a) {printf("\n%d",a); } 则该函数的数据类型是(C)

最新c语言课后习题答案汇总

c语言课后习题答案

第二章习题 2.什么叫做结构化算法?为什么要提倡结构化算法? 答:结构化算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内。一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。 跟结构化算法比较起来,非结构化算法有以下缺点: 流程不受限制的随意转来转去,使流程图豪无规律使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。 4. 第三章习题 1.#include #include void main() { unsigned int n;

float p,p1,r=0.09; scanf("%u",&n); p=pow(1+r,n); p1=(p-1)*100; printf("%5.2f%%\n",p1); } 运行结果:输入,回车,见结果: 2.#include #include int main() { int bj=1000; float r1,r2,r3,r5,r0,lx1,lx2,lx3,lx4,lx5; r1=0.0414; r2=0.0468; r3=0.0540; r5=0.0585; r0=0.0072; lx1=bj*r5; lx2=bj*(1+r2)*r3; lx3=bj*(1+r3)*r2; lx4=bj*pow(1+r1,5); lx5=bj*r0*5; printf("lx1=%f lx2=%f lx3=%f lx4=%f lx=5%f\n",lx1,lx2,lx3,lx4,lx5); return 0; } 运行结果: 3.#include #include int main() { long d,p; d=300000; p=6000; double m,r=0.01; m=log(p/(p-d*r))/log(1+r); printf("%4.2f",m); return 0;

2019二级C语言题库参考答案解析

2019年C语言考题答案 1、程序填空题 给定的程序的功能是调用fun 函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat 的二进制中。 填空:( 1) STYPE(2)FILE(3)fp 改错:(1) for(i=0;i<=sl;i++)(2)t[2*sl]= 0“ 或t[sl+sl]= 0“ 编程: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b% 10); 2、程序填空题给定程序的功能是:从键盘输入若干文本 (每行不超过80 个字符),写到文件myfile4.txt 中,用-1 作为字符串输出输入的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText 和Writetext 实现。 填空:(1)*fw(2)str (3) str 改错:(1)voidfun(longs,long*t)(2) s1=s1*10; 编程:int i,j=0,min=a[0].s; for(i=0;i

else if(min==a[i].s) b[j++]=a[i]; } return j; 3、程序填空题 给定程序中,函数fun 的功能是:讲自 然数1~10 以及它们的平方根写到名为myfile3.txt 的文本中,然后再按顺序读出显示在屏幕上。 填空:( 1) fp( 2)fclose(fp)(3)myfile3.txt 改错:( 1)for(i=j+1;i

C语言试题及答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。

C语言课后习题答案

第1章C语言概述 一、选择题 答案: 1.A 2.B 3.C 4.C 5.D 6.B 7.D 8.B 二、填空题 答案: 1.函数2.目标3.编译程序4.分号 第2章数据类型、运算符和表达式 一、选择题 答案: 1.B 2.D 3.D 4.B 5.D 6.C 7.C 8.B 9.A 10.D 11.B 12.B 13.D 14.D 15.A 16.C 17.B 18.D 19.A 20.C 二、填空题 答案: 1.2 2.6,4,2 3.18 4.5 5.double或双精度 6.30 7.4,2 8.4 第3章顺序结构 一、选择题 答案: 1.C 2.C 3.C 4.A 5.A 6.A 7.D 8.D 9.C 10.D 二、填空题 答案: 1.scanf printf 2.顺序、选择、循环3.1 4.3 5.9,10 6.10,20 7.213 8.空格、Tab键、回车键 第4章选择结构 一、选择题 答案: 1.B 2.D 3.D 4.B 5.B 6.C 7.C 8.B 9.B 二、程序改错题 1.输入两个实数,在fun()函数中按数值由小到大输出它们。(保留2位小数)

答案: =======(答案1)======= float t; =======(答案2)======= if(a>b) =======(答案3)======= printf("%5.2f, %5.2f\n",a,b); 2.编写一个程序计算某年某月有几天。(注意要区分闰年) 答案: =======(答案1)======= switch(mm) =======(答案2)======= break; =======(答案3)======= default : 三、程序填空题 1.功能:输出a、b、c三个变量中的最小值。 答案: =======(答案1)======= &c =======(答案2)======= c:t1 四、程序设计题 1.功能:对任意输入的x,用下式计算并输出y 的值。说明:因为关于函数调用的知识在第7章讲解,所以在现阶段本程序的设计可以改用一个主函数来完成。 答案: int m; if(n<10) m=5; else if(n==10) m=0; else m=-5; return m; 或 int m; if(n>=10) if(n>10) m=-5; else m=0; else m=5; return m; 第5章循环结构 一、选择题

2020最新C语言题库及答案

2020最新C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。

3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age

2020年C语言题库及答案

2020年C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油!一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行

5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言课后习题标准答案

C语言课后习题标准答案 第1章C语言概述 一、简答题 1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。 2.顺序结构,分支结构,循环结构 3.所谓算法就是为解决一个问题而采取的方法和步骤。 算法的特性:有穷性、确定性、输入、输出、可行性。 表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示; (4)用伪代码表示;(5)用计算机语言表示。 二、算法 1.瓶子A里盛有醋 瓶子B里盛有酱油 那一个空瓶C 将A中的醋倒入C 将B中的酱油倒入A

将C中的醋倒入B 2.输入一个数放在a中max=a 以下步骤重复9次: 输入一个数放在a中 如果a>max,max=b 打印max的值 3.如果??a<b temp=a ?a=b ??b=temp 如果c>a ?temp1=a ??temp2=b a=c ?b=temp1 ?c=temp2 否则 ?如果?c>b ?temp=b ?b=c ?c=temp

打印a,b,c的值 4.i=1 sum=0 以下程序循环100遍: sum=sum+i ?i=i+1 打印sum的值 5.如果(n除以3的余数为0并且n除以5的余数为0)n能够同时被3和5整除 否则 ?n不能够同时被3和5整除 6.i=101 以下语句循环50遍: ?j=2 ?flag=1 ?当j<(i除以2的整数部分)时循环以下语句: ??如果i除以j的余数为零 ???flag=0 ???退出该循环 如果flag=1 ???打印i的值 ?i=i+1

C语言试题库(带详细讲解答案)

一单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D 中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 详见教材P52~53. %为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1; /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2 11.如果int a=3,b=4;则条件表达式"a

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

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3. 关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

C语言题库(带答案)-排版

一、选择题 1、以下不能定义为用户标识符的是()。 (A) MAIN (B) _HJ (C) 2ong (D) LINE1 2、以下不能定义为用户标识符的是() (A) If (B) H_J (C) 208ong (D) LINE12 3、下面属于C语言标识符的是( )。 (A) 2ab (B) @f (C) b (D) _a12 4、下列符号中用来表示C语言中的回车换行的是()。 《 (A) \r (B) \n (C) \b (D) \t 5、在计算机系统中,可执行程序是() (A) 源代码(B)汇编语言代码 (C) 机器语言代码(D) ASCII码 6、在Visual C++ 环境下,C源程序文件名的默认后缀是( )。 (A) .obj (B) .txt (C) .c (D) .doc 7、Microsoft Visual C++ 中,C语言可执行程序的扩展名是:( ) (A) exe (B) obj (C) c或cpp (D) txt ] 8、C程序由( )组成。 (A)子程序 (B) 主程序和子程序(C) 函数 (D) 过程 9、C程序的基本组成单位( )。 (A) 数据类型 (B) 变量和常量 (C) 函数 (D) 表达式 10、C语言中主函数的个数是( )。 (A) 2个 (B) 1个 (C) 任意个 (D) 10个 11、一个C程序的执行是从() (A)本程序的main()函数开始,到main函数结束. — (B)本程序文件的第一个函数开始,到本程序文件最后一个函数结束. (C)本程序文件的第一个函数开始,到本程序main函数结束. (D)本程序的main()函数开始,到本程序文件的最后一个函数结束. 12、以下叙述正确的是 (A)在C语言程序中,main函数必须放在其他函数的最前面 (B)在每个后缀为.C的C语言源程序都可以单独进行编译 (C)在C语言程序中,只有main函数才可单独进行编译 (D)每个后缀为.C的C语言源程序都应该包含一个main函数 ] 13、设变量a是整型,b是实型,c是双精度型,则表达式2+’a’+b*c值的数据类型是()。 (A) int (B) float (C) double 14、以下选项中表示一个合法的常量是(说明:符号□表示空格) A) 9□9□9 B)0Xab C) D) 15、以下选项中非法的字符常量是 A)'\102' B)'\65' C)'\xff' D)'\019' 16、以下选项中,能表示逻辑值“假”的是 A)1 B) C)0 D) 》17、下列关系表达式中,结果为“假”的是 A)(3+4)>6 B)(3!=4)>2 C) 3<=4||3 D)(3<4)==1 18、关于C语言变量,以下说法不正确的是() (A) 变量名由程序员定义,必须符合标识符的命名规则。 (B) 变量是程序运行过程中其值可以改变的量。 (C) 可以用C语言的关键字作为变量名。 (D) 变量命名时应尽量做到见名知意。 19、关于C语言中数的表示,以下叙述正确的是 # A)只有整型数在允许范围内能精确无误的表示,实型数会有误差 B)只要在在允许范围内整型和实型都能精确表示 C)只有实型数在允许范围内能精确无误的表示,整型数会有误差 D)只有八进制表示的数在不会有误差 20、设有语句int a=3;,则执行了语句a+=a=a*a;后,变量a的值是。A.3 B.0 C.9 D.12 21、在C语言中,要求运算数必须是整型的运算符是。 A.% B./ C.< D.! ~ 22、C语言中最简单的数据类型包括。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型 23、在C语言中,合法的字符型常量是。 A.'\t' B."A" C.65 D.A 24、若已定义x和y为double型变量,则表达式x=1,y=x+3/2的值是。A.1 B.2 C. D. 25、设正x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是。、 printf("%d,%d\n",x--,--y); A.10,3 B.9,3 C.9,2 D.10,2 26、若有定义int a=8,b=5,C;,执行语句C=a/b+;后,C的值为。 A. B.1 C. D.2 27、以下选项中,不正确的赋值语句是。 A.++t; B.n1=(n2=(n3=0)); C.k=i==j; D.a=b+c=1; 28、设x和y均为int型变量,则语句:x+=y,y=x-y;x-=y;的功能是。; A.把x和y按从大到小的顺序排列 B.把x和y按从小到大的顺序排列 C.无确定结果 D.交换x和y中的值 29、以下程序的输出结果是。 #include <> main() { @ char c='z';

C语言程序设计选择题库及答案

单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题, 应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodb start$it line# pow ??? aBc 3pai His.age while

【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义

最新C语言课后习题答案汇总

C语言课后习题答案

C语言课后习题答案-第四版- 第一章 5、请参照本章例题,编写一个C语言程序,输出以下信息:**************************** V e r y G o o d ! **************************** #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 6、编写一个C语言程序,输入a,b,c三个值,输出其中最大值。 #include int main() { int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d%d%d",&a,&b,&c);

max=a; if (max int main() { int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; max=max>c?max:c; printf("The largest number is %d\n",max); return 0; }

相关文档
相关文档 最新文档