《C语言程序设计》习题_第1页
《C语言程序设计》习题_第2页
《C语言程序设计》习题_第3页
《C语言程序设计》习题_第4页
《C语言程序设计》习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计习题第1章习题一、单项选择题1.C语言程序的执行,总是起始于【 】。A) 程序中的第一条可执行语句B) 程序中的第一个函数 C) main函数D) 包含文件中的第一个函数分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。本题正确答案为C。2.下列说法中正确的是【 】。A) C程序书写时,不区分大小写字母B) C程序书写时,一行只能写一个语句C) C程序书写时,一个语句可分成几行书写D) C程序书写时每行必须有行号分析:C语言严格区分大小写字母,如"A1"和"a1&quo

2、t;被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。本题正确答案为C。3.下面对C语言特点,不正确描述的是【 】。A) C语言兼有高级语言和低级语言的双重特点,执行效率高B) C语言既可以用来编写应用程序,又可以用来编写系统软件C) C语言的可移植性较差D) C语言是一种结构式模块化程序设计语言分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。本题正确答案为C。4.C语言源程序的最小单位是【 】。A

3、) 程序行B) 语句C) 函数D) 字符分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。本题正确答案为D。5.以下四项中属于C语言关键字的是【 】。A) CHARB) defineC) unsignedD) retern分析:C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。本题正确答案为C。9.计算机内部运算使用的数是【 】。A) 十进制数B) 十六进制数C) 二进制数D) 八进制数分析:在实际生活中找不到具有十个稳定状态的物理元件,而具有两种稳定状态的元件到处可见,如一个开关具有

4、通电和断电两个稳定状态,计算机内部的元件正是以"1"代表通电,以"0"代表断电的,所以计算机内部运算使用的数是二进制数,至于八进制数和十六进制数是对二进制数的人为缩写。本题正确答案为C。10.一个字长的二进制位数是【 】。A) 2个BYTE,即16个bitB) 3个BYTE,即24个bit C) 4个BYTE,即32个bitD) 随计算机系统不同而不同分析:一个二进制位也称做1bit,八个二进制位称做1个BYTE,即所说的一个字节,BYTE和bit有固定的换算关系,但是计算机中的字长WORD和字节BYTE没有固定的换算关系,字长WORD是随CPU型号而异

5、的。本题正确答案为D。11.在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少【 】。A) 8,2,4,1B) 2,8,4,1C) 4,2,8,1D) 8,4,2,1分析:由上题知CPU字长决定了分配给各种类型变量多少个字节,当int类型占2个字节时,double、long、unsigned int、char型所占的字节分别为8、4、2、1个字节。本题正确答案为D。 二、填空题2.下面程序段的输出结果是【2】。int k=10;float a=3.5,b=6.7,c;c=a+k%3*(int)(a+b)%2/4;

6、分析:本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换,*、/、%是同级的要从左到右计算,最后算加法和赋值。本题正确答案为【2】 3.5000004.C语言中的运算符,优先级最低的是【4】。分析:与其它高级语言相比,在C语言中赋值号并不是优先级最低的,C语言中优先级最低的运算符是逗号运算符。本题正确答案为 【4】 逗号运算符。5.若下面程序的输出结果是4,请填空。main( ) int i,j,k;k=0 ; i=j=-2 ;k+=-i-【5】;printf("%dn",k);分析在C语言中当3个加号或3个减号连在一起时,中间的符号归属左边的变量,即-

7、i-j相当于-(i-)-j。本题正确答案为 【5】-j 。第2章习 题一、单项选择题1.下面叙述不正确的是【 】。A) C语句末尾必须有分号B) C语言中无论是整数还是实数都能准确的表示C) 运算符“%”只能用于整数运算D) 乘除运算符优先级高于加减运算符2.以下叙述正确的是【 】。A) C语句前面必须有行号B) C程序中每行只能写一条语句C) C语言本身没有输入输出语句D) 注释必须跟在一行语句的后面3.复合语句应用【 】括起来。A) 小括号B) 方括号C) 大括号D) 尖括号6.C语言语句一行写不下时,可以【 】。A) 用逗号换行B) 用分号换行C) 用回车换行D) 在任意一空格处换行8.

8、下面程序的输出是【 】。(“”表示一个空格)int a=3366;printf("|%-08d|",a);A) |-0003366| B) |00003366| C) |3366|D) 输出格式非法9.若有说明语句:int a; float b;,以下输入语句正确的是【 】。A) scanf("%f%f",&a,&b);B) scanf("%f%d",&a,&b);C) scanf("%d,%f",&a,&b);D) scanf("%6.2f%6.2f&qu

9、ot;,&a,&b);10.以下程序的输出结果是【 】。main( ) int x=11,y=11;printf("%d%dn",x-,-y);A) 11,11B) 10,10C) 10,11D) 11,1012执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【 】。int x,y;scanf("%d%d",&x,&y);A) 空格B) Tab键C) 回车D) 逗号13.下面合法的语句是【 】。A) int a=8,b;b=+a+;printf("%d,%d",a,b+); B) int a;pr

10、intf(""%d"",scanf("%d",&a);C) char a;scanf("%c",&a);char b=scanf("b=%c",&b);D) char c=getchar( ); putchar(int)c);14.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是【 】。int a;float b;scanf("a=%d,b=%f",&a,&b);A) 252.5B) 25,2.5C) a=25,b=5.

11、5D) a=25b=2.515.与数学公式a·bx·y不等价的语句是【 】。A) a*b/x*yB) a*b/x/yC) a*b/(x*y)D) a/(x*y)*b二、填空题1.表达式5%(-3)的值是【1】,表达式-5%(-3)的值是【2】。2.在C语言中,格式输入库函数为【3】,格式输出库函数为【4】。4.执行下列程序的输出结果是【6】。main( )float a=1,b;b=+a*+a;printf("%fn",b);5.执行下列程序的输出结果是【7】。main( )int x=5,y;y=+x*+x;printf("y=%dn&quo

12、t;,y);参 考 答 案 :答案题号与练习题号一致,但有些题目已经删除,答案没有删除。一、选择题(1)B(2)C(3)C(4)B(5)B(6)D(7)D(8)C(9)C(10)D(11)B(12)D(13)D(14)C(15)A二、填空题【1】 2【5】 32767【2】 -2【6】 6.000000【3】 scanf【7】 49【4】 printf 第三章习题一、单项选择题1.下面不属于C语言的数据类型是【 】。A) 整型B) 实型C) 逻辑型 D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。本题正确答案为C。3.下列字符串不符合标识符规定的是【 】。A

13、) SUMB) sumC) 3cdD) end分析:标识符规定只能由26个英文字母(大小写均可),数字09和下划线组成,且不能以数字开头,题中的3cd不符合规定。本题正确答案为C。5.下面四个选项中,均是合法实数的选项是【 】。 A)+1e+3B)-.50 C) 70e D)-e5 2e-4.2 33e-4 0.2e-.5 .8e-4 06e3 -4e4 +8e-1 5.e-0分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。选项A)中的"2e-4.2",选项C)中的"0.2e-.5"

14、,选项D)中的"-e5"均是不合法的。本题正确答案为B。6.C语言中,字符型数据在内存中存储形式是【 】。A) 原码B) 反码C) 补码D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。本题正确答案为D。7.下列正确的字符型常量是【 】。A) "a"B) C) "r"D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,是转义字符。本题正确答案为B。8.若有说明语句char ch1=x41;则ch1【 】。A) 包含4个字符

15、 B) 包含3个字符C) 包含2个字符D) 包含1个字符分析:"x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。本题正确答案为D。9.下列程序段输出的字符串长度为【 】。printf("aaacccbddd"");A) 11B) 12C) 13D) 17分析:、b和"为转义字符,程序输出结果为:aaaccddd"。本题正确答案为A。10.下列运算符中,要求运算对象必须是整数的是【 】。A) /B) *C) %D) !分析:题目中&quo

16、t;/"、"*"、"!"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。本题正确答案为C。11.下面合法的赋值语句是【 】。A) x+y=2002;B) ch="green"C) x=(a+b)+;D) x=y=0316;分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“+”不能用于表达式,选项C)也是错的。本题正确答案为D。12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+

17、b*c-d/a结果的类型为【 】。A) int 型B) float型C) double型D) char型分析:不同类型数据混合运算的转换规律是:运算前float型数据会自动转换为double型,char型数据会自动转换为int型。运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。本题正确答案为C。14.下面的程序运行后输出为【 】。#include <stdio.h>#include <math.h>main( ) int a,b;float c;b=5;c=6;c=b+7;b=c+1;a=sqrt(double)b+

18、c); / *sqrt是开平方库函数,定义代码在math.h中*/printf("%d,%f,%d",a+6,c,b);A) 11.000000,12.000000,13.000000B) 11.000000,12.000000,13C) 11.0000000,12,13D) 11,12.000000,13分析:C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12.000000而不是整数12,同样a=sqrt(double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a

19、的值为5。本题正确答案为D。二、填空题2.下面程序段的执行结果是x=【3】,y=【4】。inta=3,b=5,x,y;x=a+1,b+6;y=(a+1,b+6);printf("x=%d,y=%d",x,y);分析:此题考查逗号表达式的概念,因逗号运算符的优先级比赋值号还低,所以执行x=a+1,b+6时,x得到的是a+1的值。本题正确答案为 【3】 4, 【4】 11。4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。分析:a+=a-=a*a的运算顺序是从右向左,相当于求a+=(a-=a*a),其中小括号内的运算得a=5-5*5即a=-20,下一步

20、再求a+=a,即a=a+a,将-20代入得a=-40。本题正确答案为 【6】 -40。5.下面程序的运行结果是x=【7】,y=【8】。main( ) float x=4.9;int y;y=(int)x;printf("x=%f,y=%d",x,y); 分析:强制类型变换并不改变x的原值,x仍为4.9,而变换得到的是中间结果,此题将中间结果赋给了y,另外注意是舍弃小数部分,而不是四舍五入。本题正确答案为 【7】 4.900000 【8】 4。 第四章 习题一、单项选择题1.对if语句中表达式的类型,下面正确的描述是【 】。A) 必须是关系表达式B) 必须是关系表达式或逻辑表

21、达式C) 必须是关系表达式或算术表达式D) 可以是任意表达式分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。本题正确答案为D。2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【 】。A) 缩排位置相同的ifB) 其上最近的ifC) 下面最近的ifD) 同行上的if分析:多重if_else嵌套时,else总是与它上面最近的if配对。本题正确答案为B。3.以下错误的if语句是【 】。A) if(x>y) z=x;B) if(x=y) z=0;C) if(x!=y) printf("%d",x) else prin

22、tf("%d",y);D) if(x<y) x+;y-;分析:选项C)中的第一个printf语句后面丢了分号,所以是错误的。本题正确答案为C。6.以下程序的输出为【 】。main( ) int a=20,b=30,c=40;if(a>b) a=b,b=c;c=a;printf("a=%d,b=%d,c=%d",a,b,c); A) a=20,b=30,c=20B) a=20,b=40,c=20C) a=30,b=40,c=20D) a=30,b=40,c=30分析:题中的"a=b , b=c;"是一个语句书写在了两行,因a

23、>b为假,所此句不执行,又"c=a"与if语句无关,总要执行,故a,b值不变,c值为20。本题正确答案为A。7.对于条件表达式(k)?(i+):(i-)来说,其中的表达式k等价于【 】。A) k=0B) k=1C) k!=0D) k!=1分析:因为条件表达式e1?e2:e3的含义是e1为真时,取表达式e2的值,否则取表达式e3的值,"为真"的意思就是不等于0。本题正确答案为C。10.下面程序运行结果为【 】。main( ) char c=a;if(a<c<=z)printf("LOW");else printf(&q

24、uot;UP");A) LOW B) UP C) LOWUP D) 语句错误,编译不能通过分析:关系运算符“<”和“<=”的优先级相同,计算顺序是从左向右,求解表达式a<c<=z时,是先计算出a<c的值(此值只有0和1两种情况),接着再判断该值小于等于z(z的ASCII码是122),所以该式的值永远为1,程序输出LOW。本题正确答案为A。11.对下述程序,正确的判断是【 】。main( ) int a,b;scanf ("%d,%d",&a,&b);if(a>b)a=b; b=a;else a+; b+;prin

25、tf("%d,%d",a,b); A) 有语法错误不能通过编译B) 若输入4,5则输出5,6C) 若输入5,4则输出4,5D) 若输入5,4则输出5,5分析:不管if语句中的条件真假,它只能执行一个语句,要想根据条件执行多个语句,应写成复合语句,程序中if和else的后面都有两个语句,违反了这一点。本题正确答案为A。12.分析以下程序,结论是【 】。main( ) int x=5,a=0,b=0;if(x=a+b) printf("*n");else printf("#n");A) 有语法错,不能通过编译B) 能通过编译,但不能连接C

26、) 输出*D) 输出 #分析:if语句中的判别式可以是赋值表达式,题中if(x=a+b)的含义是,先把a+b的值赋给x,再判断x的值是否为0。本题正确答案为D。13.对下面的程序,正确的说法是【 】。main( ) int a,b=1,c=2;a=b+c,a+b,c+3;c=(c)?a+:b-;printf("c=%d/n",(a+b,c); A) 无错误B) 第三行有错误C) 第四行有错误D) 第五行有错误分析:第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行printf语句的输出项为逗号表达式,本题没有语法错误。本题正确答案为A。二、填空题1.下面程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论