C语言程序复习题及参考答案

更新时间:2024-05-31 12:58:01 阅读量: 综合文库 文档下载

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

C语言程序设计

目 录

第一章 C语言程序设计概述 .................................................................................... 1

一、主要内容......................................................................................................... 1 二、练习题部分..................................................................................................... 1 三、参考答案......................................................................................................... 3 第三章 数据类型、运算符和表达式........................................................................ 4

一、主要内容......................................................................................................... 4 二、练习题............................................................................................................. 5

(一)练习题之数据类型.............................................................................. 5 (二)练习题之 运算符和表达式................................................................ 8 三、参考答案....................................................................................................... 13

(一)练习题之数据类型 参考答案.......................................................... 13 (二)练习题之 运算符和表达式 参考答案............................................ 14

第四章 顺序程序设计.............................................................................................. 15

一、主要内容....................................................................................................... 15 二、练习题........................................................................................................... 15 三、参考答案....................................................................................................... 16 第五章 选择结构程序设计...................................................................................... 17

一、主要内容....................................................................................................... 17 二、练习题........................................................................................................... 17 三、参考答案....................................................................................................... 22 第六章 循环结构...................................................................................................... 26

一、主要内容....................................................................................................... 26 二、练习题........................................................................................................... 26 三、参考答案....................................................................................................... 35 第七章 数组.............................................................................................................. 40

一、主要内容....................................................................................................... 40 二、练习题........................................................................................................... 40 三、参考答案....................................................................................................... 50 第八章 函数.............................................................................................................. 55

一、主要内容....................................................................................................... 55 二、练习题........................................................................................................... 56 三、参考答案....................................................................................................... 63 第九章 预处理命令.................................................................................................... 68

一、主要内容....................................................................................................... 68 二、练习题........................................................................................................... 68 第十章 指针.............................................................................................................. 70

一、主要内容....................................................................................................... 70 二、练习题........................................................................................................... 70 三、参考答案....................................................................................................... 75 第十一章 结构体和共用体...................................................................................... 77

一、主要内容....................................................................................................... 77 二、练习题........................................................................................................... 77 三、参考答案....................................................................................................... 79 第十二章 位运算...................................................................................................... 83

一、主要内容....................................................................................................... 83 二、练习题........................................................................................................... 83 第十三章 文件.......................................................................................................... 84

一、主要内容....................................................................................................... 84 二、练习题........................................................................................................... 84 三、参考答案....................................................................................................... 86

第一章 C语言程序设计概述

一、主要内容

c程序基本结构特点

函数与主函数

1. 程序由一个或多个函数组成,函数由函数头和函数体构成。 2. 必须有且只能有一个主函数main()

3. 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。

程序语句

1. C程序由语句组成,用“;”作为语句终止符

2. /* */部分为注释,不能嵌套,不产生编译代码

编译预处理不是C语言的一部分

C程序的运行步骤

运行一个C程序,从输入源程序开始,要经过编辑源程序文件(?C)、编译生成目标文件(?obj)、连接生成可执行文件(?exe)和执行四个步骤

二、练习题部分

一、选择题:

1、C语言程序编译过程中产生的文件有: ( )

A. 索引文件和文本文件两种 B. 目标文件和可执行文件

C. 二进制文件一种 D. ASCII码文件和二进制文件两种

2、以下说法中正确的是 : ( )

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

B. 在C语言程序中,要调用的函数必须在main函数中定义 C. C语言程序总是从main函数开始执行

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

3、C语言源程序的基本单位是:( )

A. 函数 B. 标识符 C. 表达式 D. 语句

4、以下叙述正确的是:( )

A) C语言比其他语言高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚、具有其他语言的一切优点

5、在一个C语言程序中 :( )

A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置

6、C++语言中工程文件的扩展名是: 。( )

A. .cpp B. .prj C. .c D. .obj

第 1 页 共 86页

(说明:BC++环境中工程文件扩展名.prj ,VC中为.dsp) 7、C文件的扩展名是:( )

(A).cpp (B).prj (C).c (D).txt

8、一个C程序的执行是从: ( )

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

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束

9、以下叙述正确的是: ( )

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

B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

10、以下叙述不正确的是: ( )

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

D) 在C程序中,注释说明只能位于一条语句的后面

11、C语言规定:在一个源程序中,main函数的位置:( ) A) 必须在最开始 B) 必须在系统调用的库函数的后面 C) 可以任意 D) 必须在最后

12、一个C语言程序是由 : ( )

A) 一个主程序和若干子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成

13、以下叙述中正确的是:( )

A) C语言的源程序不必通过编译就可以直接运行

B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C) C源程序经编译形成的二进制代码可以直接运行 D) C语言中的函数不可以单独进行编译

14、以下对C语言函数的描述中,正确的是 :( ) A) C程序必须由一个或一个以上的函数组成 B) C函数既可以嵌套定义又可以递归调用 C) 函数必须有返回值,否则不能使用函数

D) C程序中有调用关系的所有函数必须放在同一个程序文件中

15、C 语言的注释定界符是:( )

A. { } B. [ ] C. * * D. /* */

第 2 页 共 86页

二、填空题:

1、C程序的运行需要经过 _ 和 _ _两步进行。 2、C语言的编译单位是 __ __。 3、C语言程序由__ _组成。

4、结构化设计中的三种基本结构是_ _、_ _和_ __ 。 5、C 语言中,一个函数一般由两个部分组成,它们是_ __和__ _。 6、一个C语言程序总是从_ _函数开始执行程序。 7、一个 C 程序中至少应包括一个__ _。

8、C语言函数是由函数头和函数体两部分组成。其中,函数头包括_ __,__ __和__ _。

9、C程序中用/*……*/ 括起来的内容是程序的 。 10、C源程序的基本单位是 。

三、判断题:

1、C语言程序的三种基本结构是递归、选择、循环。 ( ) 2、函数若无返回值,则它的返回值是整数值0。 ( ) 3、函数若无返回值,则它一定无形参。 ( )

三、参考答案

一、选择题:

1~5:BCACB 6~10:BCACD 11~15:CBBAD 二、填空题: 1、编译 连接 2、文件 3、函数

4、顺序结构 选择结构 循环结构 5、函数首部 函数体 6、主函数(或main函数) 7、函数

8、函数类型 函数名 函数参数 9、注释 10、函数

三、判断题:

1、× 2、× 3、×

第 3 页 共 86页

第三章 数据类型、运算符和表达式

(温馨提示:本章内容非常繁琐,细节较多,请将所记笔记中的说明部分和例题好好看看,一般考选择题和填空题)

一、主要内容

标识符命名原则:

1. 合法的要求是由字母,数字,下划线组成,并且第一个必须为字母或则是下划线。关

键字不可以作为用户标识符号。

2. main define scanf printf 及其他库函数的函数名都不是关键字可以用作标识

符。

3. If与if不同,If是可以做为用户标识符,因为C区分大小写。

基本数据类型:

1. 基本数据类型有哪些?所占空间大小及说明符。

2. 整型、实型、字符型常量的合法表示形式,字符串的表示形式。

a)实型数据的合法形式:小数形式和指数形式-----尤其要注意指数形式的格式e前必有数,e后必为整数。2.333e-1 就是合法的

b) 字符数据的合法形式:以单引号括起来的一个字符,注意转义字符P48表3-3。

如‘\\x6d’是合法的字符,ASCII码为十六进制的6d,‘\\141’也合法,ASCII码为八进制141,‘\\108’不合法。

c) 字符常量和字符串的区别:'a' 是字符占一个字节,

\是字符串占两个字节(含有一个结束符号)。

常量和变量

1. 符号常量的定义格式:eg #define PI 3.14159 (注意宏定义后无分号结尾) 2. 变量的定义格式:

3. 变量赋初值的方式。 int a=b=c=3;不合法

数据混合计算时数据类型的转换:P54图3-10。 a) 强制类型转换:一定是(int)a 不是 int(a),注意类型上一定有括号的。 b) 注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。

运算符

1. 运算符的优先级别和结合方向: a) 单目运算>双目运算

b) 算术> 关系运算>逻辑运算>条件运算>赋值运算>逗号运算 2. 算术运算符:

a) %要求左右两边都是整型数,运算结果为余数。 b) /运算若左右两边都是整型数,结果为整数。

c) 自增自减运算符,前置先自增减,再运算;后置先运算,再自增减。自增自减运算

符只能作用于变量,不能作用于常量和表达式。

如:#define A 3

A++;是错误写法。 3. 关系运算符:

a)注意赋值=与关系= =的区别。

第 4 页 共 86页

b) c语言中没有逻辑类型,逻辑“真”用非0表示,逻辑“假”用0表示,

c) x在[a,b]间的关系表达式为x>=a && x<=b,不能写为a>=x>=b。但该表达式语法成

立,有运算结果。如3>=1>=5运算时从左向右依次运算,即3>=1为真,值为1,此时,表达式为1>=5,运算结果为假,值为0。所以整个1>=3>=5的值为0.

4. 逻辑运算符:

a)!优先级别比较高, !>&&>|| 。 b)&&和||运算时注意短路原则。(常考!)

5. 赋值运算符:

a)复合赋值运算符的使用。如a=12,则a+=a-=a*=a;运算后a的值

6. 条件运算符:

a)结合方向从右向左。

7. 逗号运算符:优先级别最低;也叫顺序执行运算符,表达式的数值逗号最右边的那个

表达式的数值。(2,3,4)的表达式的数值就是4

表达式

1. 能将数学表达式写成c表达式

2. 计算表达式的值,注意优先级别和结合方向。

二、练习题

(一)练习题之数据类型

一、选择题:

1、以下标识符中,不能作为合法的C用户定义标识符的是 ( ) A)putchar B)double C)_123 D)INT

2、下列字符序列中, 不可用作C 语言标识符的是 ( ) A. b70 B. #ab C. symbol D. a_1

3.以下不能定义为用户标识符的是:( )

A. MAIN B. _HJ C. 208ong D. LINE12 4. 以下是正确的字符常量是:( )。

A. \ B. '\\\\' C. 'W1' D. \

5. 以下各项是错误的整型常量的是:( )

A. -0xcdf B. 018 C. 0xe D. 011

6、下列四组选项中,均不是C语言关键字的选项是 :( ) A) define B) getc C) include D) while

第 5 页 共 86页

IF char scanf go type printf case pow

7、下面四个选项中,均是正确的八进制数或十六进制数的选项是:( ) A) -10 B) 0abc C) 0010 D) 0al2 0x8f -017 -0x11 -0xl23

-011 0xc 0xf1 -0x8

8、下面四个选项中,均是正确的数值常量或字符常量的选项是: ( ) A) 0.0 B) \C) '3' D) +001 0f 3.9E-2.5 011 0xabcd 8.9e lel0xFFOO 2e2 '&'

'\\' '' 0a 50.

9、下面不正确的字符串常量是:( )。 A) 'abc' B) \ D) \

10.设int类型的数据长度为2字节,则该类型数据的取值范围是: ( )

A. 0至65536 B. 0至65535 C. -32767至32768 D. -32768至32767

11、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为( )

A)char < int < 1ong int <= float < double B)char = int < 1ong int <= float < double C)char < int < 1ong int = float = double D)char = int = 1ong int <= float < double

12.若有以下程序段(n所赋的是八进制数) int m=32767,n=0327; printf(\执行后输出结果是:( )

A) 32767,327 B) 32767,0327 C) 32767,777 D) 32767,0777

13.设变量a是整形,f是实型,i是双精度型,则表达式10+′a′+i*f值的数据类型为:( )

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

14. 在C语言中,char型数据在内存中的存储形式是:( )

A. 补码 B. 反码 C. 源码 D. ASCII码

15. 字符串\在内存中占据的字节个数为 : ( )

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

16.下列为字符常量的是:( )

第 6 页 共 86页

A.“a” B. ?ab? C. ?\\n? D.?\\084?

17.在C语言中,下面字符串能用作变量名的是:( ) A. a+b B. auto C. 2-and D. a2

18.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句

c2 = 'A' + '6' - '3';后c2中的值为( )

A) D B) 68 C) 不确定的值 D) C

19、在C语言中合法的字符型常量是。 ( ) A、“A” B、?\\t? C 、65 D、A

20、以下选项中,C中正确的整型常量形式是。 ( ) A、0x16 B、-202.18 C、1,000 D、0458

二、填空题:

1. 在C语言中的实型变量分为两种类型,它们是_ __ 和 ___ ___。

2.将下列字符串表示成C语言的字符串常量

(1)C:\\TC\\LIB_____________

(2)He said:\’m a student.\_________

(3)85% student passed.____________________________

3.在C语言中,标识符中英文字母的大小写________(是/不是)等价的。换句话说,sum、Sum、SUM是3个_______(相同/不同)的标识符。 4.已知char w; int x; float y; double z;

则表达式:w * x + z - y所求得的数据类型为 。 5.变量名由字母、数字和下划线组成,并且必须是______打头。

6. C语言的数据类型分为基本类型、构造类型、指针类型和空类型 。(正确/错误)。 7.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,

则表达式ch = 'a' + '8' - '3'的值为 。

三、看程序写结果

1.如果对以下程序进行编译和运行,其结果为________。 main()

{int x,y; x=555;y=x+2; y=x+2;

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

2.执行以下程序,写出程序运行结果________。 main() {

int c1,c2; c1=97;

第 7 页 共 86页

c2=98;

printf(\ printf(\ }

3.执行以下程序,写出程序运行结果________。 main()

{ char c1, c2;

c1='A' ; c2='a' ; c1=c1+2 ; c2=c2+2 ;

printf(\ }

(二)练习题之 运算符和表达式

一、选择题:

1、以下运算符中,优先级最高的运算符是( ) A. = B. != C. *(乘号) D. ()

2、若有以下定义,则能使值为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)

3、设在tc2.0中有整型变量x,y,z均为3,表达式(x++)+(y++)+(z++)的值是 ( ) A. 6 B. 7 C. 8 D. 9

4、有以下程序运行后的输出结果是: ( ) main()

{ char a='A',b; print(\ printf(\ }

A. B,B B. B,C C. A,B D. A,C 5、有以下程序运行后的输出结果是 :( ) main()

{ char a='a';

printf (\ printf(\ }

A)b,b B)b,c C)a,b D)a,c

6、设a=6,b=4,则表达式b*=a+3的值为 : ( ) A)3 B)18 C)27 D)36

第 8 页 共 86页

7、有如下程序段,其输出结果是: ( )

int a=3;

float b=15.6,f=1.5;

printf(“%d”,a+(int)b/2+(int)f%3); A)10 B)11 C)12 D)13

8、以下程序的输出结果是: ( ) main( ) {int a=3 ;

printf ( \

A. 4 3 B. 4 4 C. 5 3 D. 5 4 9、以下程序的输出结果是( )。

main( ) {

int a=10;

printf ( \ }

(A)11 10 (B)11 11 (C)12 20 (D)12 11

10、若有定义:int a=8,b=5,c;执行语句c=a / b+0.4 ; 后c的值为( )。

(A)1.4 (B)1 (C)2.0 (D)2

11、若x,i,j和k都是int型变量, 则执行下面表达式x = (i = 4, j = 16, k = 32)后x的值为( )

A) 4 B) 16 C) 32 D) 52

12、若有代数式3ae/bc,则不正确的C语言表达式是: ( ) A) a / b / c * e * 3 B) 3 * a * e / b / c C) 3 * a * e / b * c D) a * e / c / b * 3

13、以下不正确的叙述是:( )

A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

14、已知各变量的类型说明如下: ( ) int i = 8, k, a, b; unsigned long w = 5;

double x = 1.42, y = 5.2;

则以下符合C语言语法的表达式是:

A) a += a -= (b = 4) * (a = 3) B) a = a * 3 = 2

第 9 页 共 86页

C) x % (-3) D) y = f1oat(i)

15、若有定义:int a = 7; float x = 2.5, y = 4.7; 则表达式x + a % 3 * (int)(x + y) % 2 / 4的值是:( )

A) 2.500000 B) 2.7500OO C) 3.500000 D) 0.000000。

16、表达式b*=(b=3)+(a=10)的值为: ( ) (A)3 (B)19 (C)27 (D)39

17、假设所有变量均为整型,则表达式(a = 2, b = 5, b ++, a + b)的值是: ( A) 7 B) 8 C) 6 D) 2 18、若有以下程序:

main()

{int k=2,i=2,m;

m=(k+=i*=k); printf(\ }

执行后的输出结果是: ( ) (A) 8,6 (B) 8,3 (C) 6,4 (D) 7,4

)

19.在C语言中运算对象必须是整型的运算符是:( ) A. % B. / C. = = D. <=

20.若有以下定义:int x=10,y=3,z; 则语句:printf(“%d\\n”,z=(x%y, x/y));的输出结果为 ( ) A. 1 B. 0 C. 2 D. 3

21.下列哪一个表达式的值是整数类型( )。 A. 15/2 B. 15/2+2.0 C. 25/5.0 D. 0.5*10

22.若double x=2,y;则执行y=x+3/2;后,y的值是( )。 A. 3.500000 B. 3.000000 C. 2.000000 D. 3

23、以下运算符中优先级最低的是 ( )

A) && B) & C) || D) |

24、设以下变量均为int类型,则值不等于7的表达式是( ) A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1) C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)

25.设有以下定义

int a=0; double b=1.25; char c=’A’; #define d 2

则下面语句中错误的是: ( ) (A) a++; (B) b++ (C) c++; (D) d++;

26、若有int x=12,n=5;则x%=(n%=2);后x的值是。 ( )

第 10 页 共 86页

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

27、设有定义int k=0;则以下四个表达式中与其它三个的值不同的是。 ( ) A、k++ B、k+=1 C、++k D、k+1

二、填空题:

1、若有以下定义int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是 。 2、若a为int型变量,则下面表达式的值为 。 (a = 4 * 5, a * 2), a + 6

3、若a是int型变量,则执行表达式\后,a的值为 。 4、s=3,s++,s; 这个语句执行完后,s的值为 。

5、C语言中的标识符只能由三种字符组成,他们是字母、数字和 。 6、已知 i=5;写出语句 a= -- i, 执行后整型变量 a 的值是 。 7、设 x 的值为15,n 的值为2,则表达式 x*=n+3 运算后 x 的值是 。 8、int x=2;x*=y=z=4; 则x的值为 。 9、表达式 i++ 相当于表达式i= 。

10、若s是unsigned int型变量,则下面表达式的值是________。

s%2+(s+1)%2 11、程序段执行后c3的值是_______。

int c1=1,c2=2; float c3; c3=1/c2*c1;

12、已知’a’的ASCII码为97,printf(“\\\n”,’e’)的输出是______;

printf(“]\\n”,’e’)的输出是___________。 13、表达式:5%2=__________,2/3=__________。

14、在C语言中,单目运算符的结合方向(运算方向)是_____________;唯一的一个三目运算符是_____________。

15、设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是 。

16、算术表达式 a=b+3 中, a、b 称为_________, 3 称为________,=、+称为_________。

17、若有定义:int b = 7;float a = 2.5,c = 4.7;

则表达式a + (int)(b / 3 * (int)(a + c) / 2) % 4的值为 。 18.C语言中为了简化程序,提高程序的编译效率,在赋值运算符前面加上其他运算符号构

第 11 页 共 86页

成复合运算符。例如:x=x+5 用复合运算符可以写成 。 19、表达式1/4+2.75的值是 。

20、若a是int型变量,且a的初值为6,则计算表达式“a+=a-=a*a”后a的值为 21、若s是int型变量,且s=6,则表达式“s%2+(s+1)%2”的值为 。 22、若x是int型变量,则执行表达式“x=(a=4,6*2)”后,x的值为 。 23、若x和n均是int型变量,且x的初值为12,n的初值为5,

则执行表达式“x%=(n%=2)”后,x的值为 。

24、设 int x=1/4;则x的值为 。

25、若 char w,int x,float y,double z;则表达式w*x+z-y的结果为 类型。 26、设 x 的值为15,n 的值为2,则表达式 x*=n+3 运算后 x 的值是 。 27、假设有条件 int x=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是 。 28、int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b的值为 。

29、执行语句\后,变量a、c的值依次为 、 。 30、表达式a = 3, a ++, - -a的值为 。

31、设a、b、c为整型数,且a = 3,b = 5,c = 2,则执行完以下语句:

a *= 16 + (b ++) - (++ c);后a的值是 。

32、以下程序运行后的输出结果是 main( )

{ int a=1,b=4,c=2; a=(a+b)/c;

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

运行结果 ;

33、设int a=3,b=5;float x=7.5,y=3.5;则表达式

(float)a+b/2+(int)x%(int)y; 的值是 34、在C语言的表达式中,x=x+5 用复合运算符可以写成 。 35、设a=12,表达式a/=a+a 运算后,a的值是 。 36.若定义:char c=‘\\010’;则变量c中包含的字符个数是 。 37.赋值语句是由 加上一个分号构成。 38.a=12,n=5,表达式a%=(n%=2)值是 。 39.设说明为 int a=10; 执行语句 a*=1+2+3; 后a的值是____________。 40、设int m=1,n=2;则m==--n的结果是 。

41、设x为int型变量,则执行语句x=10;x+=x-=x-x;后x的值为 。

第 12 页 共 86页

42、设所有变量均为整型,则表达式(a=5,b=3,--a,++b,a-b)的值为 。 三、看程序写结果:

1、写出以下程序运行的结果________。 main ( ) {

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

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

2、阅读下列程序,写出运行结果 #include main( )

{ int a=1,b=4,c=2; a=(a+b)/c;

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

运行结果 ;

3、阅读下列程序,写出运行结果 main() { int n=1;

printf(\; }

运行结果 ;

4、main( )

{ int i=3 ;

printf(\ i++);

} 运行结果 ;

5、执行以下程序,写出程序运行结果 main() {

int a=-017L; printf(\}

三、参考答案

(一)练习题之数据类型 参考答案

第 13 页 共 86页

一、选择题:

1、B 2、B 3、C 4、B 5、B 6、A 7、C 8、D 9、A 10、D 11、A 12、A 13、C 14、D 15、C 16、C 17、D 18、A 19、B 20、A

二、填空题:

1、float double

2、 (1) ”c:\\\\TC\\\\LIB”

(2) ”He said :\\”I\\? am a student” (3)”85%% student passed” 3、不是 ,不同 4、double

5、字母、下划线 6、正确 7、 ‘f’

三、看程序写结果 1、x=555 2、 a b

97 98 3、67 c

(二)练习题之 运算符和表达式 参考答案

一、选择题:

1、D 2、D 3、D 4、A 5、A 6、D 7、B 8、A 9、A 10、B 11、C 12、C 13、D 14、A 15、A 16、D 17、B 18、C 19、A 20、D 21、A 22、B 23、C 24、C 25、D 26、B 27、D

二、填空题:

1、-16 2、 26 3、2 4、4 5、下划线 6、4 7、 75 8、8 9、i+1 10、1

11、0 12、□□□□e □□101 13、1 0

14、由右向左 条件运算符 15、9 16、变量 常量 运算符 17、5.5 18、x+=5 19、2.75 20、-60 21、1 22、12 23、0 24、0 25、double

26、75 27、6 28、4 29、11 6 30、3 31、54 32、1 33、6.0 34、x+=5 35、0

36、1 37、赋值表达式 38、0 39、60 40、 1 41、20 42、0

三、看程序写结果 1、9,11,9,10 2、 1 3、1 0 1 4、4,3 5、-15

第 14 页 共 86页

第四章 顺序程序设计

一、主要内容

输入输出函数

1. printf函数的格式考查:

a)格式:printf(“格式控制串”,输出表)

b)输出表:要输出的数据(可以没有,多个时以“,”分隔)

格式控制串:包含两种信息

? 格式说明: %[修饰符]格式字符 ,用于指定输出格式 ? 普通字符或转义序列:原样输出 c)修饰符m、n、l的功能: 修饰符 功能 m 输出数据域宽,数据长度

a)格式:scanf(“格式控制串”,地址表)

b)格式控制字符串中包含的非格式控制字符要原样输入;如:

scanf(“sum=%d”,&a); 输入时”sum=”也要输入。

scanf函数中没有精度控制,如:scanf(“%5.2f”,&a) ;是非法的。 3.getchar( )获取一个字符。 a)格式:char c; c=getchar();

4. putchar()输出一个字符,括号中的参数是一个字符变量或常量 a)格式:putchar(‘a’);

二、练习题

一、选择题: 1.设有语句scanf(“%d,%d”,&m,&n);要使m、n的值依次为2,3,正确的输入是 ( ) A. 2?3↙ B. 2,3↙ C. 2;3 D. 2↙3↙

2.______是C语言的标准函数名。 ( )

A. scanf B. case C. while D. int

3、若有int i=-19,j=i%4;printf(“%d”,j);结果为。 ( ) A、-3 B、1 C、3 D、-1

4、int x,y;

第 15 页 共 86页

scanf(“%d,%d”,&x,&y) ;若要使x得11,y得12,则以下输入形式中错误的是。 ( ) A、11,12↙ B、 11空格12↙ C、11,空格↙12↙ D、11,↙12↙ 二、填空题:

1、在TC中,printf()函数输出表列的求值顺序是 。 2、在scanf函数中, 表示变量的地址。

3、以下程序的运行结果是 。 main()

{ printf(\

4、若想通过以下输入语句使 a=5.0,b=4,c=3,则输入数据的形式应该是 。 int b,c; float a;

scanf(\,%d,c=%d\,&a,&b,&c);

5、若变量x、y已定义为int类型且X的值为99,y的值为9,

请将输出语句printf(_____,x/y);补充完整,使其输出的计算结果形式为:x/y=11。

6、表达式pow(2.8,sqrt(double(x)))值的数据类型为 。

7、 输入一个华氏温度,要求输出摄氏温度: void main( ) {

float c,f;

printf(\请输入一个华氏温度:\ ;

; /* 摄氏温度c= (f - 32) */

printf(\摄氏温度为%5.2f\\n\}

8、int x=102,y=012;printf(“-,-\\n”,x,y); 则执行结果是 。

三、参考答案

一、选择题:

1、B 2、A 3、A 4、B 二、填空题:

1、由右向左 2、& 3、computer,□□com 4、5,4,c=3 5、“x/y=%d” 6、double 7、scanf(“%f”,&f); c=5.0/9*(f-32); 8、102,10

第 16 页 共 86页

第五章 选择结构程序设计

一、主要内容

三种程序结构:顺序结构、选择结构、循环结构 if语句(条件选择语句) a)if语句的三种形式:

b)if后面的表达式类型任意的;若执行语句是多条,必须为复合语句,即 写在一对花括号内。

c)if结构可以嵌套,注意缺省{ }时,else总是和它上面离它最近的未配对

的if配对 switch语句

a)格式中,E1,E2,…En是常量表达式,且值必须互不相同

b)注意执行时语句中有break和无break时,执行流程的区别。(本处常考) c)default可以不写。

二、练习题

一、选择题:

1、经过以下语句定义后, 表达式z+=x>y?++x:++y 的值为:( )

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

A. 2 B. 3 C. 6 D. 5

2、能正确表示逻辑关系:\或a≤ 0\C 语言表达式是 : ( )

A. a>=10 or a<=0 B.a>=0|a<=10 C. a>=10&&a<=0 D. a>=10||a<=0 3.已知int a=5,b=7,c=3;则逻辑表达式a

A. 1 B. 0 C. 3 D. 4 4、下列程序的输出结果是 :( )

main()

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

++x&&++y||++z ;

printf(\ }

A.1 1 1 B. 2 2 2 C. 2 2 1 D. 2 1 1 5、在C语言中逻辑值“真”是用 表示的。 ( ) A. 预定义为真值的宏 B. 非零值 C. 正数 D. 非零整数

6、 设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句:( )

if (x=y) printf(\A. 语法错 B. 不能判断x和y是否相等

C. 编译出错 D. 能判断x和y是否相等 7、以下程序的输出结果是:( )。 main()

{ int a=5,b=4,c=6,d;

printf(\

第 17 页 共 86页

}

A. 5 B. 4 C. 6 D. 不确定

8、若希望当A 的值为奇数时, 表达式的值为\真\的值为偶数时, 表达式的值为\假\则以下不能满足要求的表达式是 :( )

A. A%2==1 B. !(A%2==0) C. !(A%2) D. A%2

9、若希望当A 的值为奇数时, 表达式的值为\真\的值为偶数时, 表达式的值为\假\则以下不能满足要求的表达式是 :( )

A. A%2==1 B. !(A%2==0) C. !(A%2) D. A%2 10、执行以下语句后,a,b的值分别为:( )。 int a ,b ,c ; a=b=c=1 ; ++a||++b&&++c;

(A)2 ,2 (B)1 ,1 (C)2 ,1 (D)1 ,2 11、 判断char型变量c l是否为小写字母的正确表达式为: ( )

A. ’a’<=c1<=’z’ B. (c1>=a)&&(c1<=z)

C. (‘a’>=c1) (‘z’<=c1) D. (c1>=’a’)&&(c1<=’z’) 12、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值分别是:( )。

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

(A)x=10,y=20,z=30 (B)x=20,y=30,z=10

(C)x=20,y=30,z=30 (D)x=20,y=30,z=20 13、以下选项中非法的表达式是: ( )

(A) 0<=x<100 (B) i=j==0 (C) (char)(65+3) (D) x+1=x+1 14、阅读以下程序:

main() { int x;

scanf(\

if(x--<5) printf(\else printf(\}

程序运行后,如果从键盘上输人5,则输出结果是:( ) (A)3 (B) 4 (C) 5 (D) 6 15. C语言对于嵌套if语句规定else总是与( )匹配。 A)与最外层的if B.)与之前最近的if

C)与之前最近的不带else的if D)与最近的{ }之前的if

16.以下有关switch语句的正确说法是________。 ( A)break语句是语句中必须的一部分

B)在switch 语句中可以根据需要使用或不使用break语句 C)break语句在switch 语句中不可以使用

D)在switch 语句中的每一个case都要用break语句

17.设有: int a=2,b=3,c=7,d=8,m=3,n=3; 执行 (m=a>b)&&(n=c>d) 后的_________。

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

第 18 页 共 86页

) n 值为(

18.可判断非0变量 a为正,b为负的正确表达式是_________。 )

A) a*b <0 B) (a>0||b >0)&&a*b <0

C) (a<0||b<0)&&a*b <0 D) a>0&&a*b<0

(

19.假定 int a=3, b=2, c=1, 表达式: (c==a>c)+(a/b) 的值是_________。 )

A) 1.75 B) 2 C) 1.5 D) 2.5

20.设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

21、如果a=4,b=3,c=2,d=1,则条件表达式a<b?a:c<d?c:d的值是。 ( ) A、1 B、2 C、3 D、4 22、设有定义int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式(m=ad)后,n的值为。 ( ) A、1 B、2 C、3 D、0

二、填空题:

1、设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是 。 2、 当a=5,b=4,c=2时,表达式 a>b!= c的值是 _______。

3、 为表示关系x ≥ y ≥z,正确的C语言逻辑、关系表达式为 。 4、有int a=3,b=4,c=5,x,y;,则以下表达式的值为

!(x=a)&&(y=b)&&c

5、在C语言中,表示逻辑\真\值用 .

6、当a=3,b=2,c=1时,表达式f=a>b>c的值是 .

7、与if(x==0) 等价的表达式写法写法是 。

8、若定义:int a=5,b=2,c=1; 则表达式 a-b>c||b==c 的值是 ; 表达式 a-b>c&&b==c 的值是 。

9、 “: ?”条件运算符是C语言中唯一的三目运算符。由其连接的表达式为条件表达式,

其格式为: <表达式1>?<表达式2>:<表达式3> 。执行过程:首先计算表达式1的值,如果表达式1的值是“真”(非0),则整个表达式的值为 的值;如果表达式1的值是“假”(0),则整个表达式的值为 的值。 10.C语言提供的三种逻辑运算符是______、______和_______。 11.若已知a=10,b=20,则表达式!a

12.若a,b变量的值任意,表达式(a==b)&&(a>b)的值是_________。 13.设x,y,z均为int型变量,请写出:

(1)x、y中至少有一个小于z的表达式_____________; (2)x、y都大于z的表达式____________;

14、能正确表示a>=10或a<=0的关系表达式为 。 15、以下程序的功能是:输出a、b、c三个变量中的最小值,请填空。 #include

第 19 页 共 86页

main()

{ int a,b,c,min;

scanf(\

if( ) min=a; else min=b; if( ) min=c; printf(\

三、看程序写结果:

1、main()

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

z=++x&&++y||++z ; 运行结果: printf(\

2、main( ) { int m=5;

if(m++>5)printf(\,m); 运行结果: else printf(\,m--); }

3、若从键盘输入58,则以下程序输出的结果是 。 main() { int a;

scanf(“%d”,&a);

if(a>50) printf(“%d”,a); if(a>40) printf(“%d”,a); if(a>30) printf(“%d”,a); }

4、 以下程序运行后的输出结果是 。 main()

{ int p,a=5; if(p=a!=0)

printf(\else

printf(\}

5、 源程序如下: #include main()

{ int a=2,b=7,c=5; switch(a>0)

第 20 页 共 86页

{case 1: switch(b<0)

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

case 0: switch(c==5)

{case 0: printf(\case 1: printf(\case 2: printf(\}

default: printf(\}

printf(\

运行结果:

6、main( )

{ int x=1, y=2;

switch(x) {case 0 :

case 1 : switch(y) 运行结果:

{ case 1:

case 2: y+=2; }

case 2 : x++; }

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

7.以下程序的输出结果是 。 main()

{ int x=1,y=1,a=0,b=0; switch(x)

{ case 1:switch(y) {case 0: a++; case 1: b++;

case 2: b++;break;

}

case 2: a++;b++;break; case 3: a++;b++;

}

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

8. 以下程序段的运行结果是_________。

int a,b,c; a=50;b=100;c=30;

if(a>b) { a=b;b=c;c=a;}

第 21 页 共 86页

printf(\

9.下面程序的输出结果是

void main() { int i=10; switch(i) {

case 9:i+=1; case 10:i+=1; case 11:i+=1; case 12:i+=1; }

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

( )

四、编程题:

1、从键盘输入3个整数,按照从大到小的顺序输出。 2、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。

2

3、求一元二次方程ax+bx+c=0的根,要求考虑所有根的情况。 4、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。

5.输入一个字符,判断其是否是大写字母,如果是,则转换成为小写字母,然后输出字符,如果不是小写字母,则直接输出字符。 6、有分段函数 x, x<1 y= 2x -1,1<=x<10 3x –11, x>=10

编写一程序,输入x,输出相应的y值。

7、分别用两种判断方法,写出判断一个年份为闰年的程序。

三、参考答案

一、选择题:

1~5 :CDCCB 6~10:BCCCC 11~15:DCDBC 16~20:BDDBD 21、A 22、B 二、填空题:

1、1 2、1 3、(x>=y)&&( y>=z ) 4、0 5、非零值 6、0 7、if(!x) 8、1 0 9、表达式2 ,表达式3 10、 ! ,&& ,|| 11、1 12、0 13、(1)x

第 22 页 共 86页

(2) x>z && y>z 14、a>=10||a<=0 15、(1)a

1、221 2、6 3、585858 4、1 5、#& 6、2,4

7、a=1,b=3 8、a=100,b=30,c=100 9、i=13

四、编程题:

1、从键盘输入3个整数,按照从大到小的顺序输出。 main() {

int x,y,z,t;

scanf(\if (x>y)

{t=x;x=y;y=t;} /*交换x,y的值*/ if(x>z)

{t=z;z=x;x=t;} /*交换x,z的值*/ if(y>z)

{t=y;y=z;z=t;} /*交换z,y的值*/ printf(\}

2、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。 #include main()

{ double x,y;

scanf(\if (x>0) y=sqrt(x); else if(x<0)

y=(x+1)/(x*x+2); else y=0;

printf(\}

2

3、求一元二次方程ax+bx+c=0的根,要求考虑所有根的情况。 教材P108例5.6

4、设有一个函数如下。编程,输入x,求y值。 y=错误!未找到引用源。

第 23 页 共 86页

6、一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?

7、 编写程序,把100到200之间的能被3整除的数输出。

8、试编写程序输出100~300间的所能能同时被3和5整除的数。 9、 请编写程序解决如下数学计算问题:

一个整数被5除余3,被7除余5,被9除余7,这个数最小是几? 10、设计程序求自然数1~100(包含1和100)中所有素数的和。 11、编写程序,使用下面的公式求出e的近似值。 e≈1+

11111???????? (精确要求?10?6)

n!1!2!3!n!

12、求出所有的“水仙花数”并输出。提示:所谓水仙花数,是指一个3位数,其各位数字

333 。

立方和等于该数字本身,例如153是一个水仙花数,因为153=1+5+3。

三、参考答案

一、选择题:

1~5:BBCAC 6~10:DBDCA 11~15:ACACB 二、填空题:

1. continue break

2. 36 3. break 4.3 5. do…while

三、看程序写结果:

1. ***** *** ** *

2. s=0

3. value=2004

4. 0,9 1,8 2,7 3,6 4,5 5. * *** ***** ******* ********* ***********

************* *************** ***************** ******************* 6. value=2518

第 34 页 共 86页

7. 5 8. 3 10 14 9. 0 1 2 10. 52 11. 8467

四、完成程序:

1. (1) #include (2) n/100 (3) n 2. (1)while(i<=100) (2) i+=2

3. (1)while(ch!= '\\n') (2)if(ch<'9'&&ch>'0')

4. (1) count=0 (2)while(j!=0) (3)s=s+j 5. (1) s=s*i

6. (1)x=0 (2)x=x+j 7. (1) i+=2 (2)-t 8. (1) i (2)flag=-flag 9. (1) a*10+2 (2) s+a 10.(1) a*10+i (2) s+a

11.(1) i%3||i%5 (2) printf(“%d ”,i)

五、编程题:

1、编程实现:输入两个正整数m和n,求其最大公约数和最小公倍数。 main()

{ int m,n,temp,s;

printf(\ scanf(\ if(m

while(n!=0)/*利用辗除法,直到n为0为止*/ {

temp=m%n; m=n; n=temp; }

printf(\printf(\}

2、求1+2+4+6+??+100之和。分别用三种循环语句实现(while,do-while,for)。

(1) main( )

{ int i=2,sum=1; while (i<=100) { sum=sum+i; i=i+2;

}

printf(“sum=%d”, sum);

第 35 页 共 86页

}

(2) main( )

{ int i=2,sum=1;

do

{ sum=sum+i; i=i+2;}while(i<=100);

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

(3) main( )

{ int i,sum;

for(i=2,sum=1;i<=100;i+=2)

sum=sum+i;

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

3、编写程序求2到100间的全部素数,要求每行输出5个数。

#include main()

{ int m,k,i,n=0;

for(m=2;m<=100;m+=2) { k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1)

{ printf(“]”,m); n=n+1;

}

if(n%5==0) printf(“\\n”); } }

4、编程输出九九乘法表。 #include \main() {

int i,j,result; printf(\

for (i=1;i<10;i++) { for(j=1;j<10;j++) {

result=i*j;

printf(\ \表示左对齐,占3位*/ }

printf(\每一行后换行*/ } }

5、编程求Fibonacci数列前20个数。这个数列有如下特点:第1、2两个数为1、1。 从第3个数开始,该数是其前面两个数之和。 main()

{long int f1=1,f2=1,f;

第 36 页 共 86页

int i;

printf(“]] ”,f1,f2); for(i=3;i<=20;i++) { f=f1+f2;

printf(“]”,f); f1=f2; f2=f; } }

6、一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?

main() {

float sn=100.0,hn=sn/2; int n;

for(n=2;n<=10;n++) {

sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ }

printf(\printf(\}

7、 编写程序,把100到200之间的能被3整除的数输出。 main() {int i;

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

if(i%3= =0) printf(“]”,i); }

8、试编写程序输出100~300间的所能能同时被3和5整除的数。 main() {int i;

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

if((i%3= =0)&&(i%5= =0) printf(“]”,i); }

9、 请编写程序解决如下数学计算问题:

一个整数被5除余3,被7除余5,被9除余7,这个数最小是几? main() {int i=8; while(1)

{if((i%5= =3)

if(i%7= =5)

if(i%9= =7) {printf(“]”,i); break;}

i=i+5; }

第 37 页 共 86页

}

10、设计程序求自然数1~100(包含1和100)中所有素数的和。 #include main()

{ int m,k,i,s=0;

for(m=2;m<=100;m+=2) { k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) s=s+m; }

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

11、编写程序,使用下面的公式求出e的近似值。 e≈1+

11111???????? (精确要求?10?6)

n!1!2!3!n!main()

{int i=1

float sum=1,t=1; while(t<1e6) {t=t*i;

sum=sum+1.0/t; i=i+1; }

printf(“%.2f”,sum); }

12. 求出所有的“水仙花数”并输出 main() {

int i,j,k,n;

for(n=100;n<1000;n++) {

i=n/100;/*分解出百位*/ j=n/10;/*分解出十位*/ k=n;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(\ } }

第 38 页 共 86页

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

Top