C语言试题六套

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代表Enter),写出程序的执行结果。 #include “stdio.h” main( ) { char c;

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

联系客服:779662525#qq.com(#替换为@)