1、C语言练习题(谭浩强第四版).附有答案C语言练习题(谭浩强第四版).附有答案 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语言练习题(谭浩强第四版).附有答案)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为C语言练习题(谭浩强第四版).附有答案的全部内容。37一、选择题1、 一个C程序由若干个C函数组成,各个函数在文
2、件中的位置顺序为:()A、 任意 B、 第一个函数必须是主函数,其他函数任意C、 必须完全按照执行的顺序排列D、 其他函数可以任意,主函数必须在最后2、 下列四个叙述中,正确的是:()A、 C程序中的所有字母都必须小写B、 C程序中的关键字必须小写,其他标示符不区分大小写C、 C程序中的所有字母都不区分大小写D、 C语言中的所有关键字必须小写3、 下列四个叙述中,错误的是:()A、 一个C源程序必须有且只能有一个主函数B、 一个C源程序可以有多个函数C、 在C源程序中注释说明必须位于语句之后D、 C源程序的基本结构是函数4、 下面不是C语言合法标识符的是:()A、abc B、5n C、_4m
3、D、x35、 以下叙述不正确的是:()A.分号是C语句的必要组成部分B。C程序的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定非用main来表示6、 C语言中允许的基本数据类型包括:()A。 整型、实型、逻辑型 B。 整型、实型、字符型C. 整型、字符型、逻辑型 D。 整型、实型、逻辑型、字符型7、 C语言中能用八进制表示的数据类型为:()A、字符型、整型 B、整形、实型C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型8、 下列属于C语言合法的字符常数是:()A、97 B、”A” C、t D、09、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排
4、列顺序为:() A、charint=long int =floatdoubleB、char=intlong int =floatdoubleC、charintlong int=float=doubleD、char=int=long int =floatdouble10、 若有以下定义语句char c1=b, c2=e; printf(“%d,%cn”,c2-c1,c2-a+A);则输出结果是:() A、2,M B、3,E C、2,E D、输出项与相应的格式控制不一致,输出结果不确定11、 以下合法的赋值语句是:() A、x=y=100 B、d-; C、x + y D、c = int(a+b);
5、12、 在以下一组运算符中,优先级最高的是:() A、= B、= C、 D、&13、 下列能正确表示a10或a0的关系表达式是:() A、a=10 or a=0 B、a=10 | a=0 D、a=10 & a=014、 下列只有当整数x为奇数时,其值为“真”的表达式是:() A、x2=0 B、!(x2=0) C、(x-x/22)=0 D、!(x2)15、 设a为整型变量,不能正确表达数学关系10a15的C语言表达式是:() A、1 0 a =15) C、a10 & a=15)16、 已知x=43, ch=A,y=0;则表达式(x=y&chB!y)的值是:()A、0 B、语法错 C、1 D、“假
6、”17、 表达式17%4 /8的值为:()A、0 B、1 C、2 D、318、 一个可执行的C程序的开始执行点是:()A. 程序中的第一个语句 B. 包含文件中的第一个函数C. 名为main的函数 D。 程序中的第一个函数19、 组成语句的一个必不可少的符号是:()A。 逗号 B. 引号 C. 冒号 D。 分号20、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:()A. int B。 long C。 float D。 double21、 下述是C语言中有关变量定义的几个说法,正确的是:()A.变量可以不定义直接使用 B。一个说明语句只能定义一个变量C。几个不同
7、类型的变量可在同一语句中定义D.变量可以在定义时进行初绐化 22、 与x * = y + z等价的赋值表达式是:()A. x = y + z B. x = x y + z C。 x = x (y + z) D. x = x + y * z 23、 当代电子计算机能够自动地处理指定的问题是因为:()A计算机是电动的B有解决该问题的计算机程序C事先存储了解决该问题的程序D以上都不是24、 以下叙述中最准确的是:()A计算机程序是处理某一问题所有指令的集合B计算机程序是处理某一问题所用到的所有数据的集合C计算机程序是处理某一问题的所有指令及其数据的集合D计算机程序是处理某一问题的所有指令及其数据的有
8、序集合25、 目前编写计算机程序一般采用的是:()A机器语言B汇编语言C高级语言D英语26、 设计一个计算机程序最基本的工作是:()A制定正确的算法B选择合理的数据结构C制定正确的算法和选择合理的数据结构D以上都不是27、 算法具有五个特性,以下选项中不属于算法特性的是:()A有穷性B简洁性C可行性D确定性28、 下述哪一个不是结构化程序基本结构:()A顺序B选择C循环D嵌套29、 C语言是一种:() A机器语言B汇编语言C高级语言D以上都不是30、 C语言源程序的扩展名为:() A.exeB。cC。objD.cpp31、 C程序编译、连接后最终产生(即计算机执行)的文件的扩展名为( )A.e
9、xeB.cC。objD.cpp32、 构成C语言源程序的基本单位是:() A子程序B过程C文本D函数33、 下列叙述正确的是:() AC语言源程序可以直接在DOS环境中运行 B编译C语言源程序得到的目标文件可以直接在DOS环境中运行 CC语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 DC语言源程序可以直接在VC+环境中运行34、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:() A写在前面的函数先开始执行 B总是从main()函数开始执行 C总是从max()函数开始执行 D写在后面的函数先开始执行 35、 以下叙述不正确的是:()A分号是C语
10、句的必要组成部分BC程序的注释可以写在语句的后面C函数是C程序的基本单位D主函数的名字不一定用mian表示36、 以下为C语句的是:()Aa=8 Ba+; Cif(a8)D #include 10;后,t的值为0 22. ( T )若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 23. ( T )在C程序中,%是只能用于整数运算的运算符24. ( T )在C语言中,逻辑“真等价于不等于0的数25. ( F )C语言中字符型、整型、实型都能用八进制表示26. ( T )变量的三要素是:变量名、变量类型、变量的值。书上必会的题:课后题:第三章P834,6,7一、 选
11、择题1. 以下说法正确的是( )。A)C语言程序总是从第一个的函数开始执行 B)在C语言程序中,要调用函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 2. 算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是( )。 A)有零个输入或多个输入 B)高效性 C)有穷性 D)确定性 3. C语言中用于结构化程序设计的3种基本结构是 A)顺序结构、选择结构、循环结构 B)if,switch,break C)for,while,do-while D)if,for,continue4.
12、一个C程序的执行是从( ).A)main()函数开始,直到main()函数结束 B)第一个函数开始,直到最后一个函数结束C)第一个语句开始,直到最后一个语句结束 D)main()函数开始,直到最后一个函数结束5. 组成C程序的基本单位是( ).A)函数 B)标识符C)表达式D)语句6. 若有语句scanf(“d%d,a,&b);要使变量a,b分别得到12和34;正确的输入形式为( )。A)1234回车 B)12,34回车C)1234D)12:34回车7. C语言中最简单的数据类型包括( )。A)整型、实型、逻辑型 B)整型、实型、字符型C)整型、字符型、逻辑型 D)字符型、实型、逻辑型8. C
13、语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符( )。A)必须为字母 B)必须为下划线C)必须为字母或下划线 D)可以是字母,数字和下划线中任一字符9. 下列可用于C语言用户标识符的一组是( )。A)void, define, WORD B)a3_b3, _123,CarC)For, -abc, IF Case D)2a, DO, sizeof10. C语言中运算对象必须是整型的运算符是( )。A)=B)/ C)= D)=10 or a=0 B)a=0a=10a=017. 若变量c为char类型,能正确判断出c为小写字母的表达式是A)a=c=z B)(c=a)(c=z)C)(
14、a=c)and(z=c) D)(c=a)(c12?x+10:x-12;printf(”%dn,y); A)0 B)22 C)12 D)1019. 已知char ch=C;则以下表达式的值是ch=(ch=A ch=Z)?(ch+32):ch;A)A B)a C)Z D)c20. 请阅读以下程序:main() int a=5,b=0,c=0; if(a=b+c)printf(*n”);else printf(n”);以上程序A)有语法错不能通过编译 B)可以通过编译但不能通过连接C)输出* D)输出$21. 若int k=8;则执行下列程序后,变量k的正确结果是main()int k=8;swit
15、ch(k)case 9:k+=1;case 10:k+=1;case 11:k+=1;break;default:k+=1;printf(”%dn,k);A)12 B)11 C)10 D)922. 阅读如下程序段#include ”stdio。h”main() int a=45,b=40,c=50,d; d=a30?b:c; switch(d) case 30 : printf(”d,”,a); case 40 : printf(”d,”,b); case 50 : printf(”%d,c); default : printf();则输出的结果是A)40,50, B)50,# C)40,#
16、D)40,50,二、 填空题1. 用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。2. C语言中的标识符只能由字母、下划线和( 数字 ) 组成.3. C语言源程序注释符号有两种,(/*/ )用于块注释,( / )用于行注释。4. 源程序test。c经编译产生的目标文件是:( test。obj );经连接处理后,产生的可执行文件是:( test。exe ).5. C标准库函数中,数学函数的原型在(math.h )头文件中。6. 如下语句printf(cn,B+35);在执行后的输出结果是 ( e )。7. 下列程
17、序的输出结果是( 1.300000,1。300000 )。 includeinclude int main() floata=1。3;b=1.3; printf(f,f,fabs(a),fabs(b); return 0;8. 将以下程序写成三目运算表达式是( max = ab ? a : b).if(ab)max=a;else max=b;9. 若从键盘输入58,则以下程序输出的结果是 ( 585858 ) .main() int a; scanf(%d”,a); if(a50)printf(%d”,a); if(a40)printf(%d,a); if(a30)printf(”%d,a);
18、10. 阅读下面的程序,当程序在执行时,如果输入的是A,则输出结果为( ABother ) .#include ”stdio.hmain() char a; a=getchar(); switch(a) case 65: printf(c”,A); case 66: printf(%c”,B);default :printf(”%sn,”other);三、 判断题1. ( F )一个程序只能由一个C程序文件组成。2. ( T )一个C程序文件是由一个或多个函数组成的.3. ( T )一个程序必须包含一个main函数。4. ( F )main函数必须写在一个C程序文件的最前面。5. ( F )C
19、程序的执行从程序头开始.6. ( F )函数体不可以为空.7. ( F )C程序的注释只能是一行。 8. ( F )C程序中的数据声明和语句必须用“。”结束。9. ( F )C程序一行只能写一条语句。10. ( F )在C程序中,符号“Sum”和“sum”相同.第三章 顺序结构一、选择题1. 下面程序的输出是:() main() int k=11; printf(k=d,k=%o,k=%xn,k,k,k); A) k=11,k=12,k=13 B) k=11,k=13,k=13C) k=11,k=013,k=oXb D) k=11,k=13,k=b2. 以下合法的C语言赋值语句是:() A)a
20、=b=58 B)k=int(a+b) ; C)a=58,b=58 D)-i;3. 以下程序的输出结果是:() main() int x=10,y=3;printf(“dn”,y=x/y); A)0 B)1 )3 D)不确定4. 若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是:() A)read (a,b,c); B)scanf(“%dd%d,a,b,c);C)scanf(“%D%DD,a,%b,c); D)scanf(“%d%d%d”,a,b,b);5. 执行下面程序段后,c3中的值是:()int c1=1 , c2=2 , c3;c3=c1/c2; A)0 B)1
21、/2 C)0.5 D)16. 以下程序段的输出是:()float a=57。666;printf(“4.2f*n”, a);A)*57* B)*58* C)*57。66* D)57。677. 若有以下定义和语句:() int a=5,b b=a+;此处b的值是:()A) 7 B) 6 C) 5 D) 48. 以下程序的输出结果是:() main() int x=10,y=10; printf(d%dn”,x-,-y); A) 10 10 B) 9 9 C) 9 10 D) 10 99. 已知字符A的ASCII码为十进制的65,下面程序的输出是:() main() char ch1,ch2; c
22、h1=A+5-3; ch2=A+6-3; printf(”%d,%cn,ch1,ch2); A) 67,D B) B,CC) C,D D) 不确定的值10. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是:() main() int x; scanf(”d,x); if (x+5) printf(%d”,x) else printf(”dn,x-); A) 7和5 B) 6和3 C) 7和4 D) 6和411. 若执行下面的程序从键盘输入3和4,则输出是:() main() int a,b,s; scanf(”%dd,a,b); s=a; if (ab) s=b; s=ss; p
23、rintf(”dn”,s); A) 14 B) 16 C) 18 D) 2012. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值scanf(i=d,f=%f”,&i,f);为了把100和765.12分别赋给i和f,则正确的输入为:()A) 100空格765.12回车 B) i=100,f=765.12C) 100回车765。12回车 D) x=100回车,y=765.12回车 二、判断题1( F )在C语言中,实型数据在内存都中占4个字节。 2( F )在C语言中,参加算术( +,-,/, )运算的数据可以是任何类型的数据。 3( F )若有定义和语句:int a;
24、char c;scanf(”%d,c,&a,c);当通过键盘输入:10,A之后,则变量a中存放的是10,变量c中存放的是A. 4( F )C语言中,变量名只能是小写字母表示,符号常量名可用大写表示 5( F )在C语言中,变量可以不要定义,直接使用 6( T )一个C语言程序总是从主函数开始执行的 7( F )注释语句必须用/和/括起来,且只能位于某一语句的后面 第四/五章 选择结构与循环结构一、选择题1. 有以下程序 main( ) int i; for ( i=0; ib ? (ac?a:c) : (b)); A) 5 B) 4 C) 6 D) 不确定3. 以下程序中,while循环的循环
25、次数是:() main() int i=0; while(i10) if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环,不能确定次数4. 以下程序的输出结果是:() main( ) int a=0,i; for(i=1;i5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; printf(”%dn”,a); A) 31 B) 13 C) 10 D) 205. 若执行以下程序时从键盘上输入9,则输出结果是:() main() int n
26、; scanf (d,n); if(n+10) printf (dn,n); elseprintf(%dn”,n-); A) 11 B) 10 C) 9 D) 86. 有以下程序段 int k=0;while(k=1)k+; 则while 循环执行的次数是:() A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 7. 以下程序执行后sum的值是:() main() int i , sum; for(i=1;i5) printf (“%dn”,m); else printf (“dn”,m-); A )7 B )6 C)5 D)49. 设有如下定义: int a=1,b
27、=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=ab)&(n=cd)后,n的值为:()A)1 B)2 C)3 D)010. 以下程序运行后,如果从键盘上输人5,则输出结果是:()main( ) int x;scanf(%d,&x);if(x-5)printf(d”,x);elseprintf(”%d,x+);A、3 B、4 C、5 D、611. 以下程序段的输出是:() int i,j,m=0;for (i=1;i=15;i+=4)for (j=3;j=19;j+=4) m+;printf(“%dn”,m);A)12 B)15 C)20 D)2512. 定义如下变量:int n=1
28、0;则下列循环的输出结果是:() while (n7) n-; printf(”%3d”,n); A) 10 9 8 B) 9 8 7C) 10 9 8 7 D) 9 8 7 613. 以下循环体的执行次数是:() main() int i,j; for(i=0,j=1;i=j+1;i+=2,j-)printf(d n,i); A) 3 B) 2 C) 1 D) 014. 在C语言的循环语句for,while,dowhile语句中,用于直接中断最内层循环的语句是:()A) switch B) continue C) break D) if二、判断题:1. ( F )用1作while循环的判断条
29、件,则循环一次也不执行. 2. ( F )for循环表达式的括号内的3个表达式均不可以省略。 3. ( F )若有for(;;),是指循环体执行0次。 4. ( F )程序有死循环的时候,上机编译不能通过。 5. ( F )执行for(I=0;I3;I+);后I的值为2。 6. ( T )所有类型的循环都可以进行嵌套使用。 7. ( T )利用break语句可以提前终止循环的执行. 8. ( F )利用continue语句可以提前终止循环的执行. 9. ( F )break语句和continue语句不可以同时出现在同一个循环体内。 10. ( F )switch语句中,每一个case的冒号后面都必须至少跟有一条语句第6章数组一、选择题1、假设int型变量占两个字节的存储单元,若有定义: int x10=0,2,4; 则数组x在内存中所占字节数为:() A、3 B、6 C、10 D、202、下面程序段的输出结果是:() int j; int x33=1,2,3,4,5,6,7,8,9; for (j=0;j3;j+) printf(“d ”,xj2-j); A、1 5 9 B、1 4 7 C、3