c语言第二章习题及详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、第二章
1. 设整型变量a的值为2,下列表达式值为1的是_。(A)
A) a%3 B) a/3 =。C) --a D) a++
2. 设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是_。(B)
A) a=5++ 操作数只能是变量B) a=b=c++ C) a=%2 D) b=a+1=2 左边只能是单个变量,即变量
1二变量2=。。。
3. 下列式中,最终运算结果的数据类型不是单精度的表达式是__。
(A)
A)(int)(3+3.0) B)1e-3 fen:n 必须为整数C) (float)(3)
D)(i nt)3.0+3.0
4. 字符串” ab\x41 \\34cd\102y ”的长度是_ A o \xhh 表示ASCII 码:例\x41,41 是16 进制的。字符串含有’\0 ' o' \102 '也表示ASCII码,但102是8进制的,长度为10,储存空间占11个字节。
A)10 B)12 C)14 D)18
5. 变量是在程序运行过程中可改变的它的三要素是类型、名称、数值
6. 以下选项中合法的常量是?D
7.以下选项中合法的赋值表达式是?C
A) 'In ter net ' B)E_3 变量C)02x D)0xfeL
A) d=8+a+f=d+6 同2D B)d=(a+8)+ + 同2A
C) d=(8+e,e+ +,d+9) D)d=7+e+ + =d+7
8. mai n()
{int x=5,y=3;
float f;
f=x/y;表示为整形
printf( “f=%f\n ” ,f);
}
则程序的输出结果是?f=1.000000
9. 设整型变量x,y,z均为2,表达式(x++)+(y++)+(z++)的值是_A先使用值再加加。
A) 6 B) 7 C) 8 D) 9
10. 设 int a=3,b=5;float x=7.5,y=3.5; (float)a+b/2+(int)x%(int)y; 的值是 6.0
__。
* 11.执行语句: int a; a= ‘1'+1.5; 后,正确的叙述是
A)a 的值是字符‘ 3' B)a 的值是浮点型
C) 不允许字符型和浮点型相加
D) a 的值是字符’1'的ASCII 码值加上1
12. 设 int 类型的数据长度为 2 个字节,则 unsigned int 的
取值范围是 _B_。
A)均为2个字节TC 与 VC 不一样 B)0~65535
C)-32768~32767 D)-256 至 255
13. 执行下列语句后,运行结果为 C__。 先 i++ 再 i++ 最后 + main()
{ int i=3,j;
j=++i+i++;
printf( “ %d\n ”,j);
则表达式
D_。 类型数据
A) 6 B) 7 C) 8 D) 9
14. 执行下列语句后,运行结果为
6;y=1;z=6.000000
mai n()
{
int x=4,y;
float k=4,z;
clrscr();
prin tf("%d\n",--x*--x*--x);
x=4;
y=--x*--x*--x;
prin tf("y=%d\n",y);
z=--k*--k*--k;
prin tf("z=%f\n",z);}
x为浮点型:从左向右计算。--i优先于* x为整型:在输出函数中,从左printf("x=%d\n",x);
向右计算;在输出函数外,先连续减, 然后乘积。
15. 若a 为int 类型,且其值为5,则执行表达式a+=a-=a*a 后,a 的值为_C_。自右至左a=a-a A2=-20 a=a+a=-40
A) -5 B) -40 C) -15 D) 不确定
16. 如果x,y,i 和j 都是int 型变量,则表达式x=(i=1,j=6,y=8) 的值为_8_。
17、main() 不懂看课件
{int x=0,z,y=z=-1; i-- 优先于-
x=x---z-y;
printf("x=%d\n",x);
} 输出结果是:1
main()
{int x=0,z,y=z=-1;
x=--x-z-y;
} 输出结果是:1
main()
{int x=0,z,y=z=-1;
x=-y-z+--x;
printf("x=%d\n",x);
} 输出结果是:1
main()
{int x=0,z,y=z=-1;
x+=--x-z-y; 自右向左printf("x=%d\n",x);
} 输出结果是:0
main()
*{int x=0,z,y=z=-1;
x+=z---y; 自右向左
printf("x=%d\n",x);
} 输出结果是:x=0 x=0+(-1--1 main())=0
printf("x=%d\n",x);
{int x=0,z,y=z=-1; /* x*=-y-z---x; */ x=-y-z---x; /* x+=-y-z---x; */
printf("x=%d\n",x);
} 输出结果是:x=2
18.
main
{ int x=3,y=0;
y=++x*--x;/*x=++x*x--;*/ 自右向左即:--x=2 ++x=3 y=3*3=9 printf( “ y=%d,x=%d\n” ,y,x);
} 输出结果是:y=9 x=3
19.若a=3,b=3,c=5; 则
⑴ c+b++*a*++b 的值是53
⑵a++ *a + b + c*a* ++b 的值是73自右至左
⑶ a*a++ +b* ++a 的值是28
的输出结果是 4 3
⑷printf( “ %d,%d\r f ,a,a++)