当前位置:工具箱首页 - C语言题在线测试

如题目或答案有误,请通过BUG反馈告知我们修正,谢谢!

1、若有以下定义和语句:
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是

2,M

3,E

2,E

输出项与对应的格式控制不一致,输出结果不确定

2、若有以下定义和语句:
int w[2][3],(*pw)[3];pw=w;
则对w数组元素的非法引用是

*(w[0]+2)

*(pw+1)[2]

pw[0][0]

*(pw[1]+2)

3、执行下列语句后,a的值为:
int a;
#define M(x,y) (x*y)
a=M(1+2,3);

9

7

5

以上均不是

4、有以下程序段
int x=3
do
{ printf("%d",x-=2); }
while (!(--x));
其输出结果是

1

3 0

1 -2

死循环

5、以下程序的输入结果是
main( )
{  int i=010,j=10,k=x10;
  printf("%d,%d,%d ",i,j,k);
}

8,10,16

8,10,10

10,10,10

10,10,16

6、假设指针p已经指向某个整型变量x,则*p相当于:

&x

&p

x

*x

7、程序中定义以下宏 #define S(a,b) a*b
若定义 int area; 且令area=S(3+1,3+4),则变量area的值为:

10

12

21

28

8、设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a, * p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是

*((*prt+1)[2])

*(*(p+5))

(*prt+1)+2

*(*(a+1)+2)

9、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:

10<回车>22<回车>33<回车>

10.0,22.0,33.0<回车>

10.0<回车>22.0 33.0<回车>

10 22<回车>33<回车>

10、已知有共用体变量data1定义如下:
union data
{ int i;
char ch;
float f;
} data1;
则变量data1所占的内存存储空间可表示为:

sizeof(int)

sizeof(char)

sizeof(float)

sizeof(int)+sizeof(char)+sizeof(float)