海的女儿小人鱼的结局:C语言问题

来源:百度文库 编辑:高考问答 时间:2024/05/05 08:02:36
1.printf("%d \n",12 &012);的输出结果是 答案是8
2.main( )
{ int k=17;
printf("%d,%o,%x \n",k,k,k);
}
A) 17,021,0x11 B) 17,17,17
B) 17,0x11,021 D) 17,21,11
答案D为什么A不行
3.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是
A) t[2][0] B) t[2][2] C) t[l][2] D) t[2][l]
int t[3][3], *pt([3], k;
for (k=0;k<3;k++) pt[k]=&t[k][0];
为什么是C
4. int d=1;
fun(int p)
{ static int d=5;
d+=p;
printf("%d ",d);
return(d);
}
main( )
{ int a=3; printf("%d \n",fun(a+fun(d))); }
A) 6 9 9 B) 6 6 9 C) 6 15 15 D) 6 6 15答案C
5.main( )
{ char *s="12134211"; int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{ switch(s[k])
{ case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
v[i]++;
}
for(k=0;k<4;k++) printf("%d ",v[k]);
A)4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8答案B
能都给点简单说明马?

1
12: 1100
012: 1010 &
---------------
1000 即 8
2 输出时不显示表进制符
3
*(pt+1)第二行第一列地址(从0算起,0是第一行)
*(pt+1)+2第二行第三列元素地址
*(*(pt+1)+2)第二行第三列元素
即t[l][2]
4
第一次printf("%d ",d);fun(1)=6(其中d+=p;d=5,p=1==>d=6)
第二次printf("%d ",d);(其中d+=p;d=6,p=9==>d=15)
第三次fun(9)=15(其中d+=p;d=6,p=9==>d=15)
5
switch(s[k])
{ case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
缺少break;所以每次总要执行case '4':i=3;
这样循环8次v[3]++; 即v[3]=8
其它不变仍为0