admin 管理员组文章数量: 887021
2023年12月16日发(作者:nutzb)
C语言 第3章
【例3.2】下列选项中,哪一个是C语言中合法的常量 。
(A)1.52e (B)1/4 (C)’X’ (D)”x”’y’
解答:实数的指数形式中,e后面必须有一个整数;1/4是表达式,不是常量;单弓号括起来的一个字符为字符常量,而字符串常量是用双引号括起来的字符序列。因此,本题正确答案为(C)。
【例3.3】下列形式的常数中,C程序不允许出现的是 。
(A).45 (B)±123 (C)25.6e-2 (D)4e3
解答:C程序允许出现的常数为有一确定值的整数、实数(可用小数形式或指数形式)等。±123不允许出现。因此,本题正确答案为(B)。
【例3.4】下列各组字符序列中,可用作C语言程序标识符的一组字符序列是 。
(A)S.b,sum,average,_above (B)class,day,lotusj,2day
(D)D56,r_l_2,name,_st_1 (C)#md,&12x,month,student_nl
解答:C语言规定标识符只能由字母、数字和下划线3种字符组成,而且第一个字符必须是字母或下划线。因此,本题正确答案为(D)。
【例3-5】下列变量说明中,正确的是 。
(A)char:abc; (B)char a;b;c;
(C)im x;z; (D)int x,z;
解答:同时说明多个变量为同一类型时,变量之间应用逗号分隔,以分号结束。因此,本题正确答案为(D)。
【例3—6】下列字符序列中,不可用作C语言标识符的是 。
(A)b70 (B)no.1 (C)_symbol (D)a_1
解答:C语言中,除字母、数字和下划线外,其他字符不得用于标识符。因此,本题正确答案为(B)。
【例3.7】下列数据中,为字符串常量的是 。
(A) ’A’ (B)”house” (C)Howdoyoudo. (D) ’Sabc’
解答:字符串常量是用一对双引号括起来的字符序列。因此,本题正确答案为(B)。
【例3—8】下列字符序列中,不合法的用户标识符为 。
(A)name (B)_old (C)char (D)turbo_c
解答:在C语言中,规定标识符只能由字母、数字和下划线3种字符组成,而且第一个字符必须是字母或下划线。char是C语言关键字,不能用作用户标识符。因此,本题正确答案为(C)。
【例3-9】执行以下语句的结果为 。
Y=10;x=y++;
(A)x=10,y=10 (B)x=11,y=11
(C)x=10,y=11 (D)x=11,y=10
解答:执行语句x=y++,先将Y的值10赋给X,然后y自增。因此,本题正确答案为(C)。
【例3—10】先用下列语句定义字符型变量:char c;然后要将字符a赋给变量c,则下列语句中正确的是 。
(A)c=’a’; (B)c=”a” (C)c=”97” (D)c=’97’
解答:c被定义为字符型变量,则不能将一个字符串赋给变量c,因而选项(B)、(C)不正确。要将字符a赋给c,可以将字符„a直接赋给c,即选项(A)。也可以将字符„a对应的ASCII码97赋给c,此时97为整型,不能用引号括起。因此,本题正确答案为(A)。
【例3—11】执行下列语句的结果为 。
i=3:
printf(”%d,”,++i);
printf(”%d”,i++);
(A)3,3 (B)3,4 (C)4,4 (D)4,5
解答:++i是在使用i之前,先使i的值加1,i++是在使用i之后,使i的值加1。当执行语句i=3后,在执行语句printf(”%d,”,++i)时以及之后,i的值均为4,接着执行printf(”%d’’,i++)语句,i的值仍然为4。因此,本题正确答案为(C)。
【例3—121已知x=3,y=2,则表达式x*=y+8的值为 。
(A)2 (B) 3 (C)10 (D)30
解答:表达式x*=y+8等同于x=x*(y十8),所以其值为3*(8+2)=30。
因此,本题正确答案为(D)。
【例3-13】设x=2.5,y=4.7,a=7,算术表达式x+a%3*(int)(x+y)%2/4的值为 。
(A)2.5 (B)7 (C)4.7 (D)2.75
解答:取模运算只能在整型数据之间进行,a为整型变量。因为%、*、/这3个运算符的优先级别相同,而类型转换符优先于*、/运算符,a的值为7,7%3=1,又因为(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表达式x+a%3*(int)(x+y)%2/4=x+0=2.5。因此,本题正确答案为(A)。
【例3.14】设a=12,a定义为整型变量,表达式a+=a-=a*=a的值为 。(A)12 (B) 144 (C)0 (D)132
解答:表达式a+=a-=a*=a的运算方向是自右向左,按优先级先计算a*a,a值为a*a=144,再计算a一=a。a值为a—a=0,再计算a+=a。故表达式和a的值都为a+a=O。因此,本题正确答案为(C)。
【例3—15】执行x=5>1+2&&2||2*4<4-!0后,X的值为 。
(A)-1 (B)0 (C)1 (D)5
解答:几种运算中,逻辑非!的优先级别最高,其次为算术运算符,再次为关系运算符,关系运算符后为逻辑与&&和逻辑或||,最后为赋值运算符。根据优先级的高低可知,上述表达式相当于表达式x=((5>(1十2))&&2||((2木4)<(4一(!O)))),即x=((5>3)&&2||(8<3),x=(1&&2||0),因此x=l。因此,本题正确答案为(C)。
【例3—16】已知year为整型变量,不能使表达式(year%4==0&&year%100!=0)||year%400==0的值为“真”的数据是 。
(A)1990 (B)1992 (C)1996 (D)2000
解答:表达式为“真”时有两种情况:第一,year能被4整除,但不能被100整除;第二,year能被400整除。故在所给选项中不符合上述两种情况的只有(A)。因此,本题正确答案为(A)。
【例3—171下列表达式中,属于算术表达式的是 ,属于关系表达式的是 ,属于逻辑表达式的是 ,属于赋值表达式的是 。
(A)x>=60==l (B)x+60*(x>60)
(D)x=(x>=60) (C)x>=60&&x<70J||x==50
解答:用算术运算符将两个表达式(可以为数据或关系表达式、逻辑表达式等)连接起来的式子称为算术表达式;用关系运算符将两个表达式(可以为算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子称为关系表达式;用逻辑运算符将关系表达式或逻辑量连接起来的式子称为逻辑表达式;用赋值符号“=”将一个变量和一个常量或表达式连接起来的式子称为赋值表达式。因此,本题正确答案依次分别为(B)、(A)、(C)、(D)。
【例3-18】设a=2,b=3,c=4,则表达式((a+b)>c)&&(b==c)&&a||b+c&&b+c的值为
(A)5 (B)8 (C)0 (D)1
解答:根据逻辑运算符、算术运算符的优先关系,上面的表达式实际上等价于((a+b)>c)&&(b==c)&&a||(b+c)&&(b+c)=1&&0&&2||7&&7=0||1=1因此,本题正确答案为(D)。
【例3—19】用下列语句定义a,b,c,然后执行b=a,c=’b’+b,则b,c的值是 。
Long a=0xffffff;
int b;char c;
(A)0xfffff和0x61
(C)-1和97
(B)-1和98
(D)指向同一地址
解答:由于a为长整型,b为整型,而在微机中前者为32位,后者为16位,所以在将a的值赋给变量b时,系统会自动截断高16位,截断后值为-1,b的值为一1,而字符’b’的ASCII码为98。因此,c的ASCII码值为97。因此,本题正确答案为(C)。
【例3-20】经过以下语句定义后,表达式z+=x>y?++x:++y的值是 。
Int x=l,y=2,z=3;
(A)2 (B)3 (C)6 (D)5
解答:表达式z+=x>y?++x:++y在z+=x>y时等价于z=z+(x>y?++x:++y)=3+3=6。因为x
填空题
1.C语言以函数为程序的基本单位,便于实现程序的模块化。
解答:C程序是由函数构成的,一个C源程序至少包含一个函数(main函数)。函数是C程序的基本单位。C语言的这种特点使c程序容易实现模块化。因此,本题正确答案为“函数”。
2.C程序的执行总是从main函数开始。
解答:一个C程序总是从main函数开始执行,而不论main函数处在程序中的位置如何。因此,本题正确答案为“main函数”。
3.字符常量和字符串常量不一样,它是用单引号括起来的。
解答:字符常量是一个字符,用单引号括起来。字符串常量由若干个字符组合而成,用一对双引号括起来。因此,本题正确答案为“单引号”或“撇号”。
4.字符串常量存储时,自动在字符后加一个字符结束符号’\0’。
解答:字符常量是单个字符,存储时不需加结束符号。字符串存储时才自动在字符串的最后加一个结束符号’\0’。因此,本题正确答案为”’0’”。
5.C语言中要求对变量作强制定义的主要理由是确定类型和分配空间。
解答:变量被强制定义后,指定为一确定类型,在编译时能为其分配相应的存储单元。如果指定变量a为int型,则IBM-PC机为a分配两个字节的内存单元。因此,本题正确答案为“确定类型和分配空间”。
6.已知x为float型,执行语句(int)x后,x为float型。
解答:语句(int)x是将x的值强制转换成int型。在进行强制类型转换时,得到一个所需类型的中间变量,原来变量的类型不发生变化。x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于X的整数部分,而X的类型不变。因此,本题正确答案为“float”。
7.已知i=3,执行语句k=(++i)+(++i)+(++i)后,k的值为18。
解答:++i的自增是在整个表达式求解一开始时最先进行的,即对表达式扫描,先对i进行3次自加i,i得6,然后进行k=6+6+6的运算,故得18,而非15。因此,本题正确答案为“18”。
8.以下程序输出的结果是 。
main()
{int n=3;
(n=6*4,n+6),n*2;
printf(”n=%d\n”,n);
}
解答:程序中关键语句为以下的逗号表达式:(n=6*4,n+6),n*2;逗号运算符是所有运算符中级别最低的。在该逗号表达式中,首先求解第一个表达式,然后求第二个表达式n*2的值,整个表达式的值为第二个表达式的值。但在整个程序中,只有在该逗号表达式的第一个表达式中才对变量n进行了赋值,值为4*6=24。因此,本题正确答案为“24”。
9.表达式x1=(b=4)+(c=6)的值为 。
解答:因为赋值运算的优先级别低于“+”运算符,所以该表达式的值为4+6=10。因此,本题正确答案为“10”。
10.以下表达式的值为 。
(xl=3*5,xl+4),xl+5
解答:该表达式是一个逗号表达式,先使xl的值等于15,再进行x1*4(但x1的值未变),之后进行xl+5得20,即整个表达式的值为20。因此,本题正确答案为“20”。
11.已知a=3,b=2,c=l,则表达式(a>b)==c的值为 。
解答:关系表达式的值是一个逻辑值,即“真”或“假”,分别用1和0表示。由于a>b为真,其值为1,等于C的值,所以得到逻辑值为“真”,即为1。因此,本题正确答案为“1”。
12.表达式3==4>2!=5<2的值为 。
解答:因关系表达式中的==和!=的优先级别低于>、>=、<=、<,故上面的表达式相当于3==(4>2)!=(5<2),得到逻辑值“假”,即为0。因此本题正确答案为“0”。
13.执行以下语句后的输出结果是 。
Int x=3,y=0;
Pfintf(“%d,%d”,-l>x>-10&&l 解答:执行语句x=3,y=0后,在表达式-1>X>-10&&l 14.表达式’c’&&’d’||!(3+4)的值为 。 解答:逻辑运算符两侧的运算对象不但可以是0或1,0或非0整数,也可以是任何类型的数据。例如可以是字符型数据或指针型数据等。系统最终以0和非0来判断它们是属于“真” 或“假”。由于,C,和,d,的ASCII码值都不为0,故按“真”处理。尽管后面的!(3+4)的值为0,但::符号前为真,所以整个表达式的结果为真,即为1。因此,本题正确答案为“1”。 15.执行下面语句后,表达式++x>b?x:b一>++x?++b:X的值为 。int x=5,b=5; 解答:条件运算符的结合方向为“自右而左”,条件运算符的优先级别仅高于赋值运算符,比关系运算符和算术运算符都低。条件表达式的执行顺序为:先求解第一个表达式,若为非0,再求解第二个表达式,该表达式的值就作为整个表达式的值;若第一个表达式的值为0,则求解第三个表达式,该表达式的值就作为整个表达式的值。从以上分析可知,表达式先求解b一>++x?++b:x,使得该表达式的值为6,然后运算++x>b?x:6,整个表达式的值为6。因此,本题正确答案为“6”。 【交通】 从上海市区出发,换到1号线至锦江乐园站下,出了地铁口走两三分钟就到了一个汽车站,乘坐“枫梅线”(票价11元,可以用交通卡买票,参加公交换乘的优惠),大概40-50分钟就到枫泾古镇入口啦。 【门票】 其实光游玩枫泾古镇是不用门票的,但是如果你想看看里面小的景点,是需要买票的。 我在某网站事先预定了套票29元/人,原价是80元。哈,网站预订省钱啊,然后直接去枫泾游客服务中心付钱拿票。 套票包括的景点:金圃宅第、丁蹄作坊、朱学范故居、程十发祖居、东区火政会、中国农民画村(悲催啊,这个重要的景点居然错过了,这个要乘“枫泾一路”去)、人民公社旧址、吕吉人画馆、三百园、施王庙、丁聪漫画陈列馆。 想仔细地游玩古镇的话,建议买套票。
版权声明:本文标题:C语言 第3章 习题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702699255h427281.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论