二级C语言&谭浩强C语言各章节习题&注解

更新时间:2024-01-19 15:13:01 阅读量: 教育文库 文档下载

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

C语言程序设计习题集

目录

第一章 C语言基础知识 ........................................ 1 第二章 C语言程序设计的初步知识 .............................. 3 第三章 顺序结构程序设计 .................................... 12 第四章 选择结构程序设计 .................................... 20 第五章 循环结构程序设计 .................................... 34 第六章 数组 ................................................ 47 第七章 函数 ................................................ 57 第八章 指针 ................................................ 72 第九章 结构体与共用体 ...................................... 93 第十章 文件 ................................................101 附录1 预处理命令 ...........................................105 附录2 位运算 ...............................................109 模拟试题一 ..................................................113 模拟试题二 ..................................................118 模拟试题三 ..................................................123 模拟试题四 ..................................................129 模拟试题五 ..................................................134 第一章 答案 ................................................140 第二章 答案 ................................................140 第三章 答案 ................................................142 第四章 答案 ................................................143 第五章 答案 ................................................147 第六章 答案 ................................................155 第七章 答案 ................................................161 第八章 答案 ................................................167 第九章 答案 ................................................176

I

C语言程序设计习题集

第十章 答案 ................................................178 附录1 答案 .................................................183 附录2 答案 .................................................184 模拟试题一答案 ..............................................186 模拟试题二答案 ..............................................189 模拟试题三答案 ..............................................192 模拟试题四答案 ..............................................195 模拟试题五答案 ..............................................197

II

C语言程序设计习题集

第一章 C语言基础知识

一、选择题

1.C语言规定,必须用 作为主函数名。(0级) A)Function B)include C)main D)stdio

2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个 ,一个C程序总是从 开始执行。(0级) A)过程 B) 主函数 C)函数 D)include

3. 是C程序的基本构成单位。(0级) A)函数 B) 函数和过程 C) 超文本过程 D) 子程序

4.下列说法正确的是 。(0级)

A) 一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B) 一个函数的函数体必须要有执行部分,可以没有变量定义

C) 一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D) 以上都不对

5.下列说法正确的是 。(0级) A) main函数必须放在C程序的开头 B) main函数必须放在C程序的最后

C) main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执

行的

D) main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的

6.下列说法正确的是 。(0级)

A) 在执行C程序时不是从mian函数开始的

B) C程序书写格式严格限制,一行内必须写一个语句 C) C程序书写格式自由,一个语句可以分写在多行上

D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号 7.在C语言中,每个语句和数据定义是用 结束。(0级) A)句号 B)逗号 C)分号 D)括号

8.下列字符串是标识符的是 。(0级)

只能有数字,字母和下划线组成,且第一个字符不能为数字

A)_HJ B)9_student C)long D)LINE 1 9.以下说法正确的是 。(0级)

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

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

1

C语言程序设计习题集

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

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

10. 不是C语言提供的合法关键字。(0级) A)switch B)print C)case D)default 11.C语言提供的合法关键字是 。(0级) A)breack B)print C)funiton D)while 12.C语言提供的合法关键字是 。 (0级)

A)continue B)procedure C)begin D)append 13. C语言规定: 在一个源程序中, main函数的位置 。

A) 必须在最开始 B) 必须在系统调用的库函数的后面 C) 可以在任意位置 D) 必须在源文件的最后 14. 一个C语言程序是由 。 A) 一个主程序和若干个子程序组成;

B) 函数组成, 并且每一个C程序必须且只能由一个主函数; C) 若干过程组成; D) 若干子程序组成.

二、填空题

1.一个C程序至少包含一个 主函数 ,即 main函数 。(0级) 2.一个函数由两部分组成,它们是 函数说明部分 和 函数体 。(0级) 3.函数体的范围是 最外层的一对大花括号内 。(0级) 4.函数体一般包括 变量定义部分 和 执行部分 。(0级) 5.C语言是通过 输入输出函数 来进行输入输出的。(0级) 6.在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个 函数 。(0级)

7.主函数名后面的一对圆括号中间可以为空,但一对圆括号不能 少写 。(0级)

2

C语言程序设计习题集

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

一、选择题(该作业中空类型不属于基本类型)

1.在C 语言中,下列类型属于构造类型的是 。(0级) A)整型 B)字符型 C)实型 D)数组类型 2.在C 语言中,下列类型属于构造类型的是 。(0级) A)空类型 B)字符型 C)实型 D)共用体类型 3.在C 语言中,下列类型属于构造类型的是 。(0级) A)整型 B)指针类型 C)实型 D)结构体类型 4.在C 语言中,下列类型属于基本类型的是 。(0级) A)整型、实型、字符型 B)空类型、枚举型 C)结构体类型、实型 D)数组类型、实型 5.下列类型属于基本类型的是 。(0级) A)结构体类型和整型 B)结构体类型、数组、指针、空类型 C)实型 D)空类型和枚举类型 6.下列字符串属于标识符的是 。(0级) A)INT B)5_student C)2ong D)!DF 7.下列字符串属于标识符的是 。(0级) A)_WL B)3_3333 C)int D)LINE 3 8.下列字符串不属于标识符的是 。(0级) A)sum B)average C)day_night D)M.D.JOHN 9.下列字符串不属于标识符的是 。(0级)

A)total B)lutos_1_2_3 C)_night D)$ 123 10.下列字符串不属于标识符的是 。(0级) A)_above B)all C)_end D)# dfg 11.C语言中不能用来表示整常数的进制是 。(0级) A)十进制 B)十六进制 C)八进制 D)二进制 12.C语言中能用来表示整常数的进制是 。(0级) A)十进制、八进制、十六进制 B)十二进制、十进制 C)六进制、八进制 D)二进制、十进制 13.在C语言中,回车换行符是 。(0级) A)\\n B)\\t C)\\v D)\\b 14.在C语言中,退格符是 。(0级) A)\\n B)\\t C)\\v D)\\b 15.在C语言中,反斜杠符是 。(0级)

3

C语言程序设计习题集

A)\\n B)\\t C)\\v D)\\ \\

16.在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码 。(0级) A)大32 B)大64 C)小32 D)小64

17.设d为字符变量,下列表达式不正确的是 。(0级) A)d=97 B)d=?a? C)d=”a” D)d=?g?

18.设d为字符变量,下列表达式正确的是 。(0级) A)d=678 B)d=?a? C)d=”d” D)d=?gjkl?

19.10+?a?+1.5-567.345/?b?的结果是 型数据。(0级) A)long B)double C)int D)unsigned float

20.语句int i=3;k=(i++)+(i++)+(i++);执行过后k的值为 ,i的值为 。(0级) A)9,6 B)12,5 C)18,6 D)15,5

24.如果int i=3,则printf(“%d”,-i++)的结果为 ,i的值为 。(1级) A)-3,4 B)-4,4 C)-4,3 D)-3,3

25.如果int i=3,int j=4,则k=i+++j执行之后k,i和j的值分别为 。(1级)++的优先级大于+ A)7,3,4 B)8,3,5 C)7,4,4 D)8,4,5

26.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为 。(1级)

main() {char x,y; x=?0?;y=?9?;

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

A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,58 27.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为 。(1级)

main()

{char c=?A?;int i=10; c=c+10; i=c%i;

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

A)75,7 B)75,5 C)K,5 D)因存在非图形字符,无法直接显示出来

28.已知在ASCII集中,字母A的序号为65,下面程序的输出结果为 。

4

C语言程序设计习题集

(1级)

main()

{char c1=?B?,c2=?Y?;

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

A)输出格式不合法,输出错误信息 B)67,88 C)66,89 D)C,X 29.C语言中最简单的数据类型包括 。(1级) A)整型,实型,逻辑型 B)整型,实型,字符型

C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型 30.C语言中,运算对象必须是整型数的运算符是 。(1级) A)% B)\\ C)% 和 \\ D)**

31..下列常数中,合法的C 常量是 。(1级) A)-0. B)?105? C)?AB? D)3+5

32.下列常数中,合法的C 常量是 。(1级) A)‘x-y’ B)?105? C)?Be? D)7f

33.下列常数中,合法的C 常量是 。(1级) A)?\\n? B)e-310 C)?DEF? D)?1234?

34.下列常数中,不合法的C 常量是 。(1级) A)1e0.1 B)2e1 C)?[? D”CHINA”

35.下列常数中,不合法的C 常量是 。(1级) A)-0x3bl B)123e+2.3 C)?}? D)6e+7

36.下列符号中,可以作为变量名的是 。(1级) A)+a B)12345e C)a3B D)5e+0

37.下列符号中,可以作为变量名的是 。(1级) A)+c B)*X C)_DAY D)next day

38.下面程序的输出结果是 。(1级) main()

{int x;

x=-3+4*5-6;printf(“%d”,x); x=3+4%5-6; printf(“%d”,x);

x=-3*4%-6/5; printf(“%d”,x);求余的优先级与乘除相同,负号优先级最高 x=(7+6)%5/2; printf(“%d”,x); } A)11 1 0 1 B)11 –3 2 1 C)12 –3 2 1 D)11 1 2 1 39.下面程序的输出结果是 。(1级)*=是赋值运算符号,右结合 main()

5

C语言程序设计习题集

{int x=2,y=0,z;

x*=3+2; printf(“%d”,x); x*=y=z=4; printf(“%d”,x); }

A)8 40 B)10 40 C)10,4 D)8,4 40.下面程序的输出结果是 。(1级) main() {int x=2,y=0,z; x+=3+2; printf(“%d”,x); x*=y=z=4; printf(“%d”,x); } A)7 28 B)无法计算 C)7,4 D)8,4

41.下面程序的输出结果是 。(1级) main() {int x=4,y=0,z; x*=3+2; printf(“%d”,x); x*=y= =(z=4); printf(“%d”,x); = =的优先级高于*= } A)14 40 B)20 0 C)20 4 D)14 4

42.下面程序的输出结果是 。(1级) main() {int i,j; i=16;j=(i++)+i;printf(“%d”,j); i=15;printf(“%d %d”,++i,i); } A)32 16 15 B)33 15 15 C)34 15 16 D)34 16 15

43.在C语言中,以下合法的字符常量是 。(1级) A)'\\084' B)'\\xF3' C)'0' D)\

44.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值为 。(1级)

A)1 B)2 C)2.0 D)2.5 45.下列程序的执行结果是 。(1级) #include #define sum 10+20 main() {

6

C语言程序设计习题集

int b=0,c=0; b=5;

c=sum*b;

printf(\}

A)100 B)110 C)70 D)150 46..下列程序的执行结果是 。(1级)

#include #define sum (10+20) mian() {

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

c=sum*b;

printf(\}

A)100 B)110 C)70 D)150 47.表达式(int)2.1416的值为 。(1级)

A)2 B)2.1 C)0 D)3 48.表达式(double)(20/3)的值为 。(1级)

A)6 B)6.0 C)2 D)3

49. 在下面几组数据类型中, 全是基本数据类型是哪一组 。 A)整型 实型 字符型 B)整型 数组 指针 C)数组 结构体 共用体 D)指针 逻辑型 空类型 50. 以下说法正确的是 。

A)在C程序中, 每行只能写一条语句.

B)在C程序中, 无论是整数还是实数, 其存放形式都一致. C)在C程序中, %是只能用于整数运算的运算符. D)在C程序中, 变量可以不必先定义就可使用.

51. 假设所有变量均为整型, 则表达式( a=5, b=2, a++, a+b ) 的值是 。 A)8 B)7

C)6 D)5

52. 若有以下定义, 则正确的赋值语句为 。

int a, b ; float x;

A)a=1; b=2; B)b++;

C)a=b=5 D)b= int (x) ; 53. .C语言规定标识符由 等字符组成.

A)字母 数字 下划线 B)中划线 字母 数字

7

C语言程序设计习题集

C)字母 数字 逗号 D)字母 下划线 中划线 54. 若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:

(float)(a+b)/2+(int)x%(int)y的值是 。强制类型转换的优先级高于除号

A)2.500000 B)3.500000 C)4.500000 D)5.000000

55. 以下表达式: 2+?a?+i*f, 其中i为整型变量,f为float型变量,则表达式的最终数据类型为 。

A)int B)float C)char D)double 56. 若有:int a,b=2;则a=(b*100+1.5e2)则a的值是 。

A) 250 B) 100.5 C)200.5 D) 300.5 57. 有如下语句:

printf(“%s,%5.3s\\n”,“COMPUTER”,“COMPUTER”);

执行语句后的最终结果为 。

A)COMPUTER ,CMP B)COMPUTER, CMP C)COMPU, CMP D)COMPU, CMP 58. 已知ch是字符型变量,下面不正确的赋值语句 是: 。(03试题)

A)ch=?\\0? B)ch=?a+b?

C)ch=?7?+?9? D)ch=7+9

59. 若x和y都为float型变量,且x=3.6, y=5.8 执行下列语句后输出结果为: 。(03试题) printf(“%f”,(x,y));

A)3.600000 B)5.800000

C)3.600000,5.800000 D)输出符号不够,输出不正确值

60.设变量a是整型,变量f是实型,变量I是双精度型,则表达式 10 + ?a?+I * f 值的数据类型: 。(往届试题)

A)int B)float C)double D)不确定

61. 已知字母A的ASCII码为十进制65,下面程序段的运行结果为: 。(往届试题)

char ch1,ch2;

ch1= ?A?+5-3; ch2= ?A?+6-3; printf(“%d, %c\\n”, ch1,ch2);

A)67, D B)B, C C)C, D D)不确定值 62.以下不正确的C语言标识符是 。(04~05第二学期试题)

A)ABC B)abc C)a_bc D)ab.c

63.设x、y均为float型变量,则以下不合法的赋值语句是 。(04~05第二学期试题)

8

C语言程序设计习题集

A) + + x; B)y = ( x%2 ) / 10; C)x * = y + 8; D)x = y = 0; 64. 若有说明语句:char c= ?\\64? ; 则变量C包含: 。(往届试题)

A)1个字符 B)2个字符

C)3个字符 D)说明不合法,C值不确定。 65. 表达式 18/4*sqrt(4.0)/8值的数据类型为 。(往届试题)sqrt开方

A)int B)float C)double D)不确定 66. 设整型变量a值为9,则下列表达式中使b的值不为4的表达式: 。(往届试题)

A)b=a/2 B)b=a%2 C)b=8-(3,a-5) D)b=a>5?4:2

67. 设有以下定义,则能使值为3的表达式是: 。(往届试题) int k=7, x=12;

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

C)x%=k D)(x%=k)-(k%=5) 68. 以下选项中是C语言的数据类型的是: 。(往届试题)

A)复数型 B)逻辑型 C)双精度型 D)集合型

二、填空题

1.C语言的数据类型有四大类,分别是 、 、 。(0级) 基本类型 构造类型 指针类型

2.C语言数据类型中构造类型包括三种,他们是 、 、 。(0级) .数组类型 结构体类型 共用体类型

3.C语言基本数据类型包括 、 、 、 。(0级) 整型 字符型 实型 枚举类型

4.在C语言中,程序运行期间,其值不能被改变的量叫 常量 。(0级) 5.在C语言中,常量有不同的类型,包括 、 、 和 等。(0级) 整型常量 实型常量 字符常量 字符串常量

6.符号常量是指 用一个标识符代表一个常量 。(0级)

7.整型常量和实型常量也称为 数值型常量 ,它们有正负之分。(0级) 8.在C语言中,在习惯上符号常量名用 大写 ,变量用 小写 。(大写或小写)(0级)

9.在C语言中,变量是 其值可以改变的量 。(0级)

10.变量也有不同类型,如 整形 、 实型 和 字符型 等。(0级) 11.C语言在定义变量的同时说明变量的 数据类型 ,系统在编译时就能根据变量定义及其 数据类型 为它分配相应数量的存储空间。(0级)

12.在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文

9

C语言程序设计习题集

件名的有效字符序列称为 标识符 。(0级)

13.在C语言中,标识符只能由 字母 、 数字 和 下划线 三种字符组成,且第一个字符必须 字母 或 下划线 。(0级)

14.在 C语言中,要求对所有用到的变量,遵循 先定义后使用 的原则。(0级)

15.可以用来表示C的整常数的进制是 十 、 十六 、 八 。(0级)

16.整型变量可分为 基本型 、 短整型 、 长整形 、 无符号 四种,分别用 int short long unsigned 。(0级)

17.在一个整常量后面加一个字母 L 和 l ,则认为是long int 型常量。(0级) 18.在C语言中,实数有两种表现形式,是 十进制 和 指数形式 。(0级) 19.实型变量分为 单精度 和 双精度 ,即float和double型。(0级) 20.C的字符常量是用 单括号 括起来的一个字符。(0级)

21.在一个变量定义语句中可以同时定义多个变量,变量之间用 逗号 隔开。(0级)

22.C语言中规定,在变量定义的同时也可以给变量赋初值,叫做 变量初始化 。(0级)

24.int型的取值范围是 -215~(215-1) 。(0级)

25.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能 字符 输出,也可以 整型 输出。(0级)

26.下面的程序 main()

{char c1,c2; c1='a';c2='b';

c1=c1-32;c2=c2-32; printf(\}

运行结果为 AB 。(0级)

27.在ASCⅡ代码表中可以看到每一个小写字母比相应的大写字母的ASCⅡ代码大 32 。(0级)

28.C的字符串常量是用 双引号 括起来的字符序列。(0级)

29.在C 语言中,系统在每一个字符串的结尾自动加一个“字符串结束标志符”即 ?\\0? ,以便系统据此数据判断字符串是否结束。(0级)

30.表达式10+'a'+1.5-0.5*'b'的结果 59.5 。(1级) 31.表达式10+'a'+1.5-567.345/'b'的结果是double型数据。(1级

33.在C语言中,加减乘除这些运算符需要两个运算对象,称为 双目 运算符。 34.在C语言中,算术运算符的结合性是 左结合 。(1级) 35.下面的程序

10

C语言程序设计习题集

mian()

{float x;int i; x=3.6;i=(int)x;

printf(\}

运行结果为 x=3.600000,i=3 。(1级)

36.如果int i=3,则printf(\执行后输出是 -3 ,i的结果是 4 。(1级)

37.在C语言中,表达式的类型有 , , , , , 。(1级)

赋值表达式 算术表达式 关系表达式 逻辑表达式 条件表达式 逗号表达式 38.逗号表达式的形式如下:

表达式1,表达式2

则逗号表达式的结果是 表达式2 的值.(1级)

39.表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是 赋值 表达式和 逗号 表达式,两个表达式执行完的结果是 18 和 18 .执行后X的值分别是 18 , 3 .(1级)

40.main()

{int i,j,m,n;

i=8;j=10;

m=++i;n=j++;

printf(\}

运行后i,j,m,n的值是 9,11,9,10 .(1级)

41.在C语言中的运算符优先级最小的是 逗号 运算符.(1级) 42.在C语言中,可以利用 强制类型转换 ,将一个表达式的值转换成指定的类型。

11

C语言程序设计习题集

第三章 顺序结构程序设计

一、选择题

1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将 ;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。(0级)

A)不予输出 B)输出空格

C)照样输出 D)输出不定值或0

2.在 scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统 。(0级) A)不予接收

B)并不给出出错信息,但不可能得出正确信息数据 C)能接受正确输入

D)给出出错信息,不予接收输入

3.下列说法正确的是 。(0级)

A)输入项可以是一个实型常量,如scanf(\;

B)只有格式控制,没有输入项也能进行正确输入,如scanf(\; C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如

scanf(\;

D)当输入数据时,必须指明变量的地址,如scanf(\;

4.根据题目中已给出的数据的输入和输出形式,程序中输入/输出语句的正确是 。(1级)

main() {

int a;float x;

printf(\输入语句 输出语句 }

输入形式 input a,x:3 2.1 输出形式a+x=5.10

A)scanf(\ //逗号

printf(\

B)scanf(\ //不是句号

12

C语言程序设计习题集

printf(\

C)scanf(\

printf(\ //6.1->.2

D)scanf(\printf(\ //输入不能用精度

5.以下程序的输出结果是 。(1级) main() {

int i=010,j=10,k=0x10; printf(\

A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,16 6.以下程序的输出结果是 。(1级) main() {

int i=011,j=11,k=0x11; printf(\}

A)9,11,17 B)9,11,11 C)11,11,11 D)11,11,16 7.以下程序的输出结果是 。(1级) #include main()

{printf(\ //null参考stdio.h

A)不确定的值(因变量无定义) B)0 C)-1 D)1 8.以下程序的输出结果是 。(1级) main() {

char c1='6',c2='0';

printf(\}

A)因输出格式不合法,输出出错信息 B)6,0,6,102 C)6,0,7,6 D)6,0,5,7 9.设有如下定义 int x=10,y=3,z; 则语句

printf(\的输出结果是 。(1级)

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

13

C语言程序设计习题集

10.设有如下定义 int x=10,y=5,z; 则语句

printf(\的输出结果是 。(1级)

A)1 B)0 C)4 D)3 11.以下程序的输出结果是 。(1级) main()

{int x=10,y=10;

printf(\ %d\\n\}

A)10 10 B)9 9 C)9 10 12.写出下面程序的输出结果 。(1级) main() {int x;

x=-3+4*5-6;printf(\x=3+4%5-6;printf(\x=-3*4%6/5;printf(\x=(7+6)%5/2;printf(\}

A)11 1 0 1 B)11 -3 2 1 C)12 -3 2 1 13.写出下面程序的输出结果 。(1级) main() {

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

z=x++-1;printf(\

z+=-x++ +(++y);printf(\}

A)2,0 3,0 B)2,1 3,0 C)2,0 2,1 14.写出下面程序的输出结果 。(1级) main() { int i,j;

i=20;j=(++i)+i;printf(\i=13;printf(\}

A)42 14,13 B)41 14,14 C)42 13 13 14

D)10 9 D)11 1 2 1 D)2,1 0,1 D)42 13 14

C语言程序设计习题集

15.若有定义:int x,y;char a,b,c;并有以下输入数据(此处,代表换行符) 1 2 A B C

则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是 。(1级)

A)scanf(\B)scanf(\C)scanf(\D)scanf(\16.若已知a=10,b=20,则表达式!a

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

17.printf函数中用到格式符\,其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为 。(1级)

A)从左起输出该字符串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字符,左补空格 D)输出错误信息 18.以下C程序,正确的运行结果是 。(1级) main() {

long y=-34567;

printf(\printf(\ //比较偏 printf(\printf(\}

A)y= -34567 B)y=-34567

y=- 34567 y=-34567 y=-0034567 y=-0034567 y=-34567 y=+ -34567

C)y=-34567 D)y= -34567

y=-34567 y=-0034567 y=-0034567 y=00034567

y=-34567 y=+34567

19. C程序的基本编译单位是 。(01~02第二学期试题)

A)函数 B)文件 C)源文件 D)子程序 20. 设有如下定义和执行语句,其输出结果为: 。(03试题) int a=3,b=3;

a = --b + 1; printf(“%d %d”,a,b);

15

C语言程序设计习题集

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

21. 根据定义和数据的输入方式,输入语句的正确形式为: 。(往届试题) 已有定义:float a1, a2; 数据的输入方式: 4.523 3.52

A)scanf(“%f %f ”, &a1,&a2); B)scanf(“%f ,%f ”, a1, a2);

C)scanf(“%4.3f ,%3.2f ”, &a1,&a2); D)scanf(“%4.3f %3.2f ”, a1,a2); 22. 以下程序的输出结果是: 。(往届试题) main( )

{ int I=012, j=12, k=0x12; printf(“%d,%d,%d\\n”,I, j, k );

A)10, 12, 18 B)12, 12, 12 C)10, 12, 12 D)12, 12, 18

23. 以下程序的输出结果是:(注:▂表示空格) 。(往届试题) main( )

{ printf(“\\n*s1=%8s*”, “china”);

printf(“\\n*s2=%-5s*”, “chi”) ; }

A)*s1=china▂ ▂ ▂* B)*s1=china▂ ▂ ▂*

*s2=chi* *s2=chi▂ ▂*

C)*s1=▂ ▂ ▂china* D)*s1=▂ ▂ ▂china*

*s2=▂ ▂chi * *s2=chi▂ ▂*

二.填空题

1.C语言中的语句可分为5类,即 、 、 、 、 。(0级) 1.控制语句 空语句 复合语句 函数调用语句 表达式语句 2.由一次函数调用加一个分号构成一个 函数调用 语句。(0级) 3.putchar函数的作用是 向终端输出一个字符 。(0级) 4.printf是C语言提供的标准输出函数,它的作用是 向终端格式输出 。(0级) 5.printf函数的“格式控制”包括两部分,他们是 格式说明 和 普通字符 。(0级)

6.对不同类型的语句有不同的格式字符。例如: d 格式字符是用来输出十进制整数, c 格式字符是用来输出一个字符, s 格式字符是用来输出一个字符串。(0级)

7.%-ms表示如果串长 小于 m,则在m列范围内,字符串向 左 靠, 右 补空格。(0级)

8.如果要输出字符“%”,则应该在“格式控制”字符串中用 %% 表示。(0级)

16

C语言程序设计习题集

9.getchar函数的作用是从终端输入一个字符。(0级)

10.符号“&”是 地址 运算符,&a是指 a在内存中的地址 。(0级) 11.scanf函数中的“格式控制”后面应当是 变量地址 ,而不是 变量名 。(0级)

12.C语言中的空语句就是 分号 。(0级)

13.复合语句是由一对 花括号 括起来的若干语句组成。(0级) 14.分析下面程序:

#include main() {

int x=2,y,z;

x*=3+2;printf(\x*=y=z=4;printf(\x=y=z;printf(\x=(y=z);printf(\}

程序的输出结果为 104044(表示回车换行符) 。(1级)

15.编制程序对实数a与b进行加,减,乘,除计算,要求显示如下结果。(答案不是唯一的) jia=70.000000 jian=30.000000 cheng=1000.000000 chu=2.5000000 程序:

#include void main(void) { (1) a=50.0;b=20.0;

printf(\ (2) ); printf(\ (3) ); printf(\ (4) ); printf(\ (5) ); }

将缺少的部分填在空白处。(1级) double a,b;a+b a-b a*b a/b

16.下列程序的输出结果是 。(1级) #include

17

C语言程序设计习题集

main() {char a; a='A';

printf(\}

65 A

17.分析下面程序 main() {

int x=2,y,z;

x*=3+2;printf(\x*=y=z=4;printf(\x=y=1;

z=x++-1;printf(\

z+=-x++ +(++y);printf(\}

程序的输出结果是 。(1级)

10402,03,0(表示回车换行符)

18.分析下面程序 main() {

int x,y;

x=16,y=(x++)+x;printf(\x=15;printf(\ //自右向左求解 x=20,y=x-- +x;printf(\x=13;printf(\}

程序的输出结果是 。(1级)

19.以下程序的输出结果为:____________。(03试题) main( )

{ float a=3.14, b=3.14159; printf(“%f, %5.3f\\n”,a,b); }

20.以下程序的输出结果为:____________。(04~05第二学期试题)

#include main( ) { char c1,c2;

c1=?a?;

18

C语言程序设计习题集

c2=?\\n?;

printf(“%c%c”,c1,c2); }

三、编程题

1.从键盘上输入一个大写字母,要求改用小写字母输出。(1级) 2.编写程序,求方程ax2+bx+c=0的解x。(1级) 3.请编写一个程序,能显示出以下两行文字。(1级) I am a student. I love China.

19

C语言程序设计习题集

第四章 选择结构程序设计

一、选择题

1.下列运算符中优先级最高的是 。(0级)

A)> B) + C) && D)!=

2.以下关于运算符优先级的描述中,正确的是 。(0级)

A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算 B)&&(逻辑与)>算术运算>关系运算>赋值运算

C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算 D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或) 3.逻辑运算符的运算对象的数据类型 。(0级)

A)只能是0或1 B)只能是.T.或.F. C)只能是整型或字符型 D)任何类型的数据

4.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是 。(1级)

A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100) C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100) D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100) 5.以下程序的运行结果是 。(1级) main( ) {

int c,x,y; x=1; y=1; c=0;

c=x++||y++; //书上说的或条件如果前面的成立,后面的就不执行了 printf(“\\n%d%d%d\\n”,x,y,c); }

A)110 B)211 C)011 D)001 6.以下程序的运行结果是 。(1级) main( ) {

int c,x,y; x=0; y=0;

20

C语言程序设计习题集

c=0;

c=x++&&y++;

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

A)100 B)211 C)011 D)001 7.判断字符型变量ch为大写字母的表达式是 。(1级)

A)?A?<=ch<=?Z? B)(ch>=?A?)&(ch<=?Z?) C)(ch>=?A?)&&(ch<=?Z?) D)(ch>=?A?)AND(ch<=?Z?) 8.判断字符型变量ch为小写字母的表达式是 。(1级)

A)?a?<=ch<=?z? B)(ch>=a)&&(ch<=z) C)(ch>=?a?)||(ch<=?z?) D)(ch>=?a?)&&(ch<=?z?) 9.以下if语句书写正确的是 。(1级)

A)if(x=0;) B)if(x>0)

printf(”%f”,x); {x=x+1; printf(”%f”,x);} else printf(”%f”,-x); else printf(”%f”,-x);

C)if(x>0); D)if(x>0)

{x=x+1; printf(”%f”,x);} {x=x+1; printf(”%f”,x) } else printf(”%f”,-x); else printf(”%f”,-x); 10.分析以下程序: main( )

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

if(x=a+b) printf(“** **\\n”); else printf(“## ##\\n”); 以上程序 。(1级)

A)有语法错,不能通过编译 B)通过编译,但不能连接 C)输出** ** D)输出## ## 11.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 。(1级) main( ) { int x;

scanf(“%d”,&x);

if(x++>5) printf(“%d”,x); /封号表示一个完整的语句,所以++起作用 else printf(“%d\\n”,x--); }

A)7和5 B)6和3 C)7和4 D)6和4 12.写出下面程序的执行结果 。(1级) main( )

{int x,y=1;

21

C语言程序设计习题集

if(y!=0) x=5; printf(“%d\\t”,x); if(y= =0) x=3; else x=5;

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

A)1 3 B)1 5 C)5 3 D)5 5

13.写出下面程序的执行结果 。(2级) main()

{int x=1,y=1,z=0; if(z<0)

if(y>0) x=3; else x=5;

printf(\if(z=y<0) x=3; else if(y= =0 ) x=5; else x=7;

printf(\printf(\}

A)1 7 0 B)3 7 0 C)5 5 0 D)1 5 1

14.假定所有变量均已正确说明,下列程序段运行后x的值是 。(1级) a=b=c=0;x=35; if(!a) x=-1; else if(b); if(c) x=3; else x=4;

A)34 B)4 C)35 D)3 15.写出下面程序的运行结果是 。(2级) main()

{int x,y=1,z; if(y!=0) x=5;

printf(\if(y= =0) x=3; else x=5;

printf(\x=1; if(z<0)

22

C语言程序设计习题集

if(y>0)x=3; else x=5;

printf(\if(z=y<0)x=5; else x=7;

printf(\printf(\if(x=y=z)x=3; printf(\printf(\}

A)x=5 x=5 B)x=5 x=5

x=1 x=1

x=7 z=0 x=5 z=0 x=3 z=1 x=3 z=0

C)x=5 x=5 D)x=5 x=5

x=5 x=1

x=7 z=0 x=7 z=0 x=3 z=1 x=3 z=0

16.若有以下函数关系 x<0 → y=2x x>0 → y=x x=0 → y=x+1

下面程序段能正确表示以上关系的是 。(2级)

A)y=2x; B)y=2x; if(x!=0) if(x<=0)

if(x>0)y=x; if(x= =0) y=x+1; else y=x+1; else y=x; C)if(x>=0) (D)y=x+1;

if(x>0) y=x; if(x<=0)

else y=x+1; if(x<0) y=2x; else y=2x; else y=x;

17.若有以下变量定义: float x; int a,b;

则正确的switch语句是 。(1级) A)switch(x)

{ case 1.0:printf(\case 2.0:printf(\

23

C语言程序设计习题集

}

B)switch(x)

{ case 1,2:printf(\case 3:printf(\}

C)switch(a+b)

{ case 1:printf(\case 2*a:printf(\}

D)switch(a+b)

{ case 1:printf(\

case 1+2:printf(\}

18. 以下关于运算符优先顺序的描述正确的是 。(02~03第一学期试题)

A)关系运算符<算术运算符<赋值运算符<逻辑运算符 B)逻辑运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑运算符

19. 能正确表示a>=10或a<=0的关系表达式是 。(02~03第一学期试题) A)a>=10 or a<=0 B)a>=10 | a<=0

C)a>=10 && a<=0 D)a>=10 | | a<=0

20. 以下不正确的if 语句形式是 。(02~03第一学期试题)

A)if ( x > y && x != y ) ; B)if ( x = = y ) x + = y ;

C)if ( x != y ) scanf ( “%d”, &x) else scanf ( “%d”, &y); D)if ( x < y ) { x++; y++;}

21. 当 a = 1, b = 3 , c = 5, d = 4 时, 执行完下面程序段后 x 的值为 。(02~03第一学期试题)

if ( a < b )

if ( c < d ) x = 1 ; else

if ( a < c )

if ( b < d ) x =2 ; else x = 3 ; else x = 6 ; else x = 7 ;

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

22. 以下if语句中语法错误的是 。(01~02第二学期试题)

A)if (a>b)printf(“%f”,a); B)if(a>b)printf(“%f”,a);

else printf(“%f”,b);

C)if(a>b)printf(“%f”,a) D)if(a>b)printf(“%f”,b);

else printf(“%f”,b); else printf(“%f”,a);

24

C语言程序设计习题集

23. 能表示整数x符合下面两个条件的语句是 。(01~02第二学期试题) (1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除.

A)(x%4==0&&x0!=0)||x@0==0 B)(x%4==0||x0!=0)&&x@0==0 C)(x%4==0&&x@0!=0)||x0==0 D)(x0==0||x%4!=0)&&x@0==0

24. 设有如下定义:char ch=?z?,则执行下面语句 后变量ch是值为: 。(03试题)

ch=(?A?<=ch&&ch<=?Z?)?(ch+32):ch

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

25. 若I为整型变量,则下列程序段的运行结果为 。(03试题) I=322;

if(I%2==0) printf(“#####”) else printf(“*****”);

A)##### B)#####*****

C)***** D)有语法错误,无法输出结果

26. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。(03试题)

if (x>y||xz) z=x; x=y; y=z;

A)x=50, y=80, z=80 B)x=50, y=30, z=30 C)x=30, y=50, z=80 D)x=80, y=30, z=50

27. C语言中,要求运算对象必须是整型的运算符是: 。(往届试题)

A)> B)++ C)% D)!=

28. 已知 int x=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为: 。(往届试题) if (x>y||xz) { z=x; x=y; y=z; }

A)x=50, y=80, z=80 B)x=50, y=30, z=30

C)x=30, y=50, z=80 D)x=80, y=30, z=50

29. 以下程序的输出结果是 。(04~05第二学期试题) main( ) {int x=2,y=-1,z=2;

if (x

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

25

C语言程序设计习题集

30. 设a、b和c是int型变量,且a=2,b=4,c=6,则下面表达式中值为0的是: 。(往届试题)

A)‘a’+ ?b? B)a<=b

C)a||b+c&&b-c D)!( (a

31. 在C的if语句中,可用作判断的表达式是: 。(往届试题)

A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式

32. 下面能正确表示变量a在区间[0,5]或(6,10)内的表达式为: 。(往届试题)

A)0<=a || a<=5 ||6

switch(c)

{ case 常量表达式1:语句1; ……

case 常量表达式n-1:语句n-1; default 语句n;}

其中括号内表达式c的类型: 。(往届试题)

A)可以是任意类型 B)只能为整型

C)可以是整型或字符型 D)可以为整型或实型 34. 以下if 语句语法正确的是: 。(往届试题)

A)if ( x > 0 )

printf(“ %f ”, x )

else printf(“%f”, - x ); B)if ( x > 0 )

{ x = x + y ; printf (“%f ”, x ) ; } else printf ( “%f ”, - x ) ; C)if ( x > 0 )

{ x = x + y ; printf (“%f ”, x ) ; } ; else printf ( “%f ”, - x ) ; D)if ( x > 0 )

{ x = x + y ; printf (“%f ”, x ) } else printf ( “%f ”, - x ) ;

35.为了表示关系x>=y>=z,应使用C语言表达式 。(1级) A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)

36.若欲表示在if后a不等于0的关系,则能够正确表示这一关系的表达式

26

C语言程序设计习题集

为 。(1级) A)a<>0 B)!a C)a=0 D)a

37.下面程序的输出结果是 。(1级) main() {int x,y,z; x=y=1; z=x++-1; printf(“%d,%d\\t”,x,z); z+=-x+++(++y||++z); printf(%d,%d”,x,z); }

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

38.下面程序的输出结果是 。(1级) main() {int x=40,y=4,z=4; x=y= =z; printf(“%d”,x); x=x= =(y-z); printf(%d”,x); } A)4 0 B)4 1 C)1 1 D)1 0

39.若x=3,y=z=4,则下列表达式的值分别为 。(1级) (1)(z>=y>=x)?1:0 (2)z>=y&& y>=x

A)0 1 B)1 1 C)0 0 D)1 0

40.若x=3,y=z=4,则下列表达式的值分别为 。(1级) (1)(z>=y>=x)?1:0 (2)y+=z,x*=y

A)0 24 B)1 8 C)0 8 D)1 12

41.在以下一组运算符中,优先级最高的运算符是 。(1级)

A)<= B)= C)% D)&& 42.以下程序的输出结果是 。(1级) main() {

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

k=(++a<=0)&&!(b--<=0); printf(\}

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

27

C语言程序设计习题集

43.若已定义int a=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执行结果是 。(1级)

a++<=25&&b--<=2&&c++?printf(\b=%d,c=%d\\n\

A)(***a=25,b=14,c=19) B)(***a=26,b=13,c=19) C)(###a=25,b=14,c=19) D)(###a=26,b=13,c=19)

二、填空题

1.在C语言中,对于if语句,else子句与if子句的配对约定是 。(0级) .else与它前面最近的一个if配对

2.阅读下面程序,写出它的功能。(1级) #include main()

{int label; char c;

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

{if(c= ='.') label=1; c=getchar(); }

if(label= =1) printf(\

else printf(\}

由键盘输入一个数,打印出它的类型标识符

3.以下两条if语句可合并成一条if语句为 。(1级) if(a<=b) x=1; else y=2;

if(a>b) printf(\else printf(\

答案:if(a<=b) {x=1; printf(“ * * * * y=%d\\n”,y); }

else { y=2; printf(“ # # # # x=%d\\n”,x); }

4.以下程序的功能是计算一元二次方程ax2+bx+c=0的根,补足程序中空缺的语句。(2级)

#include main( ) {

28

C语言程序设计习题集

float a,b,c,_abs,_derta,_doublea,part1,part2; printf(\

scanf(\if( (1) ) a = = 0

if( (2) ) printf(\ b = = 0

else printf(\else

{_derta=b*b-4*a*c;

_doublea=2*a; part1=-b/(2*a); _abs=abs(_derta);

part2=sqrt(_abs)/_doublea;

if( (3) ) _derta<0

printf(\else

printf(\

} }

5.设有程序片段如下:

switch(class)

{case 'A':printf(\case 'B':printf(\case 'C':printf(\case 'D':printf(\default:printf(\}

若class的值为'C',则输出结果是 。(1级) OK! NO! ERROR!

6.以下程序段的运行结果是 。(1级) int x=1,y=0; switch(x) {case 1:

switch(y) {

case 0:printf(\

29

C语言程序设计习题集

case 1:printf(\ }

case 2:printf(\}

x=1 y=0 x=2 7.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。(1级) if语句:

if(x<60) m=1;

else if(x<70) m=2; else if(x<80) m=3; else if(x<90) m=4;

else if(x<100) m=5; switch语句:

switch( (1) )x/10 {

(2) m=1;break;

case 0: case 1: case 2: case 3: case 4: case 5:

case 6:m=2;break; case 7:m=3;break; case 8:m=4;break;

(3) m=5; case 9: }

8. 输入3个实数 a, b, c要求按从大到小的顺序输出三数。(01~02第二学期试题) main( ) { float a,b,c,t;

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

{t=a; __(1)__ b=t;} a=b if(__(2)__) a

{__(3)__ b=c; c=t;} t=b printf(“%f,%f,%f”,a,b,c); }

9. 输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。请在()内填入缺省的内容。(03试题) main( )

{ char ch;

30

C语言程序设计习题集

scanf(“%c”,&ch);

if (___(1)____) ch=ch+32; ch>=?A&&ch<=?Z? else if(ch>=?a?&&ch<=?z?) (__(2)___); ch=ch-2

printf(”%c\\n”,ch); }

10. 以下程序的运行结果是:_________。(03试题) main( )

{ int a = 2, b = 3, c ;

c = a ;

if ( a>b ) c = 1 ;

else if ( a == b ) c = 0 ; else c = -1 ; printf ( “%d\\n”, c ) ; } -1

11. 以下程序的运行结果是:_________。(04~05第二学期试题)

main( ) { int x;

x=5;

if (++x>5) printf(“x=%d”,x);

else printf(“x=%d”,x--); } x=6

12.在C语言中提供的条件运算符\的功能是 .(1级)

根据条件判定值,从两种选择对象中,选取一个作为整个运算的结果 13.条件表达式a?b:c,其中a,b,c是三个运算分量.当运算分量a的值为真,则 ,否则 . (1级)

整个条件表达式的结果就取自运算分量b的结果,整个条件表达式的结果就取自运算分量c的结果

14.在C语言中的逻辑运算符的优先级是 ! 高于 && 高于 || .(1级) 15.main()

{int a,b,c; a=b=c=1; a+=b; b+=c; c+=a;

printf(\printf(\

31

C语言程序设计习题集

(a>=b>=c)?printf(\printf(\} 运行结果为

(1)2 (2)3

CC

a=2,b=2,c=4

(1级)

16.用C语言描述下列命题(1级) (1)a小于b或小于c ab&&a>c

(3)a或b中有一个小于c a

17.main()

{int x=1,y=1,z=1; y=y+z;x=x+y;

printf(\

printf(\printf(\printf(\}

运行结果为 。(1级)3,2,3,3

18.mian()

{int x,y,z; x=3; y=z=4;

printf(\printf(\}

运行结果为 。(1级)0 1

19.若x=3,y=2,z=1,求下列表达式的值 (1)x

(2)x

表达式的值分别是(1) 3 ;(2) 2 ;(3) 3 。(1级)

20.表示条件:10<100或x<0的C语言表达式是 x>10&&x<100||x<0 。(1级)

21.分析下列程序

32

C语言程序设计习题集

main() {

printf(\printf(\printf(\

printf(\

printf(\}

程序的输出结果是 10110 。(1级)

三、编程题

1.编写一个程序,要求有键盘输入三个数,计算以这三个数为边长的三角形的面积。(1级)

2.输入圆的的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长,当k=3时,既要求求圆的周长也要求出圆的面积。编程实现以上功能。(1级)

3.编写程序,判断某一年是否是闰年。(1级)

4. 有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。(03试题) x2 (x<0)

y = -0.5x+10 (0?x<10)

x-x (x?10)

5. 编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为?A?;80~89分为 ?B?;70~79分为?C?;60~69分为?D?;60分以下为 ?E?。(往届试题)

6. 试编程完成如下功能:

输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。(往届试题)

33

C语言程序设计习题集

第五章 循环结构程序设计

一、选择题

1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为 的操作,否则,循环将会无限制地进行下去。(0级)

A)0 B)1 C)成立 D)2

2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的 不能丢,它表示do-while语句的结束。(0级)

A)0 B)1 C); D),

3.for语句中的表达式可以部分或全部省略,但两个 不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。(0级)

A)0 B)1 C); D), 4.程序段如下 int k=-20;

while(k=0) k=k+1;

则以下说法中正确的是 。(1级)

A)while循环执行20次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 5.程序段如下 int k=1;

while(!k==0) {k=k+1;printf(\说法正确的是 。(1级)

A)while循环执行2次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 6.以下for循环是 。(1级) for(a=0,b=0;(b!=123)&&(a<=4);a++)

A)无限循环 B)循环次数不定 C)执行4次 D)执行5次 7.在下列程序中,while循环的循环次数是 。(1级) main( ) { int i=0; while(i<10)

{if(i<1) continue; if(i= =5) break; i++;

34

C语言程序设计习题集

} ...... }

A)1 B)10 C)6 D)死循环、不能确定次数

8.程序段如下

int k=0; while(k++<=2) printf(\则执行结果是 。(1级)

A)1 B)2 C)0 2 3 1 3 4 2 9.程序段如下 int k=0;

while(k++<=2); printf(\则执行结果是last= 。(1级)

A)2 B)3 C)4 10.执行下面的程序后,a的值为 。(1级)main() {int a,b;

for(a=1,b=1;a<=100;a++) {if(b>=20)break;

if(b%3==1) {b+=3; continue; } b-=5; } }

A)7 B)8 C)9 11.以下程序的输出结果 。(1级) main() {

int x=3; do

{printf(\}while(--x); }

A)1 B)30 3 C)1 -2 12.定义如下变量:

35

D)无结果 D)无结果

D)10

D)死循环

C语言程序设计习题集

int n=10;

则下列循环的输出结果是 。(1级)

while(n>7) {n--;

printf(\}

A)10 B)9 C)10 D)9 9 8 9 8 8 7 8 7 7 6 13.以下程序的输出结果 。(1级) main() {int n=0;

while(n++<=1) printf(\printf(\}

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

14.以下程序的输出结果是 。(1级) main() {int i;

for(i=1;i<=5;i++) {if(i%2)printf(\else continue; printf(\}

printf(\}

A)*#*#*#$ B)#*#*#*$ C)*#*#$ 15.以下程序的输出结果是 。(1级) main() {int a=0,i;

for(i=0;i<5;i++) {swich(i) {case 0:

case 3:a+=2; case 1:

case2:a+=3;

36

D)#*#*$

C语言程序设计习题集

default:a+=5; }

}

printf(\}

A)41 B)13 C)10 D)20

16.以下程序的输出结果是 。(1级) #include main()

{int i=0,a=0; while(i<20)

{for(;;) {if((i)= =0) break;else i--;} i+=11; a+=i; }

printf(\}

A)21 B)32 C)33 D)11

17.当输入为\时,下面程序的执行结果是 。(1级) #include main() {char c; c=getchar();

while((c=getchar())!='?') putchar(++c); }

A)Quert B)rvfsu C)quert? D)rvfsu?

18.当输入为\时,下面程序的执行结果是 。(1级) #include main()

{while(putchar(getchar())!='?');} A)quert B)Rvfsu C)quert? D)rvfsu?

19.当输入为\时,下面程序的执行结果是 。(2级) #include main() {char c; c=getchar(); while(c!='?') {

putchar(c);

37

C语言程序设计习题集

c=getchar(); } }

A)quert B)Rvfsu C)quert? D)rvfsu?

20.在C语言的循环语句for,while,do-while中,用于直接中断最内层循环的语句是 。(0级)

A)swich B)continue C)break D)if

21.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是 。 (1级)

for(i=5;i;i--)

for(j=0;j<4;j++)

{ }

A)20 B)24 C)25 D)30

22.以下程序的功能是:按顺序读入10名学生的4门课程的成绩,计算出每位学生的平均分并输出,程序如下:

main() {int n,k;

float score,sum,ave; sum=0.0;

for(n=1;n<=10;n++) {for(k=1;k<=4;k++)

{scanf(\ave=sum/4.0;

printf(\} }

上述程序有一条语句出现在程序的位置不正确。这条语句是 。(2级)

A)sum=0.0; B)sum+=score;

C)ave=sum/4.0; D)printf(\

23. 有如下程序段, 其执行结果为 。(02~03第一学期试题) for ( n = 10; 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

24. 循环语句中的for语句,其一般形式如下: for(表达式1;表达式2;表达式3) 语句

其中表示循环条件的是 。(01~02第二学期试题)

38

C语言程序设计习题集

A)表达式1 B)表达式2 C)表达式3 D)语句 25.定义如下变量: int n=10;

则下列循环的输出结果是 。(01~02第二学期试题) while (n>7){ n--;printf(“%d”,n); }

A) 10 B) 9 C) 10 D) 9

9 8 9 8 8 7 8 7

7 6 26. 下面程序段的运行结果是: 。(03试题) x=y=0; while(x<15) y++, x+=++y; printf(“%d, %d”, y, x);

A)20, 7 B)6, 12 C)20, 8 D)8, 20

27. 以下程序的运行结果是: 。(03试题) main( ) { int a=2, i ;

for(i=0;i<3;i++) printf(“M”,f(a) ) ; } f( int a)

{ int b=0,c=3;

b++; c++; return(a+b+c); }

A)7 10 13 B)7 7 7 C)7 9 11 D)7 8 9

28. 下面程序的运行结果是: 。(往届试题) main( )

{ int y=10;

do { y--; } while(--y) ; printf(“%d\\n”,y--); }

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

29. 下面有关for循环的正确描述是 。(04~05第二学期试题)

A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 30. 以下能正确计算1×2×3×…×10的程序段是 。(04~05第二学期试题)

39

C语言程序设计习题集

A)do {i=1;s=1; s=s*i; i++; } while(i<=10); B)do {i=1;s=0; s=s*i; i++; } while(i<=10); C)i=1;s=1; do {s=s*i; i++; } while(i<=10); D)i=1;s=0; do {s=s*i; i++; } while(i<=10); 31. 以下程序段 。(04~05第二学期试题) x=-1; do { x=x * x;} while(!x);

A)是死循环 B)循环执行二次

C)循环执行一次 D)有语法错误 32. 下面程序的运行结果是: 。(往届试题) #include main( )

{ int y=10;

do { y--; } while(--y) ; printf(“%d\\n”,y--); }

A)-1 B)1 C)8 D)0 33. 定义如下变量和数组: int I;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面执行语句的结果为: 。(往届试题) for(I=0;I<3;I++)

printf(“=”,x[I][2-I]);

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 34. 以下程序的运行结果是: 。(往届试题)

main( ) { int n=4; while(n--)

printf (“-”,--n);}

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

35. 设有以下程序段,则执行该程序后为: 。(往届试题) int x = 0, s = 0 ;

while ( !x != 0 ) s += ++ x ; printf ( “ %d ”, s ) ;

A)运行程序段后输出0 B)运行程序段后输出1

40

C语言程序设计习题集

C)程序段中的控制表达式是非法的 D)程序段执行无限次

36. 下面程序的运行结果是: 。(往届试题) #include main( ) { int I ;

for ( I = 1; I <=5; I++) switch ( I%5 )

{ case 0: printf ( “ * ” ); break; case 1: printf ( “ # ” ); break; default : printf (“\\n”);

case 2: printf ( “ &” ); break; } }

A)#&&* B)#& C)# D)#&

& &

&* & *

& *

二、填空题

1.while语句的特点是 (1) ,do-while语句的特点是 (2) 。(0级) .(1)先判断条件是否成立(为真),若成立(为真)再执行循环语句 (2)先执行循环语句,再判断条件是否成立(为真),若成立则继续执行循环,

若不成立,则结束循环。do-while至少执行一次循环语句

2.将for(表达式1;表达式2;表达式3)语句改写为while语句是 。(0级) .表达式1;

while(表达式2) 表达式3;

3.break语句的功能是 。(0级)

终止包含它的最内层循环的执行。或从switch-case语句中跳出,执行后面的语句 4.break语句只能用于 switch-case语句 语句和 循环 语句中。(0级) 5.continue语句的作用是 结束本次循环执行 ,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。(0级)

6.在循环中,continue语句与break语句的区别是:continue语句只是 结束本次循环,后进行循环的条件判定,即不终止整个循环的执行过程 ,break语句是 终止整个循环的执行,不再进行条件判定 。(0级)

7.循环的嵌套是指 终止整个循环的执行,不再进行条件判定 。(0级) 8.要使以下程序段输出10个整数,请填入一个整数: for(i=0;i<= 18 ;printf(\41

C语言程序设计习题集

9.goto语句的用途是 与if语句构成循环结构 和 从循环体内转到循环体外 。(0级)

10.while语句的特点是 先判断表达式,后执行语句 ,do_while语句的特点是 先执行语句,后判断表达式 。(0级)

11.把for(表达式1;表达式2;表达式3);改写为等价的while语句为 。(0级) 表达式1;

while(表达式2) {语句;表达式3;}

12.语句标号由标识符表示,由 字母 , 数字 和 下划线 组成。第一个字符必须是字母或下划线。(0级) 三、程序填空题

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

main()

{float x,amax,amin; scanf(\amax=x; amin=x;

while x<0 {if(x>amax) amax=x;

if (x

printf(\}

2.下面程序可求出1~1000的自然数中所有的完数(因子和等于该数本身的数)请填空。(03试题)

main( )

{ int m, n, s;

for(m=2;m<1000;m++) { ____(1)s=0____ for(n=1;n<=m/2;n++)

if(__(2)m%n= =0___) s+=n; if(__(3)s==m ___) printf(“%d\\n”, m); } }

3.以下程序的功能是根据e?1?请填空:(04~05第二学期试题) main( )

42

111?6精度要求为10。???...求e的近似值,

1!2!3!C语言程序设计习题集

{int i=1; double e,new; e=1.0; new=1.0; while( (1) ) {new/=(double) i; e+=new; (2)i++ ;} printf(“e=%e\\n”,e);

}

四、读程序写结果题

1.下面程序的输出结果是 。(1级) main() {int n=0;

while(n++<=1) printf(\printf(\} 1,2,3

2.下面程序的输出结果是 。(1级) main() {int s,i;

for(s=0,i=1;i<3;i++,s+=i) printf(\}

02

3.下面程序的输出结果是 。(1级) main()

{int i=10,j=0; do

{j=j+i;i--;} while(i>2);

printf(\}

4.设有以下程序 main() {int n1,n2;

scanf(\

43

C语言程序设计习题集

while(n2!=0) {n1=n2; n2=n2/10;

printf(\} }

程序运行后,如果从键盘上输入1298,则输出结果为 8921 。(1级)

5.下面程序的输出结果是 s=6 。(1级) main() {int s=0,k;

for(k=5;k>=0;k--) {swich(k) {case 1:

case 5:s++;break; case 3:

case 4:break; case 0:

case 2:s+=2;break; } }

printf(\}

6.下面程序运行结果是: 6 。(03试题) main( ) { int x, i ;

for( i=1,x=1; i<=50; i++ ) { if(x>=10) break;

if(x%2==1) { x+=5;continue;} x - = 3;}

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

7.下面程序运行结果是: 。(04~05第二学期试题)

#include main( ) { int i,j;

for(i=4;i>=1;i--) { printf(“*”);

44

C语言程序设计习题集

for(j=1;j<=4-i;j++) printf(“*”); printf(“\\n”); } } * ** *** ****

8.下面程序的运行结果是: 。(往届试题)main( ) { int i;

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

{ case 0: printf(“*”) ; break; case 1: printf(“#”) ; break; default: printf(“\\n”); case 2: printf(“&”); }

}

9.下面程序的运行结果是:_________。(往届试题) # include main( ) { int i, j ;

for ( i = 0 ; i<= 3; i++ ) { for ( j = 0; j<=5 ; j++ )

{ if ( i==0|| j==0|| i==3|| j==5) printf(“*”); else printf( “ ” ) ;} printf(“\\n”); } }

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

五、编程题

45

重复 C语言程序设计习题集

1.编写程序,求两个整数的最大公约数。(1级)

2.把输入的整数(最多不超过5位)按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。(1级)

3.中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有100个钱,要买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。请写出求解该问题的程序。(1级)

4.求100~200间的全部素数。(1级)

5.整元换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同换法,请编写求解此问题的程序。(1级)

6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,...,编写程序求这个数列的前20项之和。(1级)

7.编写程序,利用公式e=1+1/1!+1/2!+1/3!+....+1/n!求出e的近似值,其中n的值由用户输入(用于控制精确度)。(1级)

8..一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6就是完全数,请编写一程序,求出1000以内的整数中的所有完全数。其中1000由用户输入。(2级)

9.编一程序,将2000年到3000年中的所有闰年年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。(1级)

10.请编写一程序,打印出九九乘法口诀表(例:1*1=1)。(1级) 11.请编写一程序,将所有“水仙花数”打印出来,并打印出其总数。“水仙花数”是一个其各位数的立方和等于该整数的三位数。(04~05第二学期试题)

12.编写一程序,求1-3+5-7+.........-99+101的值。(1级)

13.编写程序,计算1!+2!+3!+.......+n!的值,其中n的值由用户输入。(1级) 14.求sn=a+aa+aaa+aaaa+......+aa.....a的值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5)。n和a的值由键盘输入,请编程实现以上和过程。(1级)

15.编写程序,用迭代法求x=√a的近似根。求平方根的迭代公式为:Xn+1=(Xn+a/Xn)/2。要求前后两次求出的x的差的绝对值小于0.00001。(1级)

16.一个求从100米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,求它在第10次落地时共经过多少米?第10次反弹多高?编写程序求解该问题。(1级)

17.若有如下公式:

?26?

112 +

122 +

132。。。。。。+ +。

1n2

试根据上述公式编程计算? 的近似值 (精确到10-6)。(03试题)

46

C语言程序设计习题集

第六章 数组

一、选择题

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

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

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

D ) #define SIZE 10 int a[SIZE];以下能对一维数组a进行正确初始化

的语句是 。(0级)

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

C)int a[ ]={0}; D)int a[10]={10*1};

4.不是给数组的第一个元素赋值的语句是 。(0级)

A)int a[2]={1}; B) int a[2]={1*2}; C) int a[2];scanf (“%d”,a); D)a[1]=1; 5.下面程序的运行结果是 。(1级) main() {int a[6],i;

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

{ a[i]=9*(i-2+4*(i>3))%5; printf(\} }

A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0

6.下列定义正确的是 。(1级)

A) static int a[]={1,2,3,4,5} B) int b[]=(2,5) C) int a(10) D) int 4e[4]

7.此题不做!若有说明int a[][4]={0,0};则下列叙述不正确的是 。(0级) A) 数组a的每个元素都可以得到初值0 B) 二维数组a的第一维的大小为1

C) 因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a

的行数为1

47

C语言程序设计习题集

D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值

8.设有char str[10],下列语句正确的是 。(1级) A) scanf(\ B) printf(\ C) printf(\ D) printf(\

9.下列说法正确的是 。(0级)

A) 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组 B) 在C语言中,数组元素的个数可以不确定,允许随机变动 C) 在C语言中,数组元素的数据类型可以不一致

D) 在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数 10.假设array是一个有10个元素的整型数组,则下列写法中正确的是 。 (1级)

A) array[0]=10 B) array=0 C) array[10]=0 D) array[-1]=0

11.执行以下程序段后,a的值是 。(1级) static int a[]={5,3,7,2,1,5,4,10}; int a=0;k;

for(k=0;k<8;k+=2) a+=*(a+k);

A) 17 B) 27 C) 13 D) 有语法错误,无法确定 12.分析下列程序 main()

{int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2;

for(i=0;i

上述程序运行后,输出的结果是 。(1级)

A)2 B)1 C)0 D)3 13. 若有以下定义:

int a[5]={ 5, 4, 3, 2, 1 } ; char b= ?a?, c, d, e;

则下面表达式中数值为2的是 。(02~03第一学期试题) A)a [3] B)a [e – c] C)a [d-b] D)a [ e-b ]

14.下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个

48

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

Top