一、单选题(共60小题,每题1分,共60分)
1. 执行下列程序中的输出语句后,x的值是______
main()
{int x ;
printf(“%d/n”,(x=5*6,x*2,x+20));}
A)30 B)60 C)50 D)80
2.下列程序的输出结果是_______
main()
{int x=1,y=0,z;
z=(x<=0)&&(y- ->=0);
printf(“%d %d% d%/n”,z,x,y) ;}
A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -1
3.在C语言中,下列选项属于合法的长整型常数的是_______
A)0L B)1234567 C)0.0234567 D)3.14159e3
4.下列选项中属于不正确的赋值语句的是_____
A)t++; B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b,c=1;
5.若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________
A) scanf(“%d %d”,&a,&b);
x=getchar();y=getchar();
B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);
C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
6.下列转义字符不正确的是_______
A)’//’ B)’/’ C)’/053’ D)’/0’
7.下列选项可作为C语言赋值语句的是_______
A)x=3,y=5 B)a=b=6 C)i- -; D)y=int(x);
8.当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______
A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b;
9.有以下程序:
main()
{ unsigned int a ;
int b=-1;
a=b;
printf(“%u”,a);}
该程序运行后的输出结果是_______
A)-1 B)65535 C)32767 D)-32768
10.若x、b、m、n均为int型变量,执行下面语句后b的值为_______
m=20;n=6;
x=(- -m= =n++)?- -m:++n;
b=m++;
A)11 B)6 C)19 D)18
11.有以下程序:
main()
{ int a=111,b=222;
printf(“%d/n”,a,b);
}
该程序运行后的输出结果是_______
A)错误信息 B)111 C)222 D)111,222
12.以下程序的输出结果是_______
main()
{ int a=2,c=5;
printf(“a=%%%d,b=%%%d/n”,a,c);}
A) a=%2,b=%5 B) a=2,b=5 C) a=%%%d,b=%%%d D) a=%%d,b=%%d
13.对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是_______
A)f=(f*100+0.5)/100.0 B)f=(f*100+0.5)/100
C)f=(int)(f*100+0.5)/100.0 D)f=(f/100+0.5)*100
14.设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=a>b)&&(n=c>d) 后m,n的值为______
A) 2,2 B) 2,0 C) 0,2 D) 0,0
15.语句printf(“%d/n”,strlen(“asd/n/x12/1//”));的输出结果是______
A) 9 B) 11 C) 7 D) 8
16.有以下程序:
main( )
{
int y=1234;
printf(“y=%6d”,y);
printf(“y=%+06d/n”,y);
}
该程序的运行结果是______
A) y= 1234y=001234 B) y= 1234y=+01234
C) y=1234y=+01234 D) y= 1234y=1234
17.语句:printf(“%d”, !9);的输出结果是______
A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
18.已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是______
if(x<y)z=x;x=y ;y=z;
A) x=4,y=5,z=6 B) x=4,y=6,z=6
C) x=4,y=5,z=5 D) x=5,y=6,z=4
19.下列选项中属于正确的switch语句的是______
A)switch(1.0) B)swicth(1)
{ case 1.0 :printf(“A/n”); { case 1 :printf(“A/n”);
case 2.0 :printf(“B/n”); } case 2 :printf(“B/n”);}
C)switch((int)(1.0+2.5)) D)switch(“a”);
{ case 1 :printf(“A/n”); { case “a” :printf(“A/n”);
case 1+2 :printf(“B/n”);} case “b” :printf(“B/n”);}
20.若k为int型变量,以下语句段执行后的输出结果是______
k=-3;
if(k<=0) printf(“####”)
else printf(“****”);
A) #### B) **** C) ####**** D) 有语法错误 ,不能执行
21.当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为_____
if(a>b)
if(c<d)x=1 ;
else
if(a<c)
if(b>d)x=2 ;
else x=3 ;
else x=4 ;
else x=5 ;
A)2 B)3 C)4 D)5
22.下列程序的运行结果是________
main()
{ int y=10;
do { y- - ;} while(- -y);
printf(“%d/n”,y- -);}
A)-1 B)1 C)8 D)0
23.下列程序的运行结果是________
# include <stdio.h>
main()
{
int i ;
for(i=1;i<=5;i++)
{ if(i %2)printf(“*”);
else continue ;
printf(“#”);
}
printf(“$/n”);
}
A)*#*#$ B)#*#*#*$ C)*#*#*#$ D)***#$
24.若x是int型变量,且有下面的程序片段:
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%d/n”),x);
该程序片段的输出结果是 _______。
A)**5##6 B)##5 C)##5**6##7 D)**5##6**7
**7 **6##7
25.有以下程序:
main()
{int a=1,b=0;
switch(a)
{ case 1:switch(b)
{ case 0:printf(“****”);break ;
case 1:printf(“####”);break ; }
case 2: printf(“$$$$”);break ; }
该程序的输出结果是________
A)**** B)****$$$$ C)****####$$$$ D) ####$$$$
26.下列程序段的输出结果是_______
int x=3;
do {printf(“%3d”,x-=2);}
while(!(--x));
A)1 B)3 0 C)1 -2 D)死循环
27.有以下程序,其中x、y为整型变量;
for(x=0,y=0;(x<=1)&&(y= 1);x++,y--);
printf(“x=%d,y=%d”,x,y);
该程序的输出结果是_____
A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
28.有以下程序段:
int n=0,p;
do { scanf(“%d”,&p);n++;} while(p!=12345&&n<3);
此处do-while循环的结束条件是_____
A)p的值不等于12345并且n的值大于3
B)p的值等于12345并且n的值大于等于3
C)p的值不等于12345或者n的值小于3
D)p的值等于12345或n的值大于等于3
29.在下述程序中,if (i>j) 语句共执行的次数是_____
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A)4 B)7 C)5 D)6
30.以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。
main()
{ int n,k;float score,ave;
ave=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score);
ave+=score/4 ;}
printf(“NO%d:%f/n”,n,ave);}
}
造成程序计算结果错误的语句行是_____
A)ave=0.0; B)for(n=1;n<=10;n++)
C)ave+=score/4 ; D)printf(“NO%d:%f/n”,n,ave);
31.若有以下定义:char s[10]={‘a’,’b’,’c’,’0’,’/0’,’2’,’/x32’,’/0’};执行语句printf(“%d”,strlen(s));的结果是_____
A)3 B)4 C)8 D)10
32.设有数组定义:char array[ ]=“abcdef”;则数组array所占的空间为_____
A)4个字节 B)5个字节 C)6个字节 D)7个字节
33.有以下程序:
main()
{ char str[ ][10]={“China”,“Beijing”},*p=str;
printf(“%s/n”,p+10);}
该程序运行后的输出结果是_____
A)China B)Beijing C)ng D)ing
34.阅读下面程序,该程序段的功能是_____
#include <stdio.h>
main()
{ int c[ ]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;}
c[j+1]=t;}
for(i=0;i<7;i++)printf(“%d ”,c[i] );
putchar(’/n’);
}
A)对数组元素的升序排列 B)对数组元素的降序排列
C)对数组元素的倒序排列 D)对数组元素的随机排列
35.下列程序的输出结果是_____
main()
{ int n[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n[i+1][j+1]+= n[i][j];
printf(“%d /n”,n[i][j]);
}
A)14 B)0 C)6 D)值不确定
36.下列函数调用语句中含有______个参数
func((f1,f2),(f2,f3,f4),f5)
A)3 B)4 C)5 D)6
37.下列程序的运行结果是_______
#include <string.h>
main()
{ char *p1,*p2,ch[20]=“ABCDEFabcdef”;
p1=“1234”;p2=“abcd”;
strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);
pintf(“%s/n”,ch);}
A)Abc4EFabcde B)Abc4EF C)AbcdEF D)Abc4
38.下列程序的运行结果是_______
# include <stdio.h>
int f(int a)
{ switch (a)
{ case 0:return 0;
case 1:case 2:return 1;
}
return(f(a-2)+f(a-3));
}
main()
{ int b;
b=f(10);
printf(“b=%d/n”,b);
}
A) 12 B)10 C)9 D)8
39.有以下程序:
fun(int n)
{ if(n= =1|| n= =2)return 2;
return s=n-fun(n-2);}
main()
{printf(“%d/n”,fun(7));}
该程序运行后的输出结果是_____
A) 1 B)2 C)3 D)4
40.下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:
void sort(int a[ ],int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10 },i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf(“%d,”,aa[i]);
printf(“/n”);
}
该程序运行后的输出结果是_____
A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3,
41.下列程序的运行结果是_____
main()
{ int a=3,y;
y=fn(a,a++);
printf(“%d”,y);}
int fn(x,c)
{ int b;
if(x<c)b=1;
else if(x= =c)b=0;
else b=-1 ;
return(b);
}
A)3 B)-1 C)1 D)0
42.下列程序的运行结果是_____
main()
{ char arr[2][4];
strcpy(arr,“you”);strcpy(arr[1],“me”);
printf(“%s/n” ,arr);}
A)you me B)you C)me D)arr
43.下列程序的输出结果是_____
int f()
{ static int i=0;
int s=1;
s+=i;i++;
return s;}
main()
{ int i , a=0;
for(i=0;i<5;i++)a+=f();
printf(“%d/n”,a);}
A)20 B)24 C)25 D)15
44.程序中对fun函数有如下说明:
void *fun();
此说明的含义是_____
A) fun函数无返回值
B) fun函数的返回值可以是任意的数据类型
C) fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
45.设有下列定义:static int x,*p=&x,*q;
scanf(“%d,%d”,p,q);
若输入3,4,则x的值为_____
A)3 B)4 C)0 D)无法确定
46.设有以下程序:
int fun(char *s)
{ int n=0;
while(*s){ n++;s++ ;}
return n ;}
main()
{char y[ ]=“this_is_an_example。”;
printf(“%d/n”,fun(&y[6]));
}
该程序的输出结果是_____
A)12 B)13 C)14 D)16
47.下列程序的功能是_____
int fun(char *a)
{ char *b=a;
while(*b)b++;
{return b-a ;}
}
A) 比较两个字符串的大小 B)字符串的复制
C) 计算字符串的长度 D) 字符串的连接
48.下列程序的输出结果是_______
main()
{
int k=3,m=5,n=7;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%d/n",n);
}
A)5 B)7 C)15 D)21
49.下列程序的执行结果是_______
main()
{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf(“%d”,*--p);}
A)非法 B)a[4]的地址 C)5 D)4
50.以下函数返回a所指的数组中最小值所在的下标值:
fun(int *a, int n)
{ int i , j=0 , p ;
p=j ;
for(i=j;i<n;i++)
if(a[i]<a[p]) _______ ;
return(p);}
在下划线处应填入_______
A)i=p B)a[p]=a[i] C)p=j D)p=i
51.下列程序的运行结果是_______
void fun(int *a,int *b)
{ int *k;
k=a;a=b;b=k;}
main()
{ int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d %d”,a,b);
}
A)6 3 B)3 6 C)编译出错 D)0 0
52.有如下程序:
#define f(x)x*x
main()
{ int i ;
i=f(4+4)/(2+2);
printf(“%d/n”,i);}
该程序执行后的输出结果是_______
A)28 B)21 C)16 D)4
53.下列程序的输出结果是_______
struct tt;
{ int n1;char n2;float n3;
union uu{int u1[2];char u2[2];}su;
};
main()
{printf(“%d/n”,sizeof(struct tt));}
A)11 B)12 C)7 D)9
54.下列程序的输出结果是_______
struct LH
{ int n;struct LH *m;}p[4];
main()
{ int i;
for(i=0;i<3;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%d/n”,(p[1].m)->n,p[3].m->n);
}
A)1,2 B)1,3 C)2,0 D)程序出错
55.下列程序的输出结果是_______
struct st
{ int x;int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf(“%d ”,++p->x);
printf(“%d ”,(++p)->x);
printf(“%d ”,++(*p->y));}
A)10 20 20 B)50 60 21 C)51 60 21 D)60 70 31
56.字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_______
#include <stdio.h>
main()
{ union
{ int i[4];
long k;
char c[6];
}a,*s=&a ;
s->i[0]=0x39;
s->i[1]=0x38;
printf(“%c/n”,s->c[0]);
}
A)5 B)3 C)6 D)9
57.下列程序的运行结果是_______
main()
{ unsigned c1=0xff,c2=0x00;
c1=c2|c1>>2;c2=c1^0236;
printf(“%x,%x/n”,c1,c2);
}
A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a1
58.若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的排列次序正确的是_______
A)sizeof,&= , <<, ^ B)sizeof,<<, ^,&=
C)^,<<,sizeof, &= D)<<,^,&=,sizeof
59.有以下程序:
#include <stdio.h>
void fun(char *fname,char *st)
{ FILE *myf;int i;
myf=fopen(fname,“w”);
for(i=0;i<strlen(st);i++)fputc(st[i],myf);
fclose(myf);
}
main()
{ fun(“test.t”,“new world”);fun(“test.t”,“hello,”);}
执行该程序后,文件test.t中的内容是_______
A)hello, B)new worldhello, C)new world D)hello,rld
60.有以下程序:
#include <stdio.h>
main()
{ FILE *fp;int i=20,j=30,k,n;
fp=fopen(“d1.dat”,“w”);
fprintf(fp,“%d/n”,i);fprintf(fp,“%d/n”,j);
fclose(fp);
fp=fopen(“d1.dat”,“r”);
fscanf(fp,“%d%d”,&k,&n);printf(“%d %d/n”,k,n);
fclose(fp);}
该程序运行后的输出结果是_______
A)20 30 B)20 50 C)30 50 D)30 20
二、多选题(共20小题,每题2分,共40分)
1.下列符号串中,不属于C语言合法标识符的有_____
A)_1_2_3 B)a-b-c C)int D)9cd
2.当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有_______假设k>0)
A)k%2 B)k%2= =1 C)(k%2)!=0 D)!k%2= =0
3.已有定义 int a=-2;和输出语句printf(“%8lx”,a);下列叙述不正确的有_______
A) 整型变量的输出形式只有%d一种
B) %x是格式符的一种,它可以适用于任何一种类型的数据
C) %x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字81规定了输出字段的宽度
4.下列选项中,没有构成死循环的程序段有_____
A)int i=100; B)for( ; ; )
while(1)
{ i=i%100+1;
if(i>=100)break;}
C)int k=0; D)int s=36;
do { ++k;} while(k>=0); while(s);--s;
5. t为int类型,进入下面的循环之前,t的值为0:
while(t=1)
{ ……….}
则下列叙述不正确的有________
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 D)循环有可能是个无限循环
6.下列判断正确的是_______
A) char *a=“china”;等价于 char *a;*a=“china”;
B) char str[6]={“china”};等价于char str[ ]= {“china”};
C) char *s=“china”;等价于char *s;s=“china”;
D)char c[4]=“abc”,d[4]=“abc”;等价于char c[4]=d[4]=“abc”;
7.若变量已正确定义,以下能正确计算1+2+3+4+5的程序段有_____
A)i=1;s=1; B)i=0;s=0;
do do
{ s=s+i;i++; { i++; s=s+i;
while(i<5); while(i<5);
C)i=1;s=0; D)i=0;s=0;
do do
{ s=s+i;i++; { s=s+i; i++;
while(i<6); while(i<=5);
8.下面程序把数组元素中的最小值放入a[0]中,则在if语句中条件表达式可以是______
main()
{ int a[10]={5,2,9,6,7,1,12,8,23,0},*p=a,i;
for(i=0;i<10;i++,p++)
if(______) *a=*p ;
printf(“%d”,*a);
}
A)p>a B)*p<a[0] C)*p<*a[0] D)*p<*a
9.设有如下定义:
char *s[2]={“abcd”,“ABCD”};
则下列说法正确的有_____
A) s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址
B) s是指针数组名,它含有两个元素分别指向字符型一维数组
C) s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素
D)s数组的两个元素中分别存放了字符’a’和’A’的地址
10.以下有关字符串赋值、赋初值的语句错误的有_______
A)char sz[2][40];sz[1]=“string1”;
B)char *sz[2];sz[1]=“string2”;
C)char sz[][40]=“string3”;
D)char *sz[ ]=“string4”;
11.若有以下说明:int a[5][9];则下列选项中对数组元素a[i][j]的引用错误的有_______0<=i<4,0<=j<9)
A)*(&a[0][0]+9*i+j) B)*(a+i)(j) C)*(*(a+i)+j) D)*(a[i]+j)
12. 若有定义:char *st=“how are you!”;下面程序段正确的有_____
A) char a[11],*p;strcpy(p=a+1,&st[4]);
B) char a[11];strcpy(++a,st);
C) char a[11];strcpy(a,st);
D)char a[ ],*p;strcpy(p=&a[1],st+2);
13.设有以下说明语句:
Struct stu
{ int a ;
float b ;
}stutype ;
则下列叙述正确的有_______
A) struct是结构体类型的关键字
B) struct stu是用户定义的结构体类型
C) stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
14.若已建立如图所示的单向链表:
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有_______
A)s->link=a->link->link ;a->link->link=s;
B)a=a->link ; a->link=s ;s->link=NULL;
C)s->link=NULL ;a=(*a).link ; (*a).link =s;
D)a=a->link ; s->link=a->link;a->link=s->link;
15.设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_______
A)for(i=0;i<6;i++)printf(“%2d”,*(p++));
B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C)for(i=0;i<6;i++)printf(“%2d”,*p++);
D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);
16.下列叙述正确的有_____
A) 函数可以嵌套定义,但不能嵌套调用
B) 函数可以嵌套调用,也可以嵌套定义
C) 函数不可以嵌套定义,但可以递归调用
D)函数可以嵌套调用,但不能嵌套定义
17.下列叙述不正确的有_____
A)全局变量可以为本文件中其他函数所调用,编译时分配在静态存储区
B)局部变量只在本函数范围内有效,形式参数属于局部变量
C)局部变量如没有被说明为静态的存储类别,则会被分配动态存储空间,存储在动态存储区中
D)局部静态变量在函数调用结束后依然存在,但其他函数不能引用它
18.若变量已正确定义,要求程序段完成求5!的计算,下列选项中不能完成此操作的程序段有____
A)for(i=1,p=1;i<=5;i++)p*=i;
B)for(i=1;i<=5;i++){p=1;p*=i;}
C)i=1;p=1;while(i<=5) p*=i;i++;
D)i=1;p=1;do { p*=i;i++;} while(i<=5);
19.若有以下说明,则对strcpy库函数的调用不正确的有_______
char *str1=“copy”,str2[10],*str3=“abcde”,*str4,*str5=“hijk”
A)strcpy(str2,str1); B)strcpy(str3,str1);
C)strcpy(str4,str1); D)strcpy(str5 ,str1);
20.下列选项中可以将变量n清零的表达式有_______
A)n=n&~n B)n=n&0 C)n=n^n D)n=n|n
C语言程序设计预赛题参考答案
一、单选题
01、A 02、C 03、A 04、D 05、C 06、B 07、C 08、C 09、B 10、C
11、B 12、A 13、C 14、C 15、C 16、B 17、A 18、C 19、C 20、D
21、D 22、D 23、C 24、A 25、B 26、C 27、A 28、D 29、D 30、A
31、B 32、D 33、B 34、B 35、C 36、A 37、D 38、C 39、C 40、C
41、B 42、B 43、D 44、C 45、A 46、B 47、C 48、C 49、C 50、D
51、B 52、B 53、A 54、C 55、C 56、D 57、D 58、B 59、A 60、A
二、多选题
01、BCD 02、ABC 03、ABC 04、AC 05、AC 06、BC 07、BCD 08、BD 09、ABD 10、ACD
11、B 12、A 13、ABD 14、ABC 15、ABC 16、CD 17、ABCD 18、BC 19、BC 20、ABC