'h'
unsigned int 66
float 55.78
long int 68 答 int 99 104 66 55 68 -1 char 'c' 'h' 'B'
'7' 'D'
unsigned int 99 104 66 55 68 65535
float 99.00 104.00 66.00 55.78 68.00 -1.00
long int 99 104 66 55 68 -1
4
★写出程序运行结果。
①void main() {int i,j; i=8,j=10;
printf(\}
②main()
{ int a=1,b=2,c=30;;
printf(\}
注意:a=b=c,a=b==c之间应为逗号,教材有误
答
运行结果: 9,11,9,10 运行结果: 30,1,0,0
③void main()
{int a=10,b=20,c=30,d; d=++a<=10||b-->=20||c++;
printf(\} 答
运行结果: 11,19
,30,1
5
★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。 ⑴a%=(b%=3)
⑵n++,a+=a-=a*=a
⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a
⑼a+b,18+(b=4)*3,(a/b,a%b)
⑽x+a%3*(int)(x+y)%2/4+sizeof(int) ⑾a
⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 6
下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?
①m=(a=4,4*5)与m=a=4,4*5 ②(float)(a/b)与(float)a/b ③(int)a+b与(int)(a+b) ④m%=2+a*3与m=m%2+a*3
⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b 答
①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;
②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。
③因为a、b均为整数,其前后两个表达式的计算结果是一致的。
④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。 ⑤前后表达式的计算结果应该是一致的:a=2, b=3, m=6 7
条件表达式x>0?x:-x的功能是什么? 答
如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。 8
用一个条件表达式描述从a、b、c中找出最大都赋给max. 答
max=a>(b>c?b:c)?a:(b>c?b:c); 9
★若x为int型变量,则执行以下语句后x的值为( )。 x=6;
x+=x-=x*x;
A. 36 B. -60 C. 60 D. -24 答 B. 10
★若有以下类型说明语句:

