printf(“%d”,*p); }
printf(“\\n”); }
A.23 B.26 C.33 D.36
15、执行下列程序后,y的值是____。 main( )
{ int a[ ]={2,4,6,8,10}; int 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 16、以下程序的输出结果是____。 void sub(float x,float *y,float *z) { *y=*y-1.0; *z=*z+x; } main( )
{ float a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pa); printf(“%f\\n”,a); }
A.9.000000 B.1.500000 C.8.000000 D.10.500000 17、下面程序的输出结果是____。 #include “stdio.h” main( )
{ static char b[ ]= “Goodbye”; char *chp=&b[7];
while(--chp>=&b[0]) putchar(*chp); putchar(‘\\n’); }
A.Goodbye B.gOODBYE C.无任何输出 D.eybdooG 18、若有如下说明,则____的叙述是正确的。 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的正确引用是____。 A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 20、以下程序的输出结果是____。 main( ) { char x=040;
printf(“%d\\n”,x=x<<1); }
A.100 B.160 C.120 D.64
二、填空题(10个小题,每小题2分,共20分):
1、若a是int型变量,则执行表达式 a=25/3%3 后,a的值为____。 2、C语言中用____表示逻辑值“真”。
3、用在循环结构中,可以结束本次循环的语句是____。
4、用数组名作为函数参数是地址传递方式。地址传递是____(单向/双向)传递。
5、在二维数组初始化时,可以省略数组的____(行下标/列下标),系统会根据初值的个数,算出该下标的大小。
6、若输入字符‘A’,在以下while语句执行后ch的值为____。 while(ch=getchar( )==‘A’); 7、所谓“指针”,就是____。
8、设有宏定义:#define MUL(z) (z)*(z),则执行以下语句后,输出结果为____。 printf(“%d\\n”,MUL(1+2)+3);
9、若有定义和语句:char str[ ]=“ABCD”,*p=str; printf(“%d\\n”,*(p+4)); 则输出结果是____。
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”);
}
2、main( )
{ int x=2,y=3,z=0; try(x,y,z);
printf(“(2)x=%d,y=%d,z=%d\\n”,x,y,z); }
try(int x,int y,int z) { z=x+y; x=x*x; y=y*y;
printf(“(1)x=%d,y=%d,z=%d\\n”,x,y,z); }
3、#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); }
4、#include “stdio.h” #define NUM 8
void invert(int *a,int n); main( )
{ int a[NUM]={10,20,30,40,50,60,70,80},i; invert(a,NUM); for(i=0;i void invert(int *a,int n) { int i,j,t; i=0;j=n-1; while(i { t=a[i];a[i]=a[j];a[j]=t; i++;j--; } } 四、编程题(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函数进行输出。 第四套试题答案 一、选择题(20个小题,每小题2分,共40分): 1、D 2、D 3、B 4、C 5、C 6、A 7、D 8、D 9、B 10、A 11、C 12、D 13、D 14、A 15、C 16、B 17、D 18、C 19、B 20、D 二、填空题(10个小题,每小题2分,共20分): 1、2 2、非零值 3、continue 4、双向 5、行下标 6、1 7、地址 8、12 9、0 10、^(异或) 三、读下面程序,写出执行结果(4个小题,每小题5分,共20分): 1、668977 2、(1)x=4,y=9,z=5 (2)x=2,y=3,z=0 3、xyabcABC 4、 80 70 60 50 40 30 20 10 四、编程题(2个小题,每小题10分,共20分): 1、main( ) { float fun(int m),t; int m; scanf(“%d”,&m); t=fun(m); printf(“t=%f\\n”,t); } float fun(int m) { float t=1,s; int i; for(i=2;i<=m;i++) { s=1.0/(i*i); t=t-s; } return t; } 2、#include “stdio.h” #include “string.h” main( ) { char str[10][20],s[20]; int i; for(i=0;i<10;i++) gets(str[i]); for(i=1;i<10;i++) if(strcmp(str[0],str[i])>0) { strcpy(s,str[0]); strcpy(str[0],str[i]); strcpy(str[i],s); }
相关推荐: