1、第一章 C 语言概述 一填空题 1 C 程序是由 构成的,一个 C 程序中至少包含 。因此, 是C 程序的基本单位。 2 C 程序注释是由 和 所界定的文字信息组成的。 3 C 语言是一个用途广泛,功能强大的程序语言,它具有的主要特点是: ( 1) , ( 2) , ( 3) , ( 4) , ( 5) , ( 6) , ( 7) , ( 8) 。 4在 C 程序开发过程中,遵循如下所示的开发步骤,请填空。 开始 ( ) ( ) ( ) ( ) 有错? 有错? 有错? 结束 有 有 有 程序代码错误 设计算法错误 5函数体一般包括 和 。 二判断题 1一个 C 程序的执行总是从该程序的 mai
2、n 函数开始,在 main 函数最后结束。 【 】 2 main 函数必须写在一个 C 程序的最前面。【 】 3一个 C 程序可以包含若干的函数。【 】 4 C 程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【 】 5 C 程序的注释只能是一行。【 】 6 C 程序的注释不能是中文文字信息。【 】 7判断下列各个程序中的程序注释是否 正确。 # in/*包含 */clued # include main ( ) main/* */(/*主函数 */) 【 】 【 】 # include # include main ( ) main ( )
3、 【 】 int x=10; 【 】 int x/*初始化 */=10; /*打印 x/*x=10*/的值 */ 8可以使用 Turbo C 来编译和连接一个 C 程序。【 】 9可以使用 Turbo C 来运行一个 C 程序。【 】 10可以使用 Turbo C 来实时调试(即动态调试)一个 C 程序。【 】 三简答题 1 写出一个 C 程序的基本结构。 2 简要叙述使用 Turbo C 2.0 编译和运行一个程序的步骤。 四编程题 1 提高题:参照课本例 1.1,试编写一个 C 程序,输出如下信息。(提示:使用键盘上的一些符号)。 2 提高题:试编写一个 C 程序,输出 如下信息。 试试看
4、,可以输出其他组合图案吗? 第二章 程序的灵魂 算法 一填空题 1 是程序设计的灵魂。 2一个计算机程序应包括 和 的内容。 3算法是 。 4结构化算法是 。 5计算机算法可分为 和 两大类别。 6计算机算法的特性是 , , , 和 。 7计算机算法可以用 , 和 等方法表示。 8三种基本程序结构是 , 和 。 9结构化程序设计强调 和 的规范化,提倡 。 10结构化程序设计的主要方法是 , , 和 。 二简答题 1 用自然语言描述求解下面问题的步骤。 ( 1)求 2 0ax bx c 的根。(要全面考虑实根和虚根的情形)。 ( 2)依次输入 10 个数,要求将其中最大的数打印出来。 ( 3)
5、有 3 个数 a, b, c,要求按由大到小的顺序把它们打印出来。 ( 4)有一函数: ( 1)2 1 1(1 1 0 )3 1 1( 1 0 )xxy x xxx 输入 x ,输出 y 值。 ( 5)求两个正整数 m 和 n 的最大公约数和最小公倍数。 2 分别用 ANSI 流程图和 NS 流程图表示求解下面问题的算法。 ( 1)依次输入 10 个数,要求将其中最大的数打印出来。 ( 2)有 3 个数 a, b, c,要求按由大到小的顺序把它们打印出来。 ( 3)判断 一个数 n 能否同时被 3 和 5 整除。 ( 4)有一个分数数列: 2 3 5 8 1 3 2 1, , , , , ,1
6、 2 3 5 8 1 3求出这个数列前 20 项之和。 3提高题:用计算机来解决许多数学问题,其方法常常与人的思维方法不同,但其主要特点是“计算”(数值化的运算)。尝试用“计算”的方法给出如下问题的解决方法。 ( 1)计算定积分 ()baT f x dx。 ( 2)产生一个在 0 到 1 之间概率平均分布的随机数。 第三章 数据类型,运算符与表达式 一选择题 1不合法的常量是 。 A) 2 B) “” C) D)“ 483” 2 是 C 语言提供的合法的数据类型关键字。 A) Float B) signed C) integer D) Char 3在以下各组标识符中,合法的标识符是( 1) ,
7、( 2) ,( 3) 。 ( 1) A) B01 B) table_1 C) 0_t D) k% Int t*.1 W10 point ( 2) A) Fast_ B) void C) pbl D) Fast+Big abs fabs beep ( 3) A) xy_ B) longdouble C) *p D) CHAR 变量 1 signed history Flaut 4属于合法的 C 语言长整型常量的是 。 A) 5876273 B) 0L C) 2E10 D) (long)5876273 5下面选项中,均是合法整型变量的是 。 A) 160 B) 0xcdf C) 01 D) 0x4
8、8a 0xffff 01a 986,012 2e5 0011 0xe 0668 0x 6判断 int x = 0xaffbc; x 的结果是 。 A)赋值非法 B)不确定 C)为 affb D)为 ffbc 7下面选项中,均是合法浮点数的是 。 A) 1e 1 B) .60 C) 123e D) e3 5e 9.4 12e 4 1.2e .4 .8e 4 03e2 8e5 2e 1 5.e 0 8在 C 语言中,要求参加运算的数必须时整数的运算符是 。 A) / B) * C) % D) = 9在 C 语言中,字符型数据在内存中以 形 式存放。 A)原码 B) BCD 码 C)反码 D) AS
9、CII 码 10下列语句中,符合语法的赋值语句是 。 A) a 7 b c a+7; B) a 7 b a 7; C) a=7 b, b, a 7; D) a 7 b, c a 7; 11 是非法的 C 语言转义字符。 A) b B) 0xf C) 037 D) 12对于语句: f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, 是正确的。 A)语法错误 B) f 为 5.0 C) f 为 0.0 D) f 为 2.0 13与代数式 xyuv 不等价的 C 语言表达式是 。 A) x*y/u*v B) x*y/u/v C) x*y/(u*v) D) x/(u*v)*y 14
10、在 C 语言中,数字 029 是一个 。 A)八进制数 B)十六进制数 C)十进制数 D)非法数 15 C 语言中整数 8 在内存中的存储形式为 。 A) 1111111111111000 B) 100000000001000 C) 000000000001000 D) 1111111111110111 16对于 char cx= 039;语句,正确的是 。 A)不合法 B) cx 的值是 03 C) cx 的值为四个字符 D) cx 的值为三个字符 17若 int k=7,x=12;则能使值为 3 的表达式是 。 A) x%=(k%=5) B) x%=(k k%5) C) x%=k k%5
11、D) (x%=k) (k%=5) 18为了计算 s=10!(即 10 的阶乘),则 s 变量应定义为 。 A) int B) unsigned C) long D)以上三种类型均可 19以下所列的 C 语言常量中,错误的是 。 A) 0xFF B) 1.2e0.5 C) 2L D) 72 20假定 x 和 y 为 double 型,则表达式 x=2, y=x+3/2 的值是 。 A) 3.500000 B) 3 C) 2.000000 D) 3.000000 21设变量 n 为 float 型, m 为 int 类型,则以下能实现将 n 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式
12、是 。 A) n=(n*100+0.5)/100.0 B) m=n*100+0.5,n=m/100.0 C) n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.0 22以下合法的赋值语句是 。 A) x=y=100 B) d C) x+y D) c=int(a+b) 23以下选项中不属于 C 语言的类型是 。 A) signed short int B) unsigned long int B) unsigned int D) long short 24设以下变量均为 int 类型,则值不等于 7 的表达式是 。 A) (x=y=6,x+y,x+1) B) (x=y
13、=6,x+y,y+1) C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1) 25在 16 位 C 编译系统上,若定义 long a;,则能给 a 赋 40000 的正确语句是 。 A) a=20000+20000; B) a=4000*10; C) 30000 10000; D) a=4000L*10L; 二填空题 1.在 C 语言中(以 16 位 PC 机为例),一个 char 数据在内存中所占字节数为 ,其数值范围为 ;一个 int 数据在内存中所占字节数为 ,其数值范围为 ;一个 long 数据在内存中所占字节数为 ,其数值范围为 ;一个 float 数据
14、在内存中所占字节数为 ,其数值范围为 。 2.C 语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为 。 3.字符常量使用一对 界定单个字符,而字符串常量使用一对 来界定若干个字符的序列。 4.在 C 语言中,不同运算符之间运算次序存在 的区别,同一运算符之间运算次序存在 的规则。 5.设 x,i,j,k 都是 int 型变量,表达式 x=(i=4,j=16,k=32)计算后, x 的值为 。 6.设 x=2.5,a=7,y=4.7, 则 x+a%3*(int)(x+y)%2/4 为 。 7.设 a=2,b=3,x=3.5,y=2.5,则 (float)(a+b)/2
15、+(int)x%(int)y 为 。 8.数学式子 124axax a的 C 语言表达式为 。 9.数学式子 3aebc 的 C 语言表达式为 。 10.已知: char a= a ,b= b ,c= c ,i;则表达式 i=a+b+c 的值为 。 11.已知 int a=12,n=5;则: 表达式 表达式运算后 a 的值 a+=a a-=2 a*=2+3 a/=a+a n%=(n%=2) a+=a-=a*=a 12.设 int a;float f;double;则表达式 10+ a +i*f 值的数据类型是 。 13.若 a 为 int 型变量,则表达式 (a=4*5,a*2),a+6 的值
16、为 。 14.假设所有变量均为整型,则表达式 (a=2,b=5,a+,b+,a+b)的值为 。 15.已知 a,b,c 是一个十进制数的百位,十位,个位,则该数的表达式是 。 16.定义: double x=3.5,y=3.2;则表达式 (int)x*0.5 的值是 ,表达式 y+=x+的值是 。 17.定义: int m=5,n=3;则表达式 m/=n+4 的值是 ,表达式 m=(m=1,n=2,n-m)的值是 ,表达式 m+=m-=(m=1)*(n=2)的值是 。 18.表达式 5%(-3)的值是 ,表达式 -5%(-3)的值是 。 19.若 a 是 int 变量,则执行表达式 a=25/
17、3%3 后, a 的值是 。 20.数学式子 6 5 4 3 22 3 4 5 6 7x x x x x x 的 C 语言表达式为: 。 三判断题 1.在 C 程序中对用到的所有数据都必须指定其数据类型。【 】 2.一个变量在内存中占据一定的存储单元。 【 】 3.一个实型变量的值肯定是精确的。【 】 4.对几个变量在定义时赋初值可以写成: int a=b=c=3;【 】 5.自增运算符 (+)或自减运算符 (-)只能用于变量,不能用于 常量或表达式。【 】 6.在 C 程序的表达式中,为了明确表达式的运算次序,常使用括号“()”。【 】 7.%运算符要求运算数必须是整数。【 】 8.若 a
18、是实型变量, C 程序中允许赋值 a=10,因此实型变量中允许存放整型数。【 】 9.在 C 程序中,逗号运算符的优先级最低。【 】 10.C 语言不允许混合类型数据间进行运算。【 】 四简答题 1.为什么 C 语言的字符型可以进行数值运算? 2.简述 a和“ a”的区别。 3.程序: int m=12; m=15;为什么整型变量 m 的值在运算后不是当初的 12,而是 15? 4.将下面个数用八进制和十六进制数表示: 十进制 32 1 32768 2002 128 0 八进制 十六进制 5.以下各数分别赋给不同类型的变量,请画出赋值后数据在内存中存放的存储形式(十六进制)。 变量的类型 25
19、 1 32769 -128 255 0 int 型( 16 位) long 型( 32 位) char 型( 8 位) unsigned int unsigned long unsigned char 6.华氏温度 F 与摄氏温度 c 的转换公式为: 5 ( 32)9cF,则 float c,F;c=5/9*(F-32)是其对应的 C 语言表达式吗?如果不是,为什么? 五程序阅读题 1.写出以下程序运行的结果。 main ( ) char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn”,c1,c2,c3); printf(“tb%
20、c %c”,c4,c5); 2.写出以下程序运行的结果。 main ( ) int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(“%d,%d,%d,%d”,i,j,m,n); 六编程题 1.假设 m 是一个三位数,则写出将 m 的个位,十位,百位反序而成的三位数(例如: 123 反序为 321)的 C 语言表达式。 2.已知 int x=10,y=12;写出将 x 和 y 的值互相交换的表达式。 第四章 最简单的 C 程序设计 一选择题 1.C 语言的程序一行写不下时,可以 。 A)用逗号换行 B)用分号换行 C)在任意一空格处换行 D)用回车符换行 2.pu
21、tchar 函数可以向终端输出一个 。 A)整型变量表达式值 B)实型变量值 C)字符串 D)字符或字符型变量值 3.执行下列程序片段时输出结果是 。 unsigned int a=65535; printf(“%d”,a); A) 65535 B) 1 C) 32767 D) 1 4.执行下列程序片段时输出结果是 。 float x=-1023.012 printf(“n%8.3f,”,x); printf(“%10.3f”,x); A) 1023.012, -1023.012 B) -1023.012,-1023.012 C) 1023.012,-1023.012 D) -1023.012
22、, -1023.012 5.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10, 20, A 和 B,当从第一列开始输入数据时,正确的数据输入方式是 。 int a1,a2; char c1,c2; scanf(“%d%c%c”, A) 10A 20B B) 10 A 20 B C) 10A20B C) 10A20 B 6对于下述语句,若将 10 赋给变量 k1 和 k3,将 20 赋给变量 k2和 k4,则应按 方式输入数据。 int k1,k2,k3,k4; scanf(“%d%d”, scanf(“%d,%d”, A) 1020 B) 10 20 C) 10,20
23、D) 10 20 1020 10 20 10,20 10,20 7.执行下列程序片段时输出结果是 。 int x=13,y=5; printf(“%d”,x%=(y/=2); A) 3 B) 2 C) 1 D) 0 8.下列程序的输出结果是 。 main ( ) int x=023; printf(“%d”,-x); A) 17 B) 18 C) 23 D) 24 9.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开始输入数据时,正确的输入方式是 。 int a1,a2; char c1,c2; scanf(“%d%d”, scanf(“
24、%c%c”, A) 1020AB B) 10 20 AB C) 10 20 AB D) 10 20AB 10.执行下列程序片段时输出结果是 。 int x=5,y; y=2+(x+=x+,x+8,+x); printf(“%d”,y); A) 13 B) 14 C) 15 D) 16 11.若定义 x 为 double 型变量,则能正确输入 x 值的语句是 。 A) scanf(“%f”,x); B) scanf(“%f”, C) scanf(“%lf”, D) scanf(“%5.1f”, 12.若运行时输入: 12345678,则下列程序运行结果为 。 main ( ) int a,b;
25、scanf(“%2d%2d%3d”, printf(“%dn”,a+b); A) 46 B) 579 C) 5690 D)出错 13.已知 i,j,k 为 int 型变量,若从键盘输入: 1,2,3,使 I 的值为 1, j 的值为 2, k的值为 3,以下选项中正确的输入语句是 。 A) scanf(“%2d%2d%2d”, B) scanf(“%d_%d_%d”, C) scanf(“%d,%d,%d”, D) scanf(“i=%d,j=%d,k=%d”, 14.若 int x,y; double z;以下不合法的 scanf 函数调用语句是 。 A) scanf(“%d%lx,%le”
26、, B) scanf(“%2d*%d%lf”, C) scanf(“%x%*d%o”, D) scanf(“%x%o%6.2f”, 15.有输入语句: scanf(“a=%d,b=%d,c=%d”,为使变量 a 的值为 1, b 的值为 3, c的值为 2,则正确的数据输入方式是 。 A) 132 B) 1,3,2 C) a=1 b=3 c=2 D) a=1,b=3,c=2 二填空题 1.一个 C 程序由若干个 文件组成,而一个这 样的文件可以由若干个 和 以及 部分组成。 2.C 语句可以分为 , , , 和 等 5 种类型。 3.C 控制语句有 种。 4.一个表达式要构成一个 C 语句,必
27、须 。 5.复 合语句是用一对 界定的语句块。 6.printf 函数和 scanf 函数的格式说明都使用 字符开始。 7.scanf 处理输入数据时,遇到下列情况时该数据认为结束:( 1) , ( 2) ,( 3) 。 8.已有 int i,j; float x;为将 -10 赋给 i, 12 赋给 j, 410.34 赋给 x;则对应以下 scanf函数调用 语句的数据输入形式是 。 9.C 语言本身不提供输入输出语句,其输入输出操作是由 来实现的。 10.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令: 。 三程序阅读题 1.用下面的 scanf 函数输入数据,使
28、 a=3,b=7,x=8.5,y=71.82,c1= A ,c2= a ,问在键盘上如何输入? main ( ) int a,b; float x,y; char c1,c2; scanf(“a=%d b=%d”, scanf(“ %f %e”, scanf(“ %c %c”, 2.写出以下程序的输出结果。 main ( ) int y=3,x=3,z=1; printf(“%d %dn”,(+x,y+),z+2); 3.写出以下程序的输出结果。 main ( ) int a=12345; float b=-198.345, c=6.5; printf(“a=%4d,b=%-10.2e,c=%
29、6.2fn”,a,b,c); 4.写出以下程序的输出结果。 main ( ) int x=-2345; float y=-12.3; printf(“%6D,%06.2F”,x,y); 5. 写出以下程序的输出结果。 main ( ) int a=252; printf(“a=%o a=%#on”,a,a); printf(“a=%x a=%#xn”,a,a); 6. 写出以下程序的输出结果。 main ( ) int x=12; double a=3.1415926; printf(“%6d#,%-6d#n”,x,x); printf(“%14.101f#n”,a); 四程序填空题 1.下列程序的输出结果是 16.00,请填( 1)空使程序完整。 main ( ) int a=9,b=2; float x=1 ,y=1.1,z; z=a/2+b*x/y+1/2; printf(“%5.2fn”,z);