struct st { int a; int b[2]; }a;
A.结构体变量a与结构体成员a同名,定义是非法的
B.程序只有在执行到该定义时才为结构体st分配存储单元 C.程序运行时为结构体变量a分配6个字节存储单元 D.不能将结构体类型说明与变量定义紧凑写在一起 19、设有如下定义:struct std { int a; float b; }data ,*p;
若有p=&data;则对data中的成员变量a的正确引用是__B__。 A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 20、以下程序的输出结果是_D___。 main( )
{ char x=040;
printf(“%d\\n”,x=x<<1); }
A.100 B.160 C.120 D.64
二、填空题(10个小题,每小题2分,共20分): 2、C语言中用__非零值__表示逻辑值“真”。
5、在二维数组初始化时,可以省略数组的_行下标___(行下标/列下标),系统会根据初值的个数,算出该下标的大小。
8、设有宏定义:#define MUL(z) (z)*(z),则执行以下语句后,输出结果为__12__。 printf(“%d\\n”,MUL(1+2)+3);
9、若有定义和语句:char str[ ]=“ABCD”,*p=str; printf(“%d\\n”,*(p+4)); 则输出结果是__0__。
10、能够实现局部翻转(0变1,1变0)的位运算是__异或__。 三、读下面程序,写出执行结果(4个小题,每小题5分,共20分):
1、若运行以下程序时,从第一列开始输入数据:2473
while((c=getchar( ))!=?\\n?) switch(c-?2?) { case 0:
case 1 :putchar(c+4);
case 2 :putchar(c+4);break; case 3 :putchar(c+3);
default:putchar(c+2);break; }
printf(“\\n”);
}
668977 107911 ?
#include “stdio.h” #include “string.h” main( )
{ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2,strcat(p1,p2)); printf(“%s\\n”,str); }
xyabcABC
四、编程题(2个小题,每小题10分,共20分):
1、编写程序,计算如下公式的值:t=1-1/(2*2)-1/(3*3)-…-1/(m*m)。 例如,若m=5,则应输出0.536389。 要求:利用scanf函数输入m的值。
利用子函数形式,m充当参数,不能只利用main函数形式实现。
2、编写程序,从输入的10个字符串中通过比较,找出最小和最大的字符串进行输出。 要求:利用二维字符数组。
利用gets函数进行输入,puts函数进行输出。 //以下程序的输出结果是5.500000 double f(int n)
{ int i; double s=1.0;
for(i=1;i<=n;i++) s+=1.0/i; return s; }
main( )
{ int i,m=3;float a=0.0; for(i=0;i //以下程序的输出结果是_7 8 9。 f(int a) { int b=0;static int c=3; b++; c++; return(a+b+c); } main( ) { int a=2,i; for(i=0;i<3;i++) printf(“%d\\n”,f(a)); } 12.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是__D___。 A. switch(a+b); { case 1 : y=a+b;break; case 3 : y=a-b;break; } B.switch(a*a+b*b) { case 3 ; case 1 : y=a+b;break; case 3 : y=a-b;break; C.switch a { case c1 : y=a-b;break; case c2 : y=a*b;break; default : x=a+b; } D.switch(a-b) { default : y=a*b;break; case 3 : case 4 : x=a+b;break; case 10 : case 11 : y=a+b;break; 13.在C语言中,以下所列的各函数首部正确的是__C___。 A.void play(var a : Integer,var b : Integer) B.void play(int a,b) C.void play(int a,int b) D.void play(a As Integer,b As Integer) 16.下列程序的运行结果是___C__。 main( ) { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) break; x++; } x++; } printf(“x=%d”,x); } A.x=4 B.x=8 C.x=6 D.x=12 20.下面程序的输出结果是__A___。 void fun(int *x,int *y) { printf(“%d %d”,*x,*y); *x=3; *y=4;} main( ) { int x=1,y=2; fun(&y,&x); printf(“%d %d”,x,y);} A.2 1 4 3 B.1 2 1 2 C.1 2 3 4 D.2 1 1 2 21.下面程序的输出结果是__D___。 #include “stdio.h” #include “string.h” main( ) { char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”; strcpy(str+2, strcat(p1, p2)); printf(“%s\\n”,str); } A.xyzabcABC B.zabcABC C.yzabcABC D.xyabcABC 22.以下程序的输出结果是__D___。 void prtv(int *x) { printf(“%d\\n”,++*x);} main( ) { int a=25; prtv(&a); } A.23 B.24 C.25 D.26 23.以下程序中的for循环执行的次数是___C__。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main( ) { int i; for(i=1;i<=NUM;i++); printf(“%d\\n”,i); } A.5 B.6 C.8 D.9 24.以下对二维数组a进行不正确初始化的是___D__。 A.int a[ ][3]={3,2,1,1,2,3}; B.int a[ ][3]={{3,2,1},{1,2,3}}; C.int a[2][3]={{3,2,1},{1,2,3}}; D.int a[ ][ ]={{3,2,1},{1,2,3}}; 25.若有定义和语句:char s[10]; s=“abcd”; printf(“%s\\n”,s); 则结果是__D___。 A.abcd B.a C.“abcd” D.编译不通过 //执行下列程序后,y的值是__B\\C___。 main( ) { int a[ ]={2,4,6,8,10},y=1,*p,x; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); } A.17 B.18 C.19 D.20 27.以下程序的输出结果是_A___。 main( ) { char s[ ]=“ABCD”,*p; for(p=s;p