[电脑基础知识]C语言中最容易犯的几个错误的参考.doc

上传人:音乐台 文档编号:1987447 上传时间:2019-01-28 格式:DOC 页数:42 大小:109KB
返回 下载 相关 举报
[电脑基础知识]C语言中最容易犯的几个错误的参考.doc_第1页
第1页 / 共42页
[电脑基础知识]C语言中最容易犯的几个错误的参考.doc_第2页
第2页 / 共42页
[电脑基础知识]C语言中最容易犯的几个错误的参考.doc_第3页
第3页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[电脑基础知识]C语言中最容易犯的几个错误的参考.doc》由会员分享,可在线阅读,更多相关《[电脑基础知识]C语言中最容易犯的几个错误的参考.doc(42页珍藏版)》请在三一文库上搜索。

1、C语言中最容易犯的几个错误的参考C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。 1.书写标识符时,忽略了大小写字母的区别。 main() int a=5; printf(%d,A); 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用

2、大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() float a,b; printf(%d,a%b); %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。 3.将字符常量与字符串常量混淆。char c; c=a; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不行的。 4.忽略了“=”与“=”的区别。 在许多高

3、级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then 但C语言中,“=”是赋值运算符,“=”是关系运算符。如: if (a=3) a=b; 前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。 5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 z=x+y; t=z/

4、100; printf(%f,t); 对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。 6.多加分号。 对于一个复合语句,如: z=x+y; t=z/100; printf(%f,t); ; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 又如: if (a%3=0); I+; 本是如果3整除a,则I加1。但由于if (a%3=0)后多加了分号,则if语句到此结束,程序将执行I+语句,不论3是否整除a,I都将动加1。自再如: for (I=0;I5;I+); scanf(%d,&x); printf(%d,x); 本意是先后输入5个数,每输入一个数后再将

5、它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。 7.输入变量时忘记加地址运算符“&”。 int a,b; scanf(%d%d,a,b); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。 8.输入数据的方式与要求不符。scanf(%d%d,&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。 scanf(%d,%d,&a,&b); C规定:如果在“格式控制”字符串中除了格式说明以外还有

6、其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的: 3,4 此时不用逗号而用空格或其它字符是不对的。 3 4 3:4 又如: scanf(a=%d,b=%d,&a,&b); 输入应如以下形式: a=3,b=4 9.输入字符的格式与要求不一致。 在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。 scanf(%c%c%c,&c1,&c2,&c3); 如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。 10.输入输出的数据类型与所用格式说明符不一致。 例如,a已定

7、义为整型,b定义为实型 a=3;b=4.5; printf(%f%dn,a,b); 编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。 11.输入数据时,企图规定精度。 scanf(%7.2f,&a); 这样做是不合法的,输入数据时不能规定精度。 12.switch语句中漏写break语句。 例如:根据考试成绩的等级打印出百分制数段。 switch(grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:printf(60n); default:printf(errorn

8、); 由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如 case A:printf(85100n);break; 13.忽视了while和do-while语句在细节上的区别。 (1)main() int a=0,I; scanf(%d,&I); while(I=10) a=a+I; I+; printf(%d,a); (2)main() int a=0,I; scanf(%d,&I); do a=a+I; I+; w

9、hile(I10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。 14.定义数组时误用变量。 int n; scanf(%d,&n); int an; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。 15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。 main() static int a10=1,2,3,4,5,6,7,8,9,10; printf(%d,a10); C语言规定:定义时用a1

10、0,表示a数组有10个元素。其下标值由0开始,所以数组元素a10是不存在的。 16.初始化数组时,未使用静态存储。 int a3=0,1,2; 这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为: static int a3=0,1,2; 17.在不应加地址运算符&的位置加了地址运算符。 scanf(%s,&str); C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为: scanf(%s,str); 18.同时定义了形参和函数中的局部变量。 int ma

11、x(x,y) int x,y,z; z=xy?x:y; return(z); 形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为: int max(x,y) int x,y; int z; z=xy?x:y; return(z); 以上错误中可能有些不符合新版的C语言,比如数组的初始化,新版中就可以是不是静态变量。第1章 C语言概述练习题(一) 加入时间:2006年3月10日9:55 来源: 计算机学院 【字体:大 中 小】【双击滚屏】 一、单项选择题1.C语言程序的执行,总是起始于【 】。A) 程序中的第一条可执行语句B) 程序中的第一个函数C) main函数 D) 包含文件中的第

12、一个函数分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。本题正确答案为C。2.下列说法中正确的是【 】。A) C程序书写时,不区分大小写字母B) C程序书写时,一行只能写一个语句C) C程序书写时,一个语句可分成几行书写D) C程序书写时每行必须有行号分析:C语言严格区分大小写字母,如A1和a1被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。本题正确答案为C。3.下面对C语言特点,不正确描述的是【 】。A) C语言兼有高级语言和低级语言的双重特点,执行效率高B)

13、C语言既可以用来编写应用程序,又可以用来编写系统软件C) C语言的可移植性较差D) C语言是一种结构式模块化程序设计语言分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。本题正确答案为C。4.C语言源程序的最小单位是【 】。A) 程序行B) 语句C) 函数D) 字符分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。本题正确答案为D。5.以下四项中属于C语言关键字的是【 】。A) CHAR B) define C) unsigned

14、 D) return分析:C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。本题正确答案为C。6.十进制数2403转换成十六进制数为【 】。A) 963 B) 369 C) 953 D) 359分析:十进制数化成十六进制数的方法是:不断除以16,商0为止,倒取余数。本题正确答案为A。7.二进制数00110101转换成八进制数是【 】。A) 055 B) 065 C) 056 D) 152分析:二进制数化成八进制数的方法是:从右向左划分,将每3位二进制数书写成1位八进制数。本题正确答案为B。8.将二进制

15、数1011011.011转换成十进制数是【 】。A) 91.75 B) 91.375 C) 91.125 D) 91.25分析:二进制数化成十进制数的方法是:各数字乘以权重再相加,题中整数部分为:(1011011)2=126+124+123+121+120=64+16+8+2+1=91,小数部分为:(0.011)2=02-1+12-2+12-3=0.25+0.125=0.375,再将两者合在一起得91.375。本题正确答案为B。9.计算机内部运算使用的数是【 】。A) 十进制数 B) 十六进制数 C) 二进制数 D) 八进制数分析:在实际生活中找不到具有十个稳定状态的物理元件,而具有两种稳定状

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

17、答案为D。11.在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少【 】。A) 8,2,4,1 B) 2,8,4,1 C) 4,2,8,1 D) 8,4,2,1分析:由上题知CPU字长决定了分配给各种类型变量多少个字节,当int类型占2个字节时,double、long、unsigned int、char型所占的字节分别为8、4、2、1个字节。本题正确答案为D。12.下面程序段执行结果是【 】。int i=5,k;k=(+i)+(+i)+(i+);printf(%d,%d,k,i);A) 24,8 B) 21,8

18、C) 21,7 D) 24,7分析:k=(+i)+(+i)+(i+)表达式中,+号在i前面的有两个,所以在计算k之前,i要先增两次,即i变为7,然后再将3个7相加,使k得21,表达式中+号在i后面的有1个,所以得出k的值以后i又增1次变为8。本题正确答案为B。13.下面程序段执行结果是【 】。int i=5;printf(%d,%d,%d, i,(+i)+(+i)+(i+),i);A) 8,20,5 B) 8,21,5 C) 5,20,8 D) 5,21,8分析:此题不能看作将12题中的k=(+i)+(+i)+(i+)代入printf函数,因为函数处理参数的顺序是从右向左,所以(+i)+(+i

19、)+(i+)表达式的值不再是求7+7+7,而是为8+7+5=20。本题正确答案为A。14.下面程序段的输出结果是【 】。int i=32769;printf(%dn,i);A) 32769 B) 32767 C) -32767 D) 输出不是确定的数分析:int型变量表示数据的范围是-32768+32767,赋值时比-32768小或比+32767大,都会发生溢出,溢出后存放的数值是:正向溢出时,为该数减去模65536,负向溢出时,为该数加上模65536,所以本题输出为32769-65536=-32767。本题正确答案为C。15.下面的程序运行后输出为【 】。main( ) int a=-327

20、69;ptintf(%8Un,a);A) 32769 B) %8U C) 32767 D) -32767分析:格式字符必须小写,题中的%8U不会当作格式控制符,而是原样输出,变量a将没有对应的格式说明,也不会送出。本题正确答案为B。第1章 C语言概述练习题(二) 加入时间:2006年3月10日10:0 来源: 计算机学院 【字体:大 中 小】【双击滚屏】 二、填空题1.若以下程序的输出结果是13,请填空。main( ) int x=016;printf(%dn,【1】); 分析:在C语言中以0开头的数字是八进制数,016相当于十进制数14,执行printf语句时,输出项应为x的值减1。本题正确

21、答案为 【1】 -x或x-=1。2.下面程序段的输出结果是【2】。int k=10;float a=3.5,b=6.7,c;c=a+k%3*(int)(a+b)%2/4;分析:本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换,*、/、%是同级的要从左到右计算,最后算加法和赋值。本题正确答案为【2】 3.5000003.若执行下面程序段后的输出为:3,4,5,请填空。int a,b=3,c=5;a=bc?【3】:c+;printf(%d,%d,%d,a,b,c);分析:本题考查条件运算符和增量运算符的概念,题中bc为真,应取b+的值给a,因b的值是先用后增1,所以a为3,题

22、中的c+没有执行到,c保持原值。本题正确答案为 【3】 b+。4.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个减号连在一起时,中间的符号归属左边的变量,即-i-j相当于-(i-)-j。本题正确答案为 【5】-j 。第2章 习题 一、单项选择题1.下面叙述不正确的是【 】。A) C语句末

23、尾必须有分号B) C语言中无论是整数还是实数都能准确的表示C) 运算符“%”只能用于整数运算D) 乘除运算符优先级高于加减运算符2.以下叙述正确的是【 】。A) C语句前面必须有行号B) C程序中每行只能写一条语句C) C语言本身没有输入输出语句D) 注释必须跟在一行语句的后面3.复合语句应用【 】括起来。A) 小括号 B) 方括号 C) 大括号 D) 尖括号4将二进制数101101101111转换成十六进制数是【 】。A) 5557 B) B6F C) 7555 D) F6B5.将十进制数0.625转换成二进制数是【 】。A) 0111 B) 0.101 C) 0.5 D) 0.A6.C语言

24、语句一行写不下时,可以【 】。A) 用逗号换行 B) 用分号换行 C) 用回车换行 D) 在任意一空格处换行7.C语言允许将一条语句写在两行上,下列语句不正确是【 】。A) int a, B) int a C) int D) int a,b b; ,b; a,b; ;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) sca

25、nf(%f%d,&a,&b);C) scanf(%d,%f,&a,&b);D) scanf(%6.2f%6.2f,&a,&b);10.以下程序的输出结果是【 】。main( ) int x=11,y=11;printf(%d%dn,x-,-y);A) 11,11 B) 10,10 C) 10,11 D) 11,1011将八进制数307转换成二进制数是【 】。A) 100110011 B) 11000111 C) 1100000111 D) 11100001112执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【 】。int x,y;scanf(%d%d,&x,&y);A) 空格 B) T

26、ab键 C) 回车 D) 逗号13.下面合法的语句是【 】。A) int a=8,b;b=+a+;printf(%d,%d,a,b+);B) int a;printf(%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.5D) a=25b=2.5

27、15.与数学公式ab xy不等价的语句是【 】。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】。3.下面程序的输出结果是【5】。int x=-32769;printf(%d,x);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,y);

28、参 考 答 案一、选择题(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 【2】 -2 【3】 scanf 【4】 printf 【5】 32767 【6】 6.000000 【7】 49第3章 习题(一) 加入时间:2006年3月10日10:23 来源: 计算机学院 【字体:大 中 小】【双击滚屏】 一、单项选择题1.下面不属于C语言的数据类型是【 】。A) 整型 B) 实型 C) 逻辑型 D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有

29、逻辑型变量。本题正确答案为C。2.C语言中,下列属于构造类型的是【 】。A) 整型 B) 实型 C) 指针类型 D) 结构体类型分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。本题正确答案为D。3.下列字符串不符合标识符规定的是【 】。A) SUM B) sum C) 3cd D) end分析:标识符规定只能由26个英文字母(大小写均可),数字09和下划线组成,且不能以数字开头,题中的3cd不符合规定。本题正确答案为C。4.下面能正确表示八进制数的是【 】。A) 0x16 B) 029 C) -114 D) 033分析:选项A)以0

30、x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。本题正确答案为D。5.下面四个选项中,均是合法实数的选项是【 】。 A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5 分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。选项A)中的2e-4.2,选项C)中的0.2e-.5,选项D)中的-e5均是不合法的。本题正确答案为B。6.C语言中,字符型数据在内存中存储形式是【 】。A) 原码 B) 反码 C) 补码 D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据

31、是以ASCII码形式存放的。本题正确答案为D。7.下列正确的字符型常量是【 】。A) a B) C) r D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,是转义字符。本题正确答案为B。8.若有说明语句char ch1=x41;则ch1【 】。A) 包含4个字符 B) 包含3个字符 C) 包含2个字符 D) 包含1个字符分析:x41中的41是十六进制数,即十进制的65,题中ch1存放的65是字母A的ASCII码。本题正确答案为D。9.下列程序段输出的字符串长度为【 】。printf(aaacccbddd);A) 11 B) 12

32、C) 13 D) 17分析:、b和为转义字符,程序输出结果为:aaaccddd。本题正确答案为A。10.下列运算符中,要求运算对象必须是整数的是【 】。A) / B) * C) % D) !分析:题目中/、*、!的运算对象既可以整数,也可以是实数,只有取余数运算符%要求运算对象必须是整数。本题正确答案为C。11.下面合法的赋值语句是【 】。A) x+y=2002; B) ch=green; C) x=(a+b)+; D) x=y=0316;分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“+”不能用于表达式,选项C)也是错的。本题正确答

33、案为D。12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为【 】。A) int 型 B) float型 C) double型 D) char型分析:不同类型数据混合运算的转换规律是:运算前float型数据会自动转换为double型,char型数据会自动转换为int型。运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。本题正确答案为C。13.执行以下程序段后的输出结果是【 】。int x=0xcde;printf(%4d,%4o,%4xn,x,x,x);A) 3294,6336,

34、cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde分析:0xcde是十六进制数,写成二进制数形式为:1100 1101 1110,按八进制送出时,是从右向左3位二进制数写成1位,按十六进制形式送出时,是从右向左4位二进制数写成1位。本题正确答案为A。14.下面的程序运行后输出为【 】。#include #include main( ) int a,b;float c;b=5;c=6;c=b+7;b=c+1;a=sqrt(double)b+c);printf(%d,%f,%d,a+6,c,b);A) 11.000000,12.0

35、00000,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的值为5。本题正确答案为D。15.执行以下程序后x的值为【 】。unsigned int x=65535;printf(%dn,x);A) 65535 B) 1 C) 有错误

36、 D) -1分析:题中将x定义成无符号整数,并且已初始化为:1111111111111111,若按%d格式输出,则最高位的1被当成了符号,1111111111111111成了负数的补码,输出结果为-1。本题正确答案为D。第3章 习题(二) 加入时间:2006年3月10日10:23 来源: 计算机学院 【字体:大 中 小】【双击滚屏】 二、填空题1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。char ch;scanf(%c,&ch);ch=(ch=A&ch=A&chb?a:cd?c:d分析:因题中ab的值为假,故求解表达式k=ab?a:cd?c:d相当于求k=ab?a:

37、(cd?c:d)。本题正确答案为 【5】 4。4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。分析:a+=a-=a*a的运算顺序是从右向左,相当于求a+=(a-=a*a),其中小括号内的运算得a=5-5*5即a=-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

38、,另外注意是舍弃小数部分,而不是四舍五入。本题正确答案为 【7】 4.900000 【8】 4。第4章 习题(一) 加入时间:2006年3月10日10:32 来源: 计算机学院 【字体:大 中 小】【双击滚屏】 一、单项选择题1.对if语句中表达式的类型,下面正确的描述是【 】。A) 必须是关系表达式B) 必须是关系表达式或逻辑表达式C) 必须是关系表达式或算术表达式D) 可以是任意表达式分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。本题正确答案为D。2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【 】。A) 缩排位置相同的ifB

39、) 其上最近的ifC) 下面最近的ifD) 同行上的if分析:多重if_else嵌套时,else总是与它上面最近的if配对。本题正确答案为B。3.以下错误的if语句是【 】。A) if(xy) z=x;B) if(x=y) z=0;C) if(x!=y) printf(%d,x) else printf(%d,y);D) if(xb) 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;是一个语句

40、书写在了两行,因ab为假,所此句不执行,又c=a与if语句无关,总要执行,故a,b值不变,c值为20。本题正确答案为A。7.对于条件表达式(k)?(i+):(i-)来说,其中的表达式k等价于【 】。A) k=0 B) k=1 C) k!=0 D) k!=1分析:因为条件表达式e1?e2:e3的含义是e1为真时,取表达式e2的值,否则取表达式e3的值,为真的意思就是不等于0。本题正确答案为C。8.执行下面的程序后,输出为【 】。main( ) int m=20;swith(m) case 19: m+=1;case 20: m+=1;case 21: m+=1;case 22: m+=1; printf(%dn,m);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1