y=y+(-8)=-8+(-8)=-16。
(7)若x和y都是double型变量,]ix的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为 【7】 。
答案:【7】8.000000
评析: fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。
(8)设有char a,b;,若要通过a&b运算屏蔽掉a中的其它位,只保留第2位和第8位(右起为第1位),则b的二进制是 【8】 。
答案:【8】10000010
评析:运算“&”的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二进制数10000010相与。
(9)下列程序执行后输出的结果是 【9】 。 f(int a)
{ static c=0;
C=a+C++:
return(C); }
main()
{ int a=2,i,k;
for(i=O;i<2;i++)
k=f(a++);
printf(”%d\n”,k); }
答案:【9】7
评析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。
(10)下面程序执行后输出的结果是 【10】 。
int m=13:
int fun(int x,int y)
{ int m=3;
return(x*y-m); } main()
{ int a=7,b=5;
printf(”%d\n”,fun(a,b)/m); }
答案:【10】2
评析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,ftm(a,b)/m中的m应取外部变量的值13,因此输出2。
(11)下列程序执行后输出的结果是 【11】 。 main()
{ nt arr[10],i,k=0;
for(I=0;i for(I=1;i<4;i++)k+=arr[i]+i; printf(”%d\n”,k); } 答案:【11】12 评析:本题的第一个fur循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个fur循环初始值为1,而循环条件为i<4,所以求的是art[1]到arr[3]及i的和,所以输出结果为12。 (12)下列程序执行后输出的结果是 【12】 。 struct s {int x,y;}data[2]={10,100,20,200}; main() { struct s*p=data; printf(”%d\\n”,++(p->x)); } 答案:【12】11 评析:程序中结构体数组data首地址(即&data[0])赋值给结构体指针变量p,++(p->x)表示先将p所指向的结构体变量的成员x值加1,然后将此x(即data[01.x]输出。 (13)下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个print语句的输出结果是 【13】 。 main() { int a [10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(”%X\n”,p); printf(”%x\n”,p+9); } 答案:【13】la6 评析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以16进制输出的。 (14)以下函数的功能是计算s=l+l/2!+l/3!+…+l/n!,请填空. double fun(int n) { double s=O.O,fac=1.O; int i,k=1; for(i=l;i<=n;i++) { 【14】 ; fat=fat/k; s=s+fac; } } 答案:【14】k=k*i 评析:本题中通过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每一项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。 (15)下面程序的运行结果是 【15】 。 main() { unsigned a=0112,x; x=a>>3: 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言笔试题带答案6.doc(7)在线全文阅读。
相关推荐: