C语言习题及解答

更新时间:2023-10-21 22:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1部分 课后练习题

第1章 C语言概述

一、选择题

1.一个C程序的执行是从 。

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 2.以下叙述正确的是 。

.在C程序中,main函数必须位于程序的最前面 A) B) C)

C程序的每行中只能写一条语句 C语言本身没有输入输出语句

在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.以下叙述不正确的是 。

A) 一个C源程序可由一个或多个函数组成 B) 一个C源程序必须包含一个main函数 C) C程序的基本组成单位是函数

D) 在C程序中,注释说明只能位于一条语句的后面 4.C语言规定:在一个源程序中,main函数的位置 。

A) 必须在最开始 B) 必须在系统调用的库函数的后面 C) 可以任意 D) 必须在最后 5.一个C语言程序是由 。

A) 一个主程序和若干子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成 6.C语言中的语句需要 符号作为结尾。 A) : B) ; C) 。 D) //

7. C 语言程序中可以对程序进行注释,注释部分用符号_____括起来。 A)‘{‘ 和’}’ B)‘[‘和’]’ C)“/*”和”*/” D)“*/”和”/*” 8.C语言中注释的位置 。

A) 必须在程序的最开始 B) 必须在程序的结尾 C) 可以在程序的任何位置 D) 不可以写到main函数里面

9.C语言程序能够在不同的操作系统下面运行,这说明c语言具有很好的 。

1

A) 适应性 B)移植性 C)兼容性 D) 操作性 10.C语言经过编译后生成的文件的后缀是 。 A).c B) .cpp C) .exe D) .obj 11.C语言编译程序的首要工作是 。

A) 检查C语言程序的语法错误 B) 检查C语言程序的逻辑错误 C)检查程序的完整性 D) 同时检查语法和逻辑错误 12. C语言经过链接后生成的文件的后缀是 。 A).c B) .cpp C) .exe D) .obj

二. 填空题

1.计算机程序设计语言的发展经历了从 、 到 的历程。

2.计算机唯一能识别的语言是 。 3.C源程序的基本单位是 。 4.一个C源程序至少应包括一个 。

5.在一个C源程序中,注释部分两侧的分界符分别为 和 。

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

7. 用高级语言编写的程序称为 ,必须将其翻译成二进制程序后才能执行。翻译有两种方式,一种是通过 翻译一句执行一句的方式执行,另一种通过 一次翻译产生目标程序,然后执行。

第2章 基本语法 —— 语言描述与

数据存储的简单方法

一.选择题

1.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 。 A)必须为字母 B)必须为下划线

C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 2. 若以下选项中的变量已正确定义,则正确的赋值语句是 。

A) x1=26.8%3; B) 1+2=x2; C) x3=0x12; D) x4=1+2=3; 3. 设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是 。

A) x=x*100+0.5/100.0 B) x=(x*100+0.5)/100.0 C) x=(int)(x*100+0.5)/100.0 D) x=(x/100+0.5)*100.0 4. 下列C语言中运算对象必须是整型的运算符是 。

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

5. 若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 。

2

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

6. 设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是 。

A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 7. 下列变量定义中合法的是 。

A)short_a=1-.le-1; B)double b=1+5e2.5; C)long do=0xfdaL; D)float 2_and=1-e-3; 8.若变量已正确定义并赋值,符合C语言语法的表达式是 。

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

9. 若有float x;则sizeof(x)和sizeof(float)两种描述 。

A)都正确 B)都不正确 C)前者正确 D)后者正确

10. 有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值

为( )。

A)17 B)17.500000 C)17.5 D)16 11. 已知float x=1,y;则y=++x*++x的结果是 。

A)y=9 B)y=6 C)y=1 D)表达式是错误的 12. 下列关于单目运算符++、--的叙述中正确的是 。

A)它们的运算对象可以是任何变量和常量

B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D)它们的运算对象可以是char型变量、int型变量和float型变量 13. 已定义ch为字符型变量,下列赋值语句中错误的是 。

A)ch='\\'; B)ch=62+3; C)ch=NULL; D)ch='\\xaa'; 14. 假定有以下变量定义,则能使值为3的表达式是 。

int k=7,x=12;

A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)

15. 设有“int x=11;”则表达式(x++*1/3)的值是 。

A)3 B)4 C)11 D)12

16. 已定义c为字符型变量,则下列语句中正确的是 。

A)c=’97’ B)c=“97” C)c=97 D)c=“a” 17. sizeof(float)是 。

A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 18. 有以下定义语句:

double a,b; int w; long c;

若各变量已正确赋值,则下列选项中正确的表达式是 。 A)a=a+b=b++ B)w%((int)a+b) C)(c+w)%(int)a D)w=a=b

19. 若变量a是int类型,并执行了语句:a=‘A’+1.6;,则正确的叙述是 。

3

A)a的值是字符C B)a的值是浮点型

C)不允许字符型和浮点型相加 D)a的值是字符’A’的ASCII值加1

20. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是 。

A)6.500000 B)6 C)5.500000 D)6000000 21. 在下列选项中,不正确的赋值语句是 。

A)++t; B)n1=(n2=(n3=0)); C)k=i==j; D)b+c=1;

22.已知char a; int b; float c; double d; 则表达式a+b * c-d的结果为_______型。

A)char B)int C)float D)double 23. 若x 为int型变量,则执行语句x=10; x+=x=x-x后,x的值为_______。

A)0 B)10 C)20 D)30

24. 若x、a、b、c均 为int型变量,则执行表达式x= (a = 4, b = 8, c = 12)后,x的

值为_______。

A)4 B)8 C)12 D)24 25. 在C程序中,x + y是_______、x + y;是_______。

A)表达式、语句 B)表达式、表达式 C)语句、语句 D)语句、表达式

26.假设变量a是整型,b是实型,c是双精度型,则表达式30+a+c*b的值的数据类型

是 。

A) int B) float C) double D) 不确定 27.在C语言中,char型数据在内存中的存储形式是 。

A)补码

B)反码

C)原码

D)ASCII码

28.执行下列程序片段时输出结果是 。 int x=13,y=5;

printf(“%d”,x%=(y/=2));

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

二.填空题

1.在C语言中所提供的数据结构是以数据类型形式出现的,其中的基本类型包括int 型 即_ __、float型即_ __、double型即_ __、char型即_ __等。 2. C语言中的标识符只能由三种字符组成,它们是 、 和 。

3. C程序中的字符常量是用_ __括起来的一个字符;除此之外,还允许用一种特殊形式的字符常量,是以_ __开头,被称为转义字符。

4.字符串常量是一对_ __括起来的字符序列,且以_ __结束。 5.常量是指在程序执行过程中其值 __改变的量。 6.变量是指在程序执行过程中其值_ _的量。 7.C实型变量分为_ _和_ _两类。

8.转义字符'\\n'表示_ _,使光标移到屏幕上下一行开头。 9.一个字符变量在内存中占_ _字节。

10.一个字符数据既可以以字符形式输出,也可以以_ _形式输出。 11.字符串常量是用_ _括起来的字符序列。

12.在进行运算时,不同类型的数据必须_ _,然后进行运算。

4

13.可以利用_ _运算符将一个表达式的值转换成指定的类型。

14.有两种类型转换,一种是在运算时不必用户指定,系统自动进行类型转换;另一种是 _ _。

15.两个整数相除的结果是_ _。 16.求模运算符(%)只能用于_ _操作数。

17.一个表达式的最后加上一个_ _就成了一个语句。

18.若int x = 3,则执行表达式x*= x+= x - 1后x的值为_ _。 19.若a是int型变量,则表达式((a=4*5,a*2),a+6)的值为 。

20.若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为 。 21.若a是int型变量,则执行表达式a=25/3%3后a的值为 。 22.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++ x的值为 ,n的值为 。

四、程序阅读题

1.写出以下程序运行的结果 。 #include int main ( ) {

int i,j,m,n; i=8; j=10; m=++i; n=j++;

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

2. 写出以下程序运行的结果 。 #include int main() {

int a = 7, b = 9; a = a + b; b = a - b; a = a - b; }

3. 写出以下程序运行的结果 。 #include int main() {

5

printf (\

return 0;

}

int a, b, c;

a = (b = (c = 3) * 5)*5;

printf (\

return 0;

4. 已知字母A的ASCII码为65。以下程序运行后的输出结果是______。 #include int main() { }

5.写出以下程序的输出结果。 #include int main ( ) { int y=3,x=3,z=1;

printf(“%d %d\\n”,(++x,y++),z+2); return 0 ; }

char a, b;

a='A'+'5'-'3'; b=a+'6'-'2'; printf(\

return 0;

第3章 编程语句 —— 简单程序构建的方法

一.选择题

1.以下程序的输出为 。 #include int main( ) {

double x=213.82631; printf(\return 0; }

A) 213.82 B) 21.38e+01 C) 2.14e+02 D) -2.14e2 2.语句printf(“%%d%d”, 123); 将输出:

A) 3%d B) %?23 C) ?23 D)上述语句语法有错 3.以下程序的输出结果是 。 #include int main( )

6

{ }

A)x/y&z=0 B)x/y&z=1 C)s=x/y&z=0 D)x/y&z=1 s=x^y&~z =1 x^y&~z =1 x^y&~z =0 x^y&~z =0 4. 执行语句scanf (“%c%c%c”,&c1,&c2,&c3),输入abc时,变量c1、c2、c3的值分别为 。

A)'a', 'b', 'c' B)'a','b', '' C)'a', '', 'b' D)'a','','c' 5.有以下程序段: int m=0,n=0;char c='a'; scanf(\,&m,&c,&n); printf(\

若从键盘上输入:10A10<回车键>,则输出结果是 。

A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0 6.若有以下变量说明和数据的输入方式,则正确的输入语句为 。 变量说明:float x1,x2; 输入方式:4.52<回车> 3.5<回车>

A)scanf(“%f,%f”,&x1,&x2); B)scanf(“%f%f”,&x1,&x2); C)scanf(“%3.2f %2.1f”,&x1,&x2); D)scanf(“%3.2f%2.1f”,&x1,&x2); 7. 下面程序的运行结果是 。 #include #define DATA 20+7 int main( ) { }

A)DATA=22 B)DATA=21 C)DATA=9 D)以上都不对 8. 设c1,c2均是字符型变量,则以下不正确的函数调用为 。 A)scanf(“c1=ì2=%c”,&c1,&c2); B)c1=getchar( ); C)putchar(c2); D)putchar(c1,c2); 9.若a为整型变量,则以下语句 。 a=-2L;printf(“%d\\n”,a);

(A)赋值不合法 (B)输出值为-2 (C)输出为不确定值 (D)输出值为2 10.有以下程序 #include int main( )

7

int x=3,y=2,z=1;

printf (\printf (\

return 0;

printf(\

return 0;

{ int x=102,y=012;

printf(“-,-\\n”,x,y); return 0; }

执行后输出结果是 。

(A)10,01 (B)02,12 (C)102,10 (D)02,10 11. 以下程序输出的结果是 。 #include int main( ) { }

A)*a=chinazhongguo* B)*a=chinazhongguo* b=**chi* *b=chi * C)*a=* chinabeijing* D)*a= chinazhongguo* *b=chi* *b=chi *

12.若变量c定义为float类型,当从终端输入283.1900 (代表回车键),能给变量c赋以283.19的输入语句是 。

A)scanf(“%f”,c); B)scanf(“%8.4f”,&c); C)scanf(“%6.2f”,&c); D)scanf(“?”,&c); 13.设有如下程序段 int x=2002,y=2003; printf(\

则以下叙述中正确的是________。

A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003

14. putchar 函数可以向终端输出一个 。 A)整型变量表达式的值 B)实型变量的值 C)字符串 D)字符或字符型变量的值

15.下列函数中能够向终端输出一个字符或字符型变量值的是 。 A) gets B) puts C) getchar D) putchar 16. 若有下列语句 char c=’A’; printf(“%d”,c);

则输出的结果是 。

A) A B) c C) 65 D) 错误的语句

17. 下列程序输入’a’字母后,执行程序后输出的结果是 。

8

printf(\printf(\

return 0;

#include int main( ) { }

A)65 B) A C) 97 D) a 18.执行下列程序片段时输出结果是 。 float x=-1023.012; printf(“\\n%8.3f,”,x); printf(“.3f”,x);

A)1023.012, -1023.012 B)-1023.012,-1023.012 C)1023.012,-1023.012 D)-1023.012, 1023.012

19.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,正确的数据输入方式是 。 int a1,a2; char c1,c2;

scanf(“%d%c%d%c”,&a1, &c1,&a2, &c2); A)10A 20B↙ B)10 A 20 B↙ C)10A20B↙ C)10A20 B↙

20.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按 方式输入数据。

int k1,k2,k3,k4; scanf(“%d%d”,&k1,&k2); scanf(“%d,%d”,&k3,&k4);

A)1020↙ B)10 20↙ C)10,20 ↙ D)10 20↙ 1020↙ 10 20↙ 10,20↙ 10,20↙

21.阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为 。 int main() {

int x,y,z ;

scanf(\ printf(\return 0 ; }

A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值

22.阅读以下程序,若运行结果为如下形式 ,输入输出语句的正确内容是 。 main()

9

char c; c=getchar(); c=c-32;

printf(\

return 0;

{int x; float y; printf(\输入语句 输出语句 }

输入形式 enter x,y: 2 3.4 输出形式 x+y=5.40

A)scanf(\B)scanf(\C)scanf(\D)scanf(\

23.根据定义和数据的输入方式,输入语句的正确形式为 。 已有定义: float fl,f2; 数据的输入方式:4.52

3.5

A) scanf(\C) scanf(\

24.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 。

A) 从左起输出该字串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字串,左补空格 D) 输出错误信息

25.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度小于5,则输出按方式 。

A) 从左起输出该字串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字串,左补空格 D) 输出错误信息

26.已有定义 int a=-2;和输出语句:printf(\以下正确的叙述是 。 A) 整型变量的输出格式符只有%d-种

B) %x 是格式符的-种,它可以适用于任何-种类型的数据

C) %x 是格式符的-种,其变量的值按+六进制输出,但%8lx 是错误的 D) %8lx 不是错误的格式符,其中数字8规定了输出字段的宽度 27.以下说法正确的是 。

A) 输入项可以为-实型常量,如scanf(\

B) 只有格式控制,没有输入项,也能进行正确输入,如scanf(\

C) 当输入-个实型数据时,格式控制部分应规定小数点后的位数,如scanf(\D) 当输入数据时,必须指明变量的地址,如scanf(\

28.根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确形式应该为: 。 main()

{char ch1 ,ch2 ,ch3; 输入语句

printf(\

10

输入形式: A B C 输出形式: A B

A) scanf(\ C) scanf(\29.有输入语句:scanf(\为使变量a的值为1,b为3,c为2, 从键盘输入数据的正确形式应当是 。

A) 132(回车) B) 1,3,2(回车) C) a=1b=3c=2(回车) D) a=1,b=3,c=2(回车)

二.填空题

1.语句printf(\的输出结果是 。 2.以下printf语句中=的作用是 ,输出结果是 。

#include int main() {

int i=3;

printf(“##=\\n”,i,i); return 0;

}

a+=b; b=a-b; a-=b;

3.若a和b均为int型变量,则以下语句的功能是 。 4. 下列程序的输出结果是14.00,请填空使程序完整。 int main ( ) { int a=9,b=2;

float x= , y=1.1 , z; z=a/2+b*x/y+1/2; printf(“%5.2f\\n”,z); return 0; }

5. 下面的使用scanf函数的输入方式有 种。 int main() {

int a,b;

scanf(“%d%d”,&a,&b); return 0; }

三.程序阅读

1.下面程序的输出结果是 。

#include int main() {

11

}

int x='f';

printf(\

return 0;

2.以下程序的输出结果为 。

int main() { }

3.用下面的scanf函数输入,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’,问在键盘上如何输入? int main ( ) { int a,b; float x,y; char c1,c2;

scanf(“a=%d b=%d”,&a,&b); scanf(“%f%f”,&x,&y); scanf(“%c%c”,&c1,&c2); return 0 ; }

4.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是______。 #include int main() { }

5.写出以下程序的输出结果。 int main ( ) { int a=12345;

float b=-198.345, c=6.5;

printf(“a=M,b=%-10.2e,c=%6.2f\\n”,a,b,c); return 0; }

7. 写出以下程序的输出结果。

12

printf(“*%f,%4.3f*\\n”,3.14,3.1415);

return 0;

char a,b; a=getchar(); scanf(\a=a-'A'+'0';b=b*2; printf(\

return 0;

int main ( ) { int a=252;

printf(“a=%o a=%#o\\n”,a,a); printf(“a=%x a=%#x\\n”,a,a); return 0; }

8. 写出以下程序的输出结果。 int main ( )

{ int x=12; double a=3.1415926; printf(“m##,%-6d##\\n”,x,x); printf(“%f##\\n”,a);

return 0; }

四.程序改错

1.找出下面程序中的错误,使之能够正常执行。 #include int main() {

int x;double y; scanf(“%d%f”,&x,&y); return 0 ; }

2.找出下面程序中的错误,使之能够正常执行。 #include int main() {

int x, y,sum;

scanf(“%d%d”, x, y); sum=x+y ;

printf(“sum =%d”,sum); return 0; }

3.找出下面程序中的错误,使之能够正常执行。 #include int main() {

int x ; char y ; x=getchar() ; y=getchar() ;

13

putchar(x+y) ; return 0 ; }

第4章 算法 —— 程序设计的核心

一.选择题

1.程序流程图中带箭头的线段表示 。

A) 处理操作 B) 数据流 C) 控制流 D) 调用关系 2.程序流程图中的菱形框表示 。

A) 输入 B) 输出 C) 判断 D) 循环 3.下面的流程图是 结构的程序设计。

模块A No 条件? A) 顺序 B) 顺序加选择 C) 判断 D) 循环

4. NS图完全取消了 ,不允许有随意的控制流,全部算法写在一个矩形框内。 A) 流程线 B) 输出 C) 判断 D) 循环 二.填空题

1.程序设计的核心是 。

2.算法描述的方法包括 、 和 。 3.程序设计的三种基本结构包括 、 和 。 4.程序设计的思想包括 和 。

第5章 判断与循环 —— 一般复杂问题

程序设计方法

一.选择题

1. 逻辑运算符两侧运算对象的数据类型 。

A)只能是0或1 B)只能是0或非0正数

14

C)只能是整型或字符型数据 D)可以是任何类型的数据 2. 下列运算符中优先级最高的是 。 A) < B) 十 C) && D) !=

3.能正确表示\当x 的取值在[1,10]和[200,210]范围内为真,否则为假\的表达式是 。 A) (x>=1) &&(x<=10) &&(x> = 200) &&(x<=210) B) (x>=1) || (x<=10) ||(x>=200) ||(x<=210) c) (x>=1) &&(x<=10)||(x>= 200) &&(x<=210) D) (x > =1)||(x< =10) && (x> = 200)||(x<=210)

4.判断char型变量ch是否为大写字母的正确表达式是 。 A) ' A' <=ch<='z' B) (ch> = 'A')&(ch<=' z' ) C) (ch>=' A' )&&(ch<='z') D) (' A' < = ch)AND('z'> = ch) 5.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 。 A) 'y'&&'y' B) x < =y C) x||y+z&&y-z D) !(x=y && ch<'B'&&!Y) 的值是 。 A) 0 B) 语法错 C) 1 D) \假\

7.若希望当A的值为奇数时,表达式的值为\真\的值为偶数 表达式的值 为\假\。则以下不能满足要求的表达式是 。 A) A%2==1 B) !(A%2 = =0) C) !(A%2) D) A%2 8. 若有程序段如下: a=b=c=0;x=35; if(!a)x--;

else if(b);if(c)x=3; else x=4;o;

执行后,变量x的值是 。 A)34 B)4 C)35 D)3 9.下列if语句中,不正确的是 。

A)if (x

if (x>=10) { } x-=3;

15

break;

if(x%2==1)

x+=5; continue;

}

变量x的值最终为 。

A)11 B)12 C)13 D)10

11.与“for (i=0;i<10;i++) putchar ('a'+i);”功能不同的语句是 。

A)for (i=0;i<10;)putchar ('a'+(++i)); B)for (i=0;i<10;) putchar ('a'+(i++)); C)for (i=0;i<10;putchar ('a'+i),i++); D)for (i=0;i<=9;i++)putchar ('a'+i); 12.循环控制语句“while (!scanf (“%d”,&i)getchar ( );”执行的情况是 。 A)循环输入字符,遇文件结束符EOF退出 B)循环条件有错,不能执行 C)若输入数据i有错,暂停等待处理 D)键入i值后,回车退出循环 13. 若输入字符串:abcde<回车>,则以下while循环体将执行 次。 While ((ch=getchar( ))== ' e ')printf(\A)4 B)5 C)0 D)任意

14.设j为int型变量,则下面for 循环语句的执行结果是 。 for (j=10;j>3;j--) { }

A)6 3 B)7 4 C)6 2 D)7 3 15. 以下程序的输出结果是 。 #include int main( ) { }

A)-1 1 B)0 1 C)1 0 D)0 0 16. 下面程序的输出结果是 。 #include int main( ) { }

A)有语法错,不能通过编译 B)通过编译,但不能连接 C)x=5 D)a=b=0

16

if (j%3)j--; --j;--j; printf (\

int a=-1,b=1,k;

if((++a<0)&&!(b--<=0)) printf(\else printf(\

return 0;

int x=5,a=0,b=0;

if(x!=(a+b)) printf(\else printf(\

return 0;

17. 有以下程序 #include int main( ) { }

程序运行后的输出结果是 。

(A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3 18.下面程序运行结果是 。 #include int main() { }

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

19. 定义:int x=7,y=8,z=9;后,则下面表达式为0的是 。 A)' x ' && ' y ' B)x<=y

C)x||y+z&&y-z D)!((x

20. 若w=1,x=2,y=3,z=4,则条件表达式w int main() { }

其输出结果是 。

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

17

int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf(\

return 0;

int a,b,c,d,x; a=c=0; b=1;d=20; if(a) d=d-10; else if(!b)

if(!c)x=15; else x=25;

printf(\

return 0;

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

printf(\

return 0;

22. 有以下程序 #include int main() { }

执行后输出结果是 。

A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 23. 以下程序的输出结果是 。 #include int main() { }

A)-1 1 B)0 1 C)1 0 D)0 0 24. 阅读以下程序: #include int main() { }

程序执行后,如果从键盘上输入5,则输出结果是 。 A)3 B)4 C)5 D)6 25. 以下程序的输出结果是 。 #include int main() {

int n=4;

while(n--) printf(\int x;

scanf (\

if (x--<5) printf(\else printf(\int a=-1,b=1,k; if((++a<0)&&!(b--<=0))

printf(\printf(\else

int i=1,j=1,k=2;

if((j++||k++)&&i++) printf(\

return 0;

return 0;

return 0;

return 0;

18

}

A)2 0 B)31 C)321 D)210 26. 有以下程序 #include int main() { int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf(\ else

printf(\ printf(\

return 0;

}

程序运行后的输出结果是 。) A)2 B)3 C)43 D)44

27. 下列条件语句中,功能与其他语句不同的是 。 A)if(a) printf(\B)if(a==0) printf(\C)if(a!=0) printf(\D)if(a==0) printf(\28. 下面程序的输出是 。 #include int main( ) { int x=3,y=6,a=0; while(x++!=(y-=1)) { a+=1; if(y

break;

}

printf(\

return 0;

}

A)x=4,y=4,a=1 B)x=5,y=5,a=1 C)x=5,y=4,a=3 D29. 下面程序段的运行结果是 。 int n=0; while (n++<=2);

printf (\

19

)x=5,y=4,a=1 A)2 B)3 C)4 D)有语法错误

30. 已知x、a、b、c、d均为int型变量,则执行如下程序段后,x的值是_______。 a=1; b=2; c=3; d=4; x=(a

A)4 B)3 C)2 D)1 31. 运行下列程序段后x的值是_______。 int a,b,c,x; a=0; b=0; c=0; x=7; if(!a) x--; else if(b); if(c) x=3; else x=4;

A)4 B)6 C)7 D32. 运行下列程序段后x的值是_______。 int a,b,c,d;

a=1; b=7; c=15; d=10; if(a

A)1 B)2 C)6 D33. 如下程序的输出结果是_______。 #include int main() { int a,b,c,d; a=2; b=-6; c=5; if(a

if(b<0) c=0; else c++;

printf (\

return 0;

}

A)0 B)1 C)5 D34. 以下五条语句中有_______是合法的。

if(a=b) x++; if(a=

)3 )7 )6 )4

35. 关于以下三条语句的描述中,正确的是_______。

? if(a) a=1;else a=2; ? if(a==0) a=2;else a=1; ? if(a!=0) a=1;else a=2; A)三条语句相互等效 B)三条语句中?与?等效 C)三条语句中??与?等效 D)三条语句各不等效 36. 定义如下变量int n=10;则下列循环的输出结果是_______。 while(n>=7) { n--;

printf(“%d\\n”,n); }

A)10 B)9 C)10 D)9 9 8 9 8 8 7 8 7 7 6

37. 以下程序执行后,输出结果是_______。 #include int main() { }

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

38.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是______。

A)k%2 B)k%2==1 C)(k%2)!=0 39.有以下程序 #include int main() { }

21

int n=0; while(n<=2) { }

n++;

printf(\

return 0;

D)!k%2==1

int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf(\

return 0;

程序运行后的输出结果是______。 A)1 2 3 是______。 A)1

二、填空题

1. 下面程序的功能是在屏幕上显示如下图形: B)2 C)3 D)4

B)2 3 4 C)2 2 3 D)2 3 3

40.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 填空:

#include int main( ) {

int i=1,j; while(i<=5) {

printf(\j=i;

while( )

{ j--;} i++;

} return 0;

}

2. 执行下面程序 #include int main( ) { int x;

scanf(\ if(x++>5) printf(\ else

printf(\ return 0;

22

}

若输入5,其输出结果是 。 3. 以下程序运行后的输出结果是 。 #include int main( ) { }

4. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。 #include int main( ) {

float x[1000],sum=0.0,ave,a; int n=0,i;

printf(\:\\n \while(a>=0.0&& n<1000) {

sum+ ;x[n]= ; n++;scanf (\}

ave= ;

printf(\:\\n \printf(\i=0; while(i

{if( ) printf(\i++;} return 0; }

5. 以下程序将两个数从小到大输出。 #include int main( ) {

float a,b, ; scanf( ,&a,&b); if (a>b)

{ t=a; ;b=t;}

23

int a=1,b=3,c=5;

if (c=a+b) printf (\else printf (\return 0;

printf (\return 0; }

6. 若有以下程序: #include int main( ) { }

执行后输出结果是 。

7.下面的if语句与y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,请补充完整。 if ( )

if ( )y=2*x-1; else y=x; else y=3*x-11;

8.写出程序段的输出结果 。 int a=100;

if (a>100) printf (\else printf (\9. 有以下程序 #include int main( ) { }

执行后输出结果是 。

11. 执行了以下程序片断后,若原来x=9,则输出结果为_ _;若原来x=6,则输出结果为_ _。

if(x++>8) printf(\else printf(\

24

int a=4,b=3,c=5,t=0; if(a

return 0;

int a=5,b=4,c=3,d=2; if(a>b>c)

printf(\ printf(\ printf(\else if((c-1>=d)==1) else

return 0;

12. C语言提供了6种关系运算符_ __、_ __、_ __、_ __、_ __、_ __。 13. C语言中,关系表达式的值是一个_ __即真或假,一般以_ __代表真,以_ __代表假。

14. C语言提供三种逻辑运算符,包括_ __、_ __、_ __,这三种逻辑运算符中_ __的优先级最高。

15. 在if-else结构中,else子句不能作为语句单独使用,必须与_ __配对使用,且若if和else后面有多条语句,则需用_ __将其成为一个复合语句。

16. C语言中唯一的一个三目运算符是_ __,其一般形式为_ __。 17. while循环结构中,当表达式为_ __时执行其中的内嵌语句;循环体如果包含一个以上的语句,应该用_ __括起来。

18. 程序功能:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空,将程序补充完整。 #include int main() { }

三.程序阅读

1. 执行程序之后,输入2↙6↙3↙ ,以下程序运行后的输出结果是______。(↙表示回车) #include int main() {

int a,b,c,d;

printf(\请输入三个整数:\\n\scanf(\if(a>b) d=a; else d=b; if(c>d) d=c;

25

float x,xmax,xmin; printf(\输入成绩:\\n\scanf(\xmax=x; ; while( ) { }

printf(\

if(x>xmax) xmax=x; if( ) xmin=x;

scanf( );

return 0;

第7章 复杂数据类型—数据描述与扩展存储方法

一.选择题

1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 。

A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 2.以下对一维整型数组a的正确说明是 。

A)int a(10) ; B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n];

3.若有定义:int a[10],则对数组a元素的正确引用是 。

A)a[10] B)a[3.5] C)a(5) D)a[10-10] 4.以下能对一维数组a进行正确初始化的语句是 。

A) int a[10]=(0,0,0,0,0); C) int a[]={0};

B) int a[10]={};

D) int a[2]={0, 0, 0};

5.在C语言中,下面关于数组的描述正确的是 。

A) 数组的大小是固定的,但可以有不同类型的数组元素 B) 数组的大小是可变的,但所有数组元素的类型必须相同 C) 数组的大小是固定的,所有数组元素的类型必须相同 D) 数组的大小是可变的,可以有不同的类型的数组元素 6.若有说明int a[3][4]={0}; 则下面正确的叙述是 。

A) 只有元素a[0][0]可得到初值0 B) 此说明语句不正确

C) 数组a 中各元素都可得到初值,但其初值不一定是0 D) 数组a 中各元素都可得到初值0

7.若有二维数组a有m列,则在a[i][j]前的元素个数为 。

A) j*m+i C) i*m+j-1

B) i*m+j D) i*m+j+1

B) char s[5]={?a?,?b?,?c?}; D) char s[5]=”abcdef”;

B) if(strcmp(s1,s2))

D) if(strcmp(s1,s2)>0)

8.下面对s的初始化,其中不正确的是 。

A) char s[5]={“abc”}; C) char s[5]=””; A) if(s1>s2) C) if(strcpy(s2,s1)>0)

9.判断字符串s1是否大于字符串s2,应当使用 。

10.调用strlen(\的结果为 。

A) 4 B) 5 C) 8 D) 10 11.函数调用“strcat(strcpy(str1,str2),str3)”的功能是 。

A) 将字符串str1复制到字符串str2后再连接到字符串str3之后 B) 将字符串str1连接到字符串str2后再复制到字符串str3之后 C) 将字符串str2复制到字符串str1后再将字符串str3连接到str1之后

36

D) 将字符串str2连接到字符串str1后再将str1复制到字符串str3中 30.以下程序的运行结果是 。

struct cargo { int num; char name[12]; float price; };

int main() { int i; struct cargo cargo[4]={{1,\ {3,\ for(i=0;i<=2;i+=2) printf(\ return 0; }

A)DVD CD B)CD VCD C)DVD VCD D)DVD BLANK

二.分析程序写结果

1.运行下面程序,输入为0 1 2 3 4 5 6 7 8 9 时,请给出程序运行结果。

int main() { int arr[10],i,j,temp; printf(\ value of array:\\n\ for(i=0;i<10;i++) scanf(\ for(i=0,j=9;i<=j;i++,j--) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } for(i=0;i<10;i++) printf(\ return 0; }

2.请给出程序运行结果。 int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int k,s,i; float ave; for(k=s=i=0;i<10;i++) {

37

if(a[i]%2!=0) continue; s+=a[i]; k++; } if(k!=0) { ave=s/k; printf(\ }

return 0; }

3.请给出程序运行结果。

#define N 7 int main() { int i,j,a[N][N]; for (i=1;i

三.阅读程序并填空

1.以下程序的功能是输入一个整数,插入到一个已排好序的数组中,使其仍然有序。请填空。

int main() { int a[10]={2,5,8,10,15,20,28,37}; int x,i,n=8; scanf(\ for(i=n-1;i>=0;i--) if(a[i]>x)

38

else break; n++; for(i=0;i

2.下面程序的功能是输出5*6阶矩阵中值最大的元素值。请填空。

int main() { int i,j,a[5][6],max; for(i=0;i<5;i++) for(j=0;j<6;j++) scanf(\ ); max=a[0][0]; for(i=0;i<5;i++) for(j=0;j<6;j++) if( ) max=a[i][j]; printf(\ return 0; }

3.对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下,请填空。

int main() { char str1[100],str2[100],c; int i,s; printf(\ gets(str1); printf(\ gets(str2); i= ; while((str1[i]==str2[i])&&(str1[i]!= )) i++; s= ; printf(\ return 0; }

9.下面程序的功能是输出结构体数组的内容,请将程序补充完整。

struct { char name[10];

39

char sex; int age;

}p[3]={\int main() {

int i; for (i=0;i<3;i++) ; return 0; }

第8章 函数 — 复杂程序的实现方法

一.选择题

1.以下说法中错误的是 。

A)C语言总是从main函数开始执行 B)函数在程序中出现的先后位置与其被调用的顺序无关 C)一个完整的C程序可由若干个C源程序文件组成

D)main函数的定义必须出现在所有其他函数之前,否则将产生运行错误 2.C语言规定,函数返回值的类型是 。

A)由return语句中表达式的类型所决定 B)由调用该函数的主调函数所具有的类型决定 C)由定义该函数时所指定的函数类型决定 D)由系统随机决定

3.以下说法中正确的是 。

A)main函数和其他函数间可相互调用 B)main函数可以调用其他函数,但其他函数不能调用main函数 C)因为main函数可不带参数,所以其后的参数小括号能省略 D)根据情况可以不写main函数 4.以下函数定义中正确的是 。

A)fun(float x,y) B)fun(int x, int y) C)fun(int x, int y); D)void fun(int x, int y) { return x+y; } { return x+y; } { return x+y; } { return x+y; } 5.以下说法中正确的是 。

A)在一个函数的执行过程中又出现对其他函数的调用,则称此函数为递归函数。 B)递归函数中必须存在递归结束的条件

C)函数的递归调用可以提高程序的执行效率 D)递归函数中必须出现return语句

6.以下有关“递归函数”说法中正确的是 。

A)既允许直接递归调用,也允许间接递归调用 B)只允许直接递归调用 C)既不允许直接递归调用,也不允许间接递归调用 D)只允许间接递归调用 7. C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是 。 A) 整个数组 B) 数组元素的个数

40

本文来源:https://www.bwwdw.com/article/aggf.html

Top