1、C 程序设计习题册第二版 安徽工业职业技术学院信息工程系应用教研室第一单元 C 语法基础知识点:1) C 语言程序的基本概念和上机步骤;2) 常用数据类型、常量和变量;3) 基本输入输出函数的使用;4) 运算符与表达式(算术、赋值运算符) ;习题 A一、选择题1. 要把高级语言编写的源程序转换为目标程序,需要使用( )A、编辑程序 B、 驱动程序 C、诊断程序 D、 编译程序2. C 语言源文件的扩展名一般为( )A、.c B、 .obj C、.exe D、 .bak3. 以下叙述中正确的是( )A、C 语言的源程序不必通过编译就可以直接运行B、C 语言中的每条可执行语句最终都将被转换成二进制
2、的机器指令C、C 源程序经编译形成的二进制代码可以直接运行D、C 语言中的函数不可以单独进行编译4. 一个 C 语言程序是由( ) A、一个主程序和若干个子程序组成B、函数组成C、若干个过程组成D、若干个子程序组成 5. 字符型数据(char)在微机内存中的存储形式是 ( )A、反码 B、补码 C、BCD 码 D、ASCII 码6. int 型变量 a,执行了语句:a=A+1;,则正确的叙述是 ( )A、a 的值是字符 CB、a 的值是浮点型C、不允许字符型和浮点型相加D、 a 的值是字符A 的 ASCII 值加上 17. 当执行下面两个语句后,输出的结果为( )char c1 = 97; c
3、2 = 98;printf(“%d %c”,c1, c2); (a的 ASCII 值是 97)A、97 98 B、97 b C、a 98 D、a b8. C 语言中,运算对象必须是整型数的运算符是( )A、% B、/ C、%和/ D、*9. 知:int c,a=15,b=4; c=a/b; c 的值为( )A、3.75 B、3 C、4 D、4.010. 若有程序段: int c1 = 1, c2 = 2, c3;c3 = 1.0/c2 *c1;则执行后,c3 中的值是( )A、0 B、0.5 C、1 D、2二、填空题1. C 语言的源程序必须通过 和 后,才能被计算机执行。 2. 一个 C 程
4、序可包含 个函数,但是必须有且只有一个 函数,而且程序总是从该函数开始执行。3. C 语言中的标识符只能由三种字符组成,它们是 、 和 。4. 在 C 语言中的实型变量分为两种类型,它们是 和 。5. 若 s 是 int 型变量,且 s=6,则表达式 s2+(s+1) 2 的值为 。6. 若 a 是 int 型变量,则执行表达式 a=25/3%3 后 a 的值为 。7. 算术表达式 dcb23的 C 语言表达式是 。8. 设 x=A,则 x-a的值为 。三、问答题:1. 下列标识符中不合法的有哪些,并分别说明为什么不合法。A、abcd B、A_9 C、_1_2_3 D、floatE、3AY F
5、、_123 G、qq$ H、-int I、wang J、for K、zhao L、_h23 2. 某商店为了统计每日方便面的销售情况,需要定义两个变量分别统计某品牌方便面销售数量和总销售额,这两个变量分别定义成什么类型比较合适?3. 符号常量与变量有可异同?习题B 一、选择题1. 算法具有五个特性, 以下选项中不属于算法特性的是( )A、有穷性 B、简洁性 C、可行性 D、确定性2. 以下不能定义为用户标识符是( )A、Main B、_0 C、int D、sizeof3. 以下叙述中错误的是( )A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到“ 见名知意”C、用户所定义的
6、标识符必须以字母或下划线开头D、用户定义的标识符中,大、小写字母代表不同标识4. 以下不合法的用户标识符是( )A、j2_KEY B、Double C、4d D、_8_5. 以下叙述中错误的是( )A、C语言源程序经编译后生成后缀为.obj 的目标程序B、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C、C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令6. 下列叙述中错误的是( )A、一个C语言程序只能实现一种算法 B、C 程序可以由多个程序文件组成C、C程序可以由一个或多个函
7、数组成 D、一个C 函数可以单独作为一个 C程序文件存在7. 下列叙述中正确的是( )A、每个C程序文件中都必须要有一个main()函数B、在C程序中main() 函数的位置是固定的C、C程序中所有函数之间都可以相互调用,与函数所在位置无关D、在C程序的函数中不能定义另一个函数8. 以下叙述中错误的是( )A、计算机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行9. 按照 C 语言规定的用户标识符命名规则,不能
8、出现在标识符中的是( )A、大写字母 B、连接符 C、数字字符 D、下划线10. 以下叙述中错误的是( )A、C语言是一种结构化程序设计语言B、结构化程序由顺序、分支、循环三种基本结构组成C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法11. 以下合法的字符型常量是( )A、x13 B、081 C、65 D、“n“12. 以下选项中可作为 C 语言合法常量的是( )A、-80. B、-080 C、-8e1.0 D、-80.0e13. 以下选项中, 不能作为合法常量的是( )A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0
9、14. 以下不合法的数值常量是( )A、011 B、1e1 C、8.0E0.5 D、0xabed15. 以下不合法的字符常量是( )A、018 B、“ C、 D、xcc16. 以下关于 long、int 和 short 类型数据占用内存大小的叙述正确的是( )A、均占4个字节 B、根据数据的大小来决定所占内存的字节数 C、由用户自己定义 D、由C语言编译系统决定 17. 以下正确的字符串常量是( )A、“ B、abc C、OlympicGames D、“ 18. 以下合法的字符型常量是( )A、x13 B、081 C、65 D、“n“以下不能正确计算代数式 值的 C 语言表达式是( ))21(
10、sin3A、1/3*sin(1/2)*sin(1/2) B、sin(0.5)*sin(0.5)/3C、pow(sin(0.5),2)/3 D、1/3.0*pow(sin(1.0/2),2)20. 表达式 3.6-5/2+1.2+5%2 的值是( )A、4.3 B、4.8 C、3.3 D、3.821. 下列定义变量的语句中错误的是( )A、int _int; B、double int_; C、char For; D、float US$;22. 若变量 x、y 已正确定义并赋值,以下符合 C 语言语法的表达式是( )A、+x,y=x- B、x+1=y C、x=x+10=x+y D、double(x
11、)/1023. 以下选项中,值为 1 的表达式是( )A、1 0 B、1 - 0 C、1 -0 D、0 - 024. 设有定义:int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是( )A、k+ B、k+=1 C、+k D、k+125. 以下选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是( )A、x%2=1 B、x/2 C、x%2!=0 D、x%2=026. 已知大写字母 A 的 ASCII 码是 65,小写字母 a 的 ASCII 码是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语句是( )A、c=(c-A)%26 +a B、c=c+32 C、c=c
12、-A+a D、c=(A+c)%26-a27. 有以下程序main()int m,n,p;scanf(“m=%dn=%dp=%d“,printf(“%d%d%dn“,m,n,p);若想从键盘上输入数据, 使变量m 中的值为123, n中的值为456, p中的值为789, 则正确的输入是( )A、m=123n=456p=789 B、m=123 n=456 p=789 C、m=123,n=456,p=789 D、123 456 78928. 有以下程序#include main() char c1=1,c2=2;c1=getchar(); c2=getchar(); putchar(c1); put
13、char(c2);当运行时输入:a 后,以下叙述正确的是( )A、变量c1被赋予字符a,c2被赋予回车符B、程序将等待用户输入第2个字符C、变量c1被赋予字符 a,c2中仍是原有字符2D、变量c1被赋予字符a,c2中将无确定值29. 有以下程序main() int x, y, z;x=y=1;z=x+,y+,+y;printf(“%d,%d,%dn“,x,y,z);程序运行后的输出结果是( )A、2,3,3 B、2,3,2 C、2,3,1 D、2,2,130. 设有定义:int a; float b; 执行 scanf(“%2d%f“, 语句时,若从键盘输入876 543.0 ,a 和 b 的
14、值分别是( )A、876和543.000000 B、87和6.000000 C、87和543.000000 D、76和543.00000031. 设变量均已正确定义,若要通过 scanf(“%d%c%d%c“,语句为变量 a1和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符 ) ( )A、10X20YB、10X20YC、10X 20YD、10X 20Y32. 有以下程序,其中%u 表示按无符号整数输出main()unsigned int x=0xFFFF; /* x的初值为十六进制数 */printf(“%un“,x)
15、;程序运行后的输出结果是( )A、-1 B、65535 C、32767 D、0xFFFF二、填空题1. 以下程序运行后的输出结果是 。main() int a,b,c;a=10;b=20;c=(a%b1);printf(“%d %d %dn“a,b,c);2. 已知字符 A 的 ASCII 代码值为 65, 以下程序运行时若从键盘输入: B33。则输出结果是 。#include main() char a,b;a=getchar();scanf(“%d“,a=a-A+0; b=b*2;printf(“%c %cn“a,b);3. 若变量 a,b 已定义为 int 类型并赋值 21 和 55,要
16、求用 printf 函数以 a=21,b=55 的形式输出,请写出完整的的输出语句 。设有定义:float x=123.4567;,则执行以下语句后的输出结果是 。printf(“%fn“,(int)(x*100+0.5)/100.0);5. 以下程序运行后的输出结果是 。main() int m=011,n=11;printf(“%d %dn“,+m, n+);执行以下程序时输入 1234567,则输出结果是 。#include main() int a=1,b; scanf(“%2d%2d“,printf(“%d %dn“,a,b); 第二单元 程序结构知识点:1) 关系及逻辑运算符与表达
17、式;2) 分支结构及其运用;3) 循环结构及其运用;习题 A一、选择题1. 下列表达式中, 不满足“当 x 的值为偶数时值为真,为奇数时值为假”的要求( ) 。A、x%2=0 B、!x%2!=0 C、(x/2*2-x)=0 D、!(x%2)2. 能正确表示“当 x 的取值在1,10和200,210范围内为真,否则为假”的表达式是( ) 。A、(x=1) x=y; y=z;A、 x=10, y=20, z=30 B、 x=20, y=30, z=30C、 x=20, y=30, z=10 D、 x=20, y=30, z=209. 执行下面语句后的输出结果为( )int i = -1;if( i
18、 b?(ac?a:c):(b);A、 5 B、 4 C、 6 D、不确定12. 若有以下定义:float x; int a,b;则正确的 switch 语句是( )A、switch(x) B、 switch(x) case 1.0: printf(“*n“); case 1, 2: printf(“*n“);case 2.0: printf(“*n“); case 3: printf(“*n“); C、 switch (a+b) D、 switch (a+b); case 1: printf(“n“); case 1: printf(“*n“);case 1+2: printf(“*n“);
19、case 2: printf(“*n“); 13. 有如下程序 main( ) float x=2.0, y; if(x5) printf(“%dn”,m);else;printf(“%dn”,m-);A、 4 B、 5 C、 6 D、 715. 若运行时给变量 x 输入 12,则以下程序的运行结果是( )main() int x,y;scanf(“%d”, y=x12 ? x+10 : x-12;printf(“%dn”,y);A、 3 B、 2 C、 1 D、 016. 对下述程序, ( )是正确的判断。main ( ) int x,y;scanf(“%d,%d”,if (xy)x=y;y
20、=x;elsex+;y+;printf(“%d,%d”,x,y);A、有语法错误,不能通过编译 B、若输入3和4,则输出4和5C、若输入4和3,则输出3和4 D、若输入4和3,则输出4和517. 若 int i=10;执行下列程序后,变量 i 的正确结果是( ) 。switch (i) case 9: i+=1 ;case 10: i+=1 ;case 11: i+=1 ;default : i+=1 ;A、10 B、11 C、12 D、1318. 以下描述错误的是( )A、while 循环是先判断表达式,后执行循环体语句B、do-while 和 for循环均是先执行循环体语句,后判断表达式C
21、、while、do-while和for 循环中的循环体语句均可以由空语句组成D、使用while和 do-while循环时,循环变量初始化操作应在循环语句之前完成19. 语句的 while(E);中的条件 E 等价于( )A、E=0 B、E!=1 C、E!=0 D、E20. 若 i,j 已定义为 int 类型,则以下程序段中内循环体的总的执行次数是( ) for( i=5; i0; i-)for( j=0; j 4; j+)A、20 B、24 C、25 D、3021. 以下程序中,while 循环的循环次数是( )main( ) int i=0;while(i10 ) if(i1) continue;if(i= =5) break;i+;A、 1 B、 10 C、 6 D、 死循环,不能确定次数22. 设有程序段int k=10;while(k=0)k=k-1;