一、单选题(共计60题)
(1)在下述程序中,if(i>j)语句共执行的次数是()。
main()
{inti=0,j=14,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A、6
B、9
C、7
D、12
(2)若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建
文件,则文件打开方式应是()。
A、"ab+"
B、"rb+"
C、"wb+"
D、"ab"
(3)下列程序的输出结果是()。
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{2,3,4},{5,6,7}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%dn",t);}
A、0
B、1
C、4
D、5
(4)对于浮点型变量f,能实现对f中的值在小数点后第四位进行四舍五入的表达式是()。
A、f=(f*1000+0.5)/1000.0
B、f=(f*1000+0.5)/1000
C、f=(int)(f*1000+0.5)/1000.0
D、f=(f/1000+0.5)*1000
(5)现已定义整型变量inti=1;执行循环语句“while(i++<5);”后,i的值为()。
A、1
B、5
C、6
D、以上三个答案均不正确
(6)下列程序的输出结果是()。
structLH
{intn;structLH*m;}p[4];
main()
{inti;
for(i=0;i<2;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%dn”,(p[1].m)->n,p[2].m->n);
}
A、0,1
B、0,2
C、0,0
D、程序出错
(7)下列程序的运行结果是()。
#include"stdio.h"
intf(inta)
{switch(a)
{ca0:return0;
ca1:ca2:return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(9);
printf(“%dn”,b);
}
A、10
B、7
C、8
D、9
(8)以下程序的输出结果是()。
intf(intb[],intm,intn)
{inti,s=1;
for(i=m;i
{b[i]=b[i-1]+b[i+1];
s+=b[i];}
returns;}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,5);
printf("%dn",x);}
A、23
B、26
C、42
D、35
(9)以下程序运行后,输出结果是()。
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
A、123456780
B、123456780
C、12345678
D、147
(10)桌上有白球和黑球共5个,a、b、c、d、e分别表示这5个球的颜色,取值为0、1分
别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是()。
A、!a&&(b+c+d+e)==2
B、a&&(b+c+d+e)>2
C、a&&(b+c+d+e)<=2
D、!a&&(b+c+d+e)==3
(11)下列程序的输出结果是()。
#include"stdio.h"
intf(intn)
{staticintk,s;
n--;
for(k=n;k>0;k--)
s+=k;
returns;
}
voidmain()
{intk;
k=f(2);
printf("(%d,%d)",k,f(k));
}
A、(3,3)
B、(1,1)
C、(3,6)
D、(6,12)
(12)若有定义:inta,b;charx,y;并有以下输入数据:1213AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是()。
A、scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B、scanf(“%d%d%c%c”,&a,&b,&x,&y);
C、scanf(“%d%d%c%c”,&a,&b,&x,&x,&y,&y);
D、scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
(13)以下对结构体成员的运算结果是()。
#include
main(){
structst
{intx;
inty;
}cnum[2]={1,3,2,7};
printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x);
}
A、0
B、1
C、3
D、6
(14)函数f定义如下,执行语句“m=f(5);”后,m的值应为()。
intf(intk)
{if(k==0||k==1)return1;
elreturnf(k-1)+f(k-2);
}
A、3
B、8
C、5
D、13
(15)若有以下定义:chars[10]={’a’,’b’,’c’,’0’,’2’,’x32’,’0’,’123’};
执行语句printf(“%d”,strlen(s));的结果是()。
A、3
B、6
C、8
D、9
(16)若i为整型变量,则以下循环执行的次数是()。
for(i=0;i<=5;i++)
printf("%d",i++);
A、5次
B、2次
C、3次
D、6次
(17)执行以下程序段后的输出结果是()。
intx=3;
intm,n;
n=(++x)+(++x);
m=(x--)+(x--);
printf("%d%dn",m,n);
A、106
B、99
C、1010
D、108
(18)设有定义:inta[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为()。
A、2
B、3
C、4
D、以上都不对
(19)以下关于循环的程序的输出结果是()。
#include"stdio.h"
voidmain()
{
intk=4,n=0;
for(;n
{
n++;
if(n%3!=0)continue;
k--;
}
printf("%d%d",k,n);
}
A、11
B、22
C、33
D、44
(20)下列关于字符串操作的输出结果是()。
#include"stdio.h"
#include"string.h"
voidmain()
{
charp1[20]="abcd",p2[20]="ABCD";
charstr[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%sn",str);
}
A、xyabcAB
B、abcABz
C、Ababcz
D、xycdBCD
(21)下列选项中属于正确的switch语句的是()。
A、swicth(’a’)
{ca‘a’:printf(“An”);
ca‘b’:printf(“Bn”);}
B、switch(1.0)
{ca1.0:printf(“An”);
ca2.0:printf(“Bn”);}
C、switch((int)(x+2.5))
{ca1:printf(“An”);
ca1+2:printf(“Bn”);}
D、switch(“a”);
{ca“a”:printf(“An”);
ca“b”:printf(“Bn”);}
(22)以下程序的运行结果为()。
#include"stdio.h"
voidmain(){
inty=2,a=1;
while(y--!=-1){
do{
a*=y;a++;
}while(y--);}
printf("%d,%dn",a,y);}
A、1,-2
B、2,1
C、1,0
D、2,-1
(23)C语言的输入与输出操作是由()完成的。
A、输入语句
B、输出语句
C、输入与输出函数
D、输入与输出语句
(24)若有以下程序段
……
inta[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;}
……
则该程序段的功能是()。
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
(25)执行下列程序中的输出语句后,x的值是()。
main()
{intx;
printf(“%dn”,(x=4*5,x*2,x+20));}
A、20
B、40
C、60
D、80
(26)下列程序段的输出结果是()。
intc[]={1,7,12};
int*k=c+1;
printf("%d",*k++);
A、2
B、7
C、8
D、12
(27)下列程序的运行结果是()。
main()
{inta=4,y;
y=fn(a,++a);
printf(“%d”,y);}
intfn(x,c)
{intb;
if(x
elif(x==c)b=0;
elb=-1;
return(b);
}
A、4
B、-1
C、1
D、0
(28)有如下程序:intx=-20;printf("%dn",~x);,其输出结果将是()。
A、19
B、20
C、21
D、-1
(29)对于类型相同的指针变量,不能进行的运算是()。
A、+
B、-
C、=
D、==
(30)已知:
unionu_type
{inti;
charch;
floata;
}temp;
现在windows环境下,执行"temp.i=266;printf("%d",)"的结果是()。
A、266
B、256
C、10
D、1
(31)以下程序的运行结果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q=NULL;
q=p+5;
printf("%d%dn",*p,*q);
}
A、运行后报错
B、611
C、612
D、55
(32)以下程序的输出结果是()。
main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elif(!b)
if(!c)d=15;
eld=25;
printf("d=%dn",d);
}
A、d=10
B、d=15
C、d=20
D、d=25
(33)下面四组字符串中,都可以用作C语言程序标识符的是()。
A、print
_maf
mx_2d
aMb6
B、Iam
scanf
mx_
MB
C、sign
3mf
a.f
A&B
D、if
ty_pe
x1
#5XY
(34)下列程序的输出结果是()。
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<6;i++)a+=f();
printf(“%dn”,a);}
A、21
B、24
C、25
D、15
(35)设有定义:#defineSTR"12345";,则以下叙述正确的是()。
A、宏名STR代替的是数值常量12345
B、宏定义以分号结束,编译时会产生错误信息
C、宏名STR代替的是字符串"12345"
D、宏名STR代替的是字符串常量"12345"
(36)以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为()。
#include"stdio.h"
#include"string.h"
func(charstr[])
{intnum=0;
while(*(str+num)!=’0’)num++;
return(num);
}
main()
{charstr[10],*p=str;
gets(p);printf("%dn",func(p));
}
A、8
B、7
C、6
D、5
(37)下列程序的输出结果是()。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa;
printf(“%d”,++(*p->y));
printf(“%d”,(++p)->x);
printf(“%d”,++p->x);}
A、202010
B、216050
C、116061
D、317060
(38)以下函数的功能是()。
char*fun(char*str1,char*str2)
{
while((*str1)&&(*str2++=*str1++));
returnstr2;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串str1复制到字符串str2中
D、将字符串str1接续到字符串str2中
(39)以下程序的输出结果是()。
#include
voidfunc(char**m)
{
++*m;
printf("%sn",*m);
}
voidmain()
{
staticchar*a[]={"first","cond","three"};
char**n;
n=a;
func(n);
}
A、first
B、irst
C、cond
D、其他
(40)以下语句的输出结果为()。
for(k=0;k<5;++k)
{if(k==3)continue;
printf("%d",k);
}
A、012
B、0124
C、01234
D、没有输出结果
(41)下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为
()。
#include"stdio.h"
main()
{inti,ch,n[10];
for(i=0;i<10;++i)n[i]=0;
while((ch=getchar())!=‘n’)
if(ch>=‘0’&&ch<=‘9’)
________;
for(i=0;i<10;++i)
printf("数字%d出现的次数是:%dn",i,n[i]);
}
A、n[ch-‘0’]++
B、n[ch]++
C、i++
D、n[i]++
(42)以下程序的输出结果是()。
#include"stdio.h"
int*fun()
{
inta[4],k;
for(k=0;k<4;k++)a[k]=k;
return(a);
}
voidmain()
{
int*p,j;
p=NULL;
p=fun();
for(j=0;j<4;j++){printf("%dn",*p);p++;}
}
A、0000
B、0123
C、1111
D、输出不确定值
(43)若有如下结构体定义,下列scanf用法不正确的是()。
structpupil
{
charname[20];
intage;
intx;
}pup[5],*p;
p=pup;
A、scanf("%s",pup[0].name);
B、scanf("%d",&pup[0].age);
C、scanf("%d",&(p->x));
D、scanf("%d",p->age);
(44)与y=(x>0?1:x<0?-1:0);的功能相同的if语句是()。
A、if(x>0)y=1;
elif(x<0)y=-1;
ely=0;
B、if(x)
if(x>0)y=1;
elif(x<0)y=-1;
C、y=-1
if(x)
if(x>0)y=1;
elif(x==0)y=0;
ely=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
ely=-1;
(45)下列描述中不正确的是()。
A、字符型数组中可能存放字符串
B、可以对字符型数组进行整体输入、输出
C、可以对整型数组进行整体输入、输出
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
(46)下面程序运行后,关于a、b、c的值应输出为()。
#include"stdio.h"
main()
{
inta=1,b=2,c=2,t;
while(a
printf("%d,%d,%d",a,b,c);
}
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
(47)在16位PC机环境下,下列程序的输出结果是()。
structtt
{intn1;charn2;floatn3;
unionuu{intu1[3];charu2[3];}su;
};
main()
{printf(“%dn”,sizeof(structtt));}
A、11
B、12
C、13
D、9
(48)若有如下程序:
voids(char*m,intn)
{
*m=*m+3;n=n+3;
printf("%c,%c,",*m,n);
}
voidmain()
{
charp=’b’,q=’B’;
s(&q,p);
printf("%c,%cn",p,q);
}
则程序运行后的输出结果是()。
A、E,e,b,E
B、e,E,b,F
C、E,e,e,E
D、e,E,b,E
(49)以下程序的输出结果是()。
#include
intmain()
{
charstr[100]="ABCDEFG",*p=str;
inti;
for(i=0;*p!=’0’;p++,i++);
printf("%dn",i);
return0;
}
A、7
B、8
C、99
D、100
(50)某C编译系统规定,int型数组占2个字节,则定义以下语句后,sizeof(aa)=()。
struct{longnum;
charname[20];
union{floatx;
shorty;
}xy;
}aa;
A、32B、26
C、30D、28
(51)语句:printf(“%d”,!0);的输出结果是()。
A、1
B、0
C、有语法错误,不能执行
D、!0
(52)函数f定义如下,执行语句“sum=f(4)+f(2);”后,sum的值应为()。
intf(intm)
{staticinti=0;ints=0;
for(;i<=m;i++)s+=i;returns;
}
A、13B、16
C、10D、8
(53)fwrite函数的一般调用格式是()。
A、fwrite(buffer,count,size,fp);
B、fwrite(fp,count,size,buffer);
C、fwrite(fp,size,count,buffer);
D、fwrite(buffer,size,count,fp);
(54)有以下程序段
main()
{inti=1,sum=0,n;
scanf("%d",&n);
do
{i+=2;
sum+=i;
}while(i!=n);
printf("%d",sum);
}
若使程序的输出值为15,则应该从键盘输入的n的值是()。
A、1B、3
C、5D、7
(55)下列选项可作为C语言赋值语句的是()。
A、a=1;b=2;
B、a=b=6
C、i--
D、y=int(x);
(56)已知有以下的说明,
inta[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a[3])]的值为()。
A、5B、0
C、4D、7
(57)已知enumname{zhao=1,qian,sun,li}man;执行下述程序段后的输出结果是()。
man=0;
switch(man)
{ca0:printf("Peoplen");break;
ca1:printf("Mann");break;
ca2:printf("Womann");break;
default:printf("Errorn");break;
}
A、PeopleB、Man
C、WomanD、Error
(58)以下能正确计算1×2×3×……×10的程序段是()。
A、do{i=1;s=1;
s=s*i;
i++;
}while(i<=10);
B、do{i=1;s=0;
s=s*i;
i++;
}while(i<=10);
C、i=1;s=1;
do{s=s*i;
i++;
}while(i<=10);
D、i=1;s=0;
do{s=s*i;
i++;
}while(i<=10);
(59)以下程序的运行结果是()。
voidmain()
{
inta=4;charch=’a’;
printf("%dn",(a&2)&&(ch>’A’));
}
A、0B、1
C、2D、3
(60)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,下列语句正确的是()。
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)malloc(2,sizeof(int));
二、
(1)以下叙述中正确的有()
A、在程序的一行上可以出现多个有效的预处理命令行
B、宏定义不是C语句,不必在行末加分号
C、宏替换不占用运行时间,只占用编译时间
D、在以下定义中CR是称为“宏名”的标识符
#defineCR045
(2)要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返
回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功
能的有()。
A、funa(int*a,intn,intx)
{
*a=x;
while(a[n]!=x)n--;
returnn;
}
B、funb(int*a,intn,intx)
{
intk;
for(k=1;k<=n;k++)
if(a[k]==x)returnk;
return0;
}
C、func(inta[],intn,intx)
{
int*k;
a[0]=x;k=a+n;
while(*k!=x)k--;
returnk-n;
}
D、fund(inta[],intn,intx)
{
intk=0;
do
{k++;
}while((k
if((k
elreturn0;
}
(3)下面说法正确的有()。
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数不可以返回一个共用体变量
(4)如有两个字符数组a、b,则以下输入语句正确的有()。
A、gets(a,b);
B、scanf("%s%s",a,b);
C、for(i=0;(a[i]=getchar())!=’n’;i++);
for(i=0;(b[i]=getchar())!=’n’;i++);
D、gets(a);gets(b);
(5)当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有()。(假设k>0)
A、k%2
B、k%2==0
C、(k%2)!=0
D、k%2==1
(6)设有以下语句
structst{
intn;
structst*next;
};
staticstructsta[3]={5,&a[1],6,&a[2],7,},*p=&a[0];
若要使printf("%dn",____)输出值为6,则下划线处表达式可以为()。
A、p->n++
B、++p->n
C、(++p)->n
D、p->next->n
(7)下列说法不正确的有()。
A、带参数的宏定义中的参数是没有类型的
B、宏展开将占用程序的运行时间
C、宏定义命令是C语言中的一种特殊语句
D、使用#include命令包含的头文件必须以".h"为后缀
(8)下列有关函数调用的说法正确的有()。
A、若用值传递方式,则形式参数不予分配内存
B、实际参数和形式参数不可以同名
C、主调函数和被调用函数可以不在同一个文件中
D、函数间传送数据可以使用外部全局变量
(9)若变量已正确定义,以下能正确计算1*2*3*4*5的程序段有()。
A、i=1;s=1;
do
{s=s*i;i++;}
while(i<5);
B、i=0;s=0;
do
{i++;s=s*i;}
while(i<5);
C、i=1;s=1;
do
{s=s*i;i++;}
while(i<6);
D、i=0;s=1;
do
{i++;s=s*i;}
while(i<5);
(10)设有定义语句:intx[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)++);
(11)整型变量x=1,y=3,经下列()计算后,x的值等于6。
A、x=(x=1+2,x*2)
B、x=y>2?6:5
C、x=9-(y--)-(y--)
D、x=y*4.8/2-1
(12)下列关于指针定义的描述正确的有()。
A、指针变量是一种变量,该变量是用来存放某个变量的地址值的
B、指针变量的类型与它所指向的变量类型一致
C、指针变量的命名规则与标识符相同
D、在定义指针时,”*”号表示指针变量的指向
(13)以下对结构体变量stu1中成员age的引用正确的有()。
structstudent
{intage;
intnum;
}stu1,*p;
p=&stu1;
A、
B、
C、p->age
D、(*p).age
(14)设有结构体类型:
typedefstructstr{
intno;
charname[20];
}STR;
另有变量定义:STRa[20],x;
如希望实现向与文件指针变量fp关联的文件输出一个结构信息,则以下语句正确的有()。
A、fwrite(a,sizeof(STR),1,fp);
B、fwrite(&a[2],sizeof(STR),1,fp);
C、fwrite(&x,sizeof(STR),1,fp);
D、fwrite(x,sizeof(STR),1,fp);
(15)t为int类型,进入下面循环之前,t的值为0:
for(;t=1;)
{……….}
则下列叙述不正确的有()。
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、循环有可能是个无限循环
(16)下列叙述不正确的有()。
A、函数可以嵌套定义,但不能嵌套调用
B、函数可以嵌套调用,也可以嵌套定义
C、函数不可以嵌套定义,但可以递归调用
D、函数可以嵌套调用,但不能嵌套定义
(17)关于数组与字符串,下列选项中属于不合法的定义有()。
A、chars="string";
B、inta[5]={0,1,2,3,4,5};
C、chars[5]="string";
D、chara[]={0,1,2,3,4,5};
(18)若有定义:char*str[]={"one","two","three"},**p=str;
则下列选项中可以表示出字符’t’的表达有()。
A、*str[2]
B、*str+2
C、*(p+1)
D、**++p
(19)若有以下调用语句,则正确的fun函数的首部包括()
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
A、voidfun(intm,intx[])
B、voidfun(ints,inth[41])
C、voidfun(intp,int*s)
D、voidfun(intn,inta)
(20)已知有定义:
struct{
intno;
charname[20];
}a,b,*c;
则以下语句合法的有()。
A、a=b;
B、a=&b;
C、c=&b;D、*c=b
试题答案
1C41A
2C42D
3C43D
4C44A
5C45D
6C46A
7B47C
8A48A
9C49A
10C50D
11B51A
12D52C
13D53D
14B54D
15B55A
16C56B
17C57A
18B58C
19C59A
20D60B
21C1BC
22A2ABD
23C3ABCD
24B4BCD
25A5ACD
26B6BCD
27D7BCD
28A8BCD
29A9CD
30C10ABC
31B11ABD
32C12ABCD
33A13ACD
34A14ABC
35C15AC
36D16AB
37C17ABC
38C18AD
39B19ABC
40B20CD
一、单项选择题【共60题,每小题1分,共60分。下列每题给出的多个选项中,
只有一项是最符合试题要求的。请选择相应的正确答案。】
1.语句printf(“%dn”,strlen(“xyztxab3”));的输出结果是()。
A)9
B)11
C)7
D)8
2.程序中对fun函数有如下说明:
int*fun();
下面说法正确的是()。
A)fun函数是整型函数
B)fun函数的返回值是整型数据
C)fun函数的返回值是指向整型数据的指针类型
D)指针fun指向一个函数,该函数返回整型数据
3.在下列语句选项中,只有一个在功能上与其他三个语句不等价(其中s1和s2表
示某个C语句),这个不等价的语句是()。
A)if(a)s1;els2;
B)if(!a)s2;els1;
C)if(a!=0)s1;els2;
D)if(a==0)s1;els2;
4.以下程序的运行结果是()。
voidfun(int*n)
{
staticintm=2;
*n*=m-1;m+=2;
}
voidmain()
{
staticintm=1;
inti;
for(i=1;i<4;i++)
fun(&m);
printf("%dn",m);
}
A)8
B)10
C)11
D)15
5.若有定义:constinti=10,j=20;int*constpi=(int*)&i;,则下列操作正确
的为()。
A)*pi=0;
B)pi=&j;
C)i=10;pi=&j;
D)j=*pi;
6.字符串"ax44nbcd102a"的长度是()。
A)12
B)17
C)9
D)11
7.以下程序的输出结果为()。
inta=2;
intf(int*a)
{
return(*a)++;
}
voidmain()
{
ints=0;
{inta=5;
s+=f(&a);
}
s+=f(&a);
printf("%d%dn",a,s);
}
A)27
B)210
C)37
D)311
8.在C语言中,函数的隐含存储类别是()。
A)auto
B)static
C)extern
D)无存储类别
9.以下关于枚举的程序,其运行结果是()。
#include"stdio.h"
main()
{
enumweekday
{sun,mon,tue=5,wed,thu,fri,sat}a,b,c,d;
a=sun;
b=mon;
c=tue;
d=wed;
printf("%d%d%d%dn",a,b,c,d);
}
A)0050
B)1254
C)0156
D)0153
10.以下程序关于sizeof()的运行结果是()。
voidmain()
{
chara[]="movie",b[10]="movie";
printf("%d%dn",sizeof(a),sizeof(b));
}
A)55
B)66
C)610
D)其他输出
11.若x是int型变量,且有下面的程序片段:
for(x=5;x<8;x++)
printf((x/2)?(“**%d”):(“##%d”),x);
该程序片段的输出结果是()。
A)**5**6**7
B)##5**6##7**8
C)**5##6**7
D)**5##6**7##8
12.以下是求两个正整数的最大公约数的函数fun(),下划线处应填入的正确语
句为()。
intfun(m,n)
intm,n;
{intr;
if(m
if(n==0)return(m);
do{r=m%n;
if(r!=0){m=n;n=r;}
}while(______);
return(n);
}
A)r!=0
B)r==0
C)n!=0
D)n==0
13.以下程序功能为输入1个正整数n,计算并输出s的前n项的和:
s=1/2-2/3+3/4-4/5+……(-1)n/(n+1),下划线处应填入的正确语句为()。
#include"stdio.h"
voidmain()
{intk,flag=1,n;
floats=0;
scanf("%d",&n);
for(k=1;k<=n;k++){
s=s+______;
flag=-flag;
}
printf("sum=%fn",s);
}
A)1.0*k/(k+1)*flag
B)flag*n/(n+1)
C)-k/(k+1)
D)1.0*k/(k+1)
14.在下列字符序列中,属于C语言合法标识符的是()。
A)P12.a
B)stud_100
C)$water.1
D)88sum
15.以下程序的输出结果是()。
main()
{inta=0,j;
for(j=0;j<4;j++)
{switch(j)
{ca0:
ca3:a+=2;
ca1:
ca2:a+=3;
default:a+=5;
}
}
printf("%dn",a);
}
A)20
B)13
C)10
D)36
16.有如下程序:
#definef(x)x*x
main()
{inti;
i=f(2+2)/(1+1);
printf(“%dn”,i);}
该程序执行后的输出结果是()。
A)21
B)7
C)8
D)4
17.有以下程序段:
inta=0,b;
do{scanf(“%d”,&a);b++;}while(a!=10||b<3);
此处do-while循环的结束条件是()。
A)a的值等于10并且b的值大于3
B)a的值等于10并且b的值大于等于3
C)a的值不等于10或者b的值小于3
D)a的值不等于10并且b的值大于等于3
18.若a是整型变量,表达式~(a^~a)等价于()。
A)~a
B)1
C)0
D)2
19.以下程序的输出结果是()。
main()
{intn;
(n=6*4,n+6),n*2;
printf("n=%dn",n);
}
A)30
B)24
C)60
D)48
20.以下程序运行后的输出结果是()。
#include
structNODE
{intnum;structNODE*next;};
main()
{
structNODE*p,*q,*r;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%dn",p->num+q->next->num);
}
A)10
B)20
C)30
D)40
21.有以下函数:char*fun(char*p){returnp;},该函数的返回值为()。
A)不确定值
B)参数p中存放的地址值
C)一个临时存储单元的地址值
D)形参p自身的地址值
22.当a=2,b=3,c=4,d=5时,执行下面一段程序后x的值为()。
if(a
if(c>d)x=1;
el
if(a>c)
if(b
elx=3;
elx=4;
elx=5;
A)2
B)3
C)4
D)5
23.设有程序段chark;while(k>0)k++;printf("%dn",k);则程序输出结果
为()。
A)-127
B)256
C)-128
D)128
24.以下程序输出的字符序列是()。
#include"stdio.h"
main(){
chara[]="language",*p;
p=a;
while(*p!=’u’){printf("%c",*p-’u’+’U’);p++;}
}
A)LANGUAGE
B)language
C)LANG
D)LANGuage
25.在下述程序中,if(i>j)语句共执行的次数是()。
main()
{inti=0,j=14,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A)6
B)9
C)7
D)12
26.以下选项中,能定义s为合法的结构体变量的是()。
A)typedefstructabc
{doublea;
charb[10];
}s;
B)structabc
{doublea;
charb[10];
}s;
C)structABC
{doublea;
charb[10];
}
ABCs;
D)typedefABC
{doublea;
charb[10];
}
ABCs;
27.以下程序的输出结果是()。
main()
{inta=1,b=0;
switch(a)
{ca1:switch(b)
{ca0:printf("**0**");break;
ca1:printf("**1**");break;
}
ca2:printf("**2**");break;
}
}
A)**0**
B)**0****2**
C)**0****1****2**
D)有语法错误
28.下列叙述不正确的是()。
A)用typedef可以定义各种类型名,但不能用来定义变量
B)typedef和#define都是在预编译时处理的
C)用typedef只是将已存在的类型用一个新的标识符来代表
D)使用typedef有利于程序的通用和移植
29.设有定义:#defineSTR"12345";,则以下叙述正确的是()。
A)宏名STR代替的是数值常量12345
B)宏定义以分号结束,编译时会产生错误信息
C)宏名STR代替的是字符串"12345"
D)宏名STR代替的是字符串常量"12345"
30.若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在
时新建文件,则文件打开方式应是()。
A)"ab+"
B)"rb+"
C)"wb+"
D)"ab"
31.若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为()。
A)j*m+i
B)i*m+j
C)i*m+j-1
D)j*m+i-1
32.假设所有变量均为整型,则执行运算x=(a=2,b=5,b++,a+b)后,x的值是()。
A)7
B)8
C)6
D)2
33.下列选项中属于不正确的赋值语句的是()。
A)t--;
B)k=i==j;
C)t1=t2=t3=3;
D)t1=1,t2=2;
34.C语言中运算对象必须是整型的运算符是()。
A)/
B)++
C)%
D)!=
35.下列程序的运行结果是()。
main()
{chararr[2][4];
strcpy(arr,“abc”);strcpy(arr[1],“ABC”);
printf(“%sn”,arr);}
A)abcABC
B)abc
C)ABC
D)arr
36.以下程序的输出结果是()。
#include
intmain()
{
charstr[100]="ABCDEFG",*p=str;
inti;
for(i=0;*p!=’0’;p++,i++);
printf("%dn",i);
return0;
}
A)7
B)8
C)99
D)100
37.下列函数调用语句中含有()个参数。
func((f1,f2),(f2,f3),(f5,f6,f7))
A)3
B)5
C)6
D)7
38.下列程序片段的输出结果是()。
printf("%dn",strlen("ATSn0l22"));
A)l1
B)10
C)9
D)8
39.有以下程序:
main()
{charstr[][8]={“Hello”,“Beijing”},*p=str;
printf(“%sn”,p+8);}
该程序运行后的输出结果是()。
A)Hello
B)Beijing
C)jing
D)ijing
40.在C程序中有如下语句:char*func(intx,inty);它是()。
A)对函数func的定义
B)对函数func的调用
C)对函数func的原型说明
D)不合法的
41.设有数组定义:chararray[]=“123456789”;则数组array所占的空间为()。
A)7个字节
B)8个字节
C)9个字节
D)10个字节
42.以下程序的运行结果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q=NULL;
q=p+5;
printf("%d%dn",*p,*q);
}
A)运行后报错
B)611
C)612
D)55
43.以下程序的输出结果是()。
main()
{intw=4,x=3,y=2,z=1;
if(x>y&&!(z==w))printf("%dn",(w
elprintf("%dn",(w>x?w:z>y?z:x));
}
A)1
B)2
C)3
D)4
44.下列程序的输出结果是()。
main()
{
intk=4,m=5,n=7;
int*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%dn”,n);
}
A)5
B)7
C)20
D)21
45.下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i
for(j=i+1;j
}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[2],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,7,6,5,4,3,8,9,10,
D)1,2,10,9,8,7,6,5,4,3,
46.有如下定义:
structs1
{
chara[3];
intnum;
}t={’a’,’b’,’x’,4},*p;
p=&t;
则下列语句输出结果为x的是()。
A)printf("%cn",p->t.a[2]);
B)printf("%cn",(*p).a[2]);
C)printf("%cn",p->a[3]);
D)pritf("%cn",(*p).t.a[2]);
47.有如下程序,该程序的输出结果是()。
longf(intn)
{if(n>2)return(f(n-2)+f(n-3));
el
if(n==2)return(2);
elreturn(1);}
main()
{printf("%dn",f(5));}
A)2
B)3
C)4
D)5
48.若以下程序所生成的可执行文件名为,当输入命令行:FILE1CHINA
BEIJINGSHANGHAI,执行该程序时,程序的输出结果是()。
main(intargc,char*argv[])
{while(argc-->1)
{++argv;printf("%s",*argv);}
}
A)CHINABEIJINGSHANGHAI
B)FILE1CHINABEIJING
C)CBS
D)FCB
49.设charch,str[4],*strp;,则下列赋值语句正确的是()。
A)ch="CBA";
B)str="CBA";
C)strp="CBA";
D)*strp="CBA";
50.在PC16位机环境下,以下程序的运行结果是()。
main()
{unsignedinta;
intb=-2;
a=b;
printf(“%u”,a);}
A)-2
B)65534
C)32768
D)-32768
51.下列程序的输出结果是()。
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{2,3,4},{5,6,7}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%dn",t);}
A)0
B)1
C)4
D)5
52.若有定义:inta,b;charx,y;并有以下输入数据:1213AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是
()。
A)scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B)scanf(“%d%d%c%c”,&a,&b,&x,&y);
C)scanf(“%d%d%c%c”,&a,&b,&x,&x,&y,&y);
D)scanf(“%d%d%c%c%c%c”,&a,&b,&x,&x,&y,&y);
53.若变量定义时未初始化,则其值不确定的是()。
A)静态全局变量
B)静态局部变量
C)局部变量
D)全局变量
54.以下程序的输出结果是()。
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’0’;j+=2)
s=10*s+p[i][j]-’0’;
printf("%dn",s);
}
A)69825
B)63825
C)6385
D)693825
55.以下程序的输出结果是()。
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<3;j++)
{if(j%2)continue;
x++;}
x++;}
printf("x=%dn",x);}
A)x=4
B)x=8
C)x=6
D)x=12
56.下列程序的输出结果是()。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{p=aa;
printf(“%d”,++(*p->y));
printf(“%d”,(++p)->x);
printf(“%d”,++p->x);
A)202010
B)216050
C)116061
D)317060
57.语句:printf(“%d”,!0);的输出结果是()。
A)1
B)0
C)有语法错误,不能执行
D)!0
58.下列程序运行后的输出结果是()。
fun(inta,intb)
{if(a>b)return(a);
elreturn(b);
}
main()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%dn",r);
}
A)3
B)6
C)8
D)12
59.函数调用语句:fek(fp,-20L,2);的含义是()。
A)将文件位置指针移到距离文件头20个字节处
B)将文件位置指针从当前位置向后移动20个字节
C)将文件位置指针从文件末尾处后退20个字节
D)将文件位置指针移到距离当前位置20个字节处
60.以下程序将输出的字符是()。
#include"stdio.h"
main()
{
charc;
char(*p)[3];
chars[2][3]={’a’,’b’,’c’,’d’,’e’,’f’};
p=&s[0];
c=*(p[1]+1);
printf("%c",c);
}
A)b
B)d
C)e
D)f
二、多项选择题【共20题,每小题2分,共40分。下列每题给出的多个选项中,
有一项或多项是符合试题要求的。请选择相应的正确答案。多选、少选或错选均不
得分。】
语句的正确用法包括()。
A)无论在任何情况下,都中断程序的执行,终止整个循环
B)在多重循环中,只能退出最靠近的那一层循环语句
C)对于go语句和if语句构成的循环,不能使用break退出
D)可用于循环语句、switch语句和其他语句
2.设有如下定义:
char*s[2]={“abcd”,“ABCD”};
char**p=s;
则下列说法正确的有()。
A)s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址
B)s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素
C)p是指向指针数据的指针变量
D)p中存放的是数组s的首地址
3.若已定义的函数有返回值,则以下关于该函数调用的叙述正确的有()。
A)函数调用可以作为独立的语句存在
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数可以直接调用函数本身
4.下列判断不正确的有()。
A)char*a=“china”;等价于char*a;*a=“china”;
B)charstr[6]={“china”};等价于charstr[]={“china”};
C)chars=“china”;等价于chars;s=“china”;
D)charc[4]=“abc”,d[4]=“abc”;等价于charc[4]=d[4]=“abc”;
5.以下说法正确的有()。
A)C语言程序总是从main函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序由函数组成,且必须包含main函数
D)C语言程序中的main()函数必须放在程序的开始部分
6.函数欲实现交换x和y的值,且通过正确调用返回交换结果,下列选项中不能实
现这一功能的有()。
A)funa(int*x,int*y)
{
int*p;
*p=*x;*x=*y;*y=*p;
}
B)funb(intx,inty)
{
intt;
t=x;x=y;y=t;
}
C)func(int*x,int*y)
{
intp;
p=*x;*x=*y;*y=p;
}
D)fund(int*x,int*y)
{
int*p;
*x=*x+*y;*y=*x-*y;*x=*x-*y;
}
7.已知:inta=1,*p=&a;,则以下表达式值为1的有()。
A)*p
B)p[0]
C)*&a
D)*&p
8.已知有如下程序:
voidmain()
{
inta[5]={1,2,3,4,5},*b;
b=(int*)malloc(sizeof(int));
____;
printf("%dn",*b);
}
要使程序输出为a[2]的值,则下列有关函数fun的定义和下划线处对应的fun调用
语句正确的有()。
A)voidfun(int*s,int*d)
{*d=*(s+2);}
调用:fun(a,&b)
B)voidfun(int*s,int&d)
{d=*(s+2);}
调用:fun(a,b)
C)voidfun(int*s,int&d)
{d=*(s+2);}
调用:fun(a,*b)
D)voidfun(int*s,int**d)
{**d=*(s+2);}
调用:fun(a,&b)
9.下面程序把数组元素中的最大值放入a[0]中,则在if语句中条件表达式可以是
()。
main()
{inta[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
10.若x,y均定义为int型,z定义为double型,以下scanf函数调用语句合法的有
()。
A)scanf("%d%lx,%le",&x,&y,&z);
B)scanf("%2d*%d%lf",&x,&y,&z);
C)scanf("%x%*d%o",&x,&y);
D)scanf("%x%o%6.2f",&x,&y,&z);
11.关于下列程序的输入与输出,下列说法正确的有()。
#include
voidmain()
{
intm,n;
printf("Enterm,n∶");
scanf("%d%d",&m,&n);
while(m!=n)
{while(m>n)m-=n;
while(n>m)n-=m;
}
printf("m=%dn",m);
}
A)输入m>n时,程序将输出1
B)输入m
C)输入m,n满足m%n等于0,且m>n时,程序输出n的值
D)输入m或n为0时,程序将陷入死循环
12.已知intb=2,下列表达式值为1的有()。
A)~b&b
B)~b||b
C)b>>1
D)(b|1)&1
13.有以下程序段:
#include"stdio.h"
#include"string.h"
main()
{charss[10]="1,2,3,4,5";
gets(ss);
___________
printf("%sn",ss);}
执行程序时如果输入ABC则输出结果为ABC6789,则下划线处的语句可以是()。
A)strcat(ss,"6789");
B)strcpy(ss[3],"6789");
C)strcpy(ss,"ABC6789");
D)strcpy(&ss[3],"6789");
14.若已建立如图所示的单向链表:
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有
()。
A)a=a->link;s->link=a->link;a->link=s->link;
B)a=(*a).link;(*s).link=(*a).link;(*a).link=s;
C)s->link=NULL;a=(*a).link;(*a).link=s;
D)s->link=a->link->link;a->link->link=s;
15.设有说明intk=7,x=12;,则以下语句执行后,x值为0的有()。
A)x%=(k%5);
B)x%=(k-k%5);
C)x%=k-k/5;
D)x=(x%=k)-(k%=5);
16.下列符号串中,不属于C语言合法标识符的有()。
A)_1_2_3
B)1-2-3
C)float
D)12ab
17.关于以下运算,说法正确的有()。
A)设有宏定义"#defineF(N)2*N",则表达式F(2+3)的值是10
B)设intx=4;,则执行语句x+=x*=x+1;后,x的值为40
C)设inta,b=8;,执行a=b<<2+1;后,a的值是33
D)设inta[3][4],*p=a[1];该指针变量p指向的元素是a[1][0]
18.以下叙述正确的有()。
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,A和a是两个不同的变量
C)若a和b类型相同,在执行了赋值a=b后,b中的值不变
D)当键盘输入数据时,对于整型变量也可以能输入整型数值、实型数值和字符型数
据等
19.以下有关字符串赋值、赋初值的语句正确的有()。
A)charsz[2][40];sz[1]=“string1”;
B)char*sz[2];sz[1]=“string2”;
C)charsz[][40]=“string3”;
D)char*sz[2]={“string1”,“string2”};
20.已知有定义staticintb[5],a[2][3]={1,2,3,4,5,6};,则以下说法正确的有
()。
A)b中元素值为0
B)b中元素没有定义,值不确定
C)a[1][1]=4
D)a[1][1]=5
一、单选题(共60小题,每题1分,共60分)
1.执行下列程序中的输出语句后,x的值是______。(知识点3.10)
main()
{intx;
printf(“%dn”,(x=5*6,x*2,x+20));}
A)30B)60C)50D)80
2.下列程序的输出结果是_______。(知识点3.8)
main()
{intx=1,y=0,z;
z=(x<=0)&&(y-->=0);
printf(“%d%d%d%n”,z,x,y);}
A)0-1-1B)0-10C)010D)01-1
3.在C语言中,下列选项属于合法的长整型常数的是_______。(知识点3.3)
A)0LB)1234567C)0.0234567D)3.14159e3
4.下列选项中属于不正确的赋值语句的是_____。(知识点3.6)
A)t++;B)n1=(n2=(n3=0));C)k=i==j;D)a=b,c=1;
5.若有定义:inta,b;charx,y;并有以下输入数据:1422XxYy(回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________。
(知识点4.2)
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.下列转义字符不正确的是_______。(知识点3.5)
A)’’B)’’C)’053’D)’0’
7.下列选项可作为C语言赋值语句的是_______。(知识点4.2)
A)x=3,y=5B)a=b=6C)i--;D)y=int(x);
8.当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______。(知识点
5.2)
A)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;
9.有以下程序:
main()
{unsignedinta;
intb=-1;
a=b;
printf(“%u”,a);}
该程序运行后的输出结果是_______。(知识点4.5)
A)-1B)65535C)32767D)-32768
10.若x、b、m、n均为int型变量,执行下面语句后b的值为_______。(知识点3.10)
m=20;n=6;
x=(--m==n++)?--m:++n;
b=m++;
A)11B)6C)19D)18
11.有以下程序:
main()
{inta=111,b=222;
printf(“%dn”,a,b);
}
该程序运行后的输出结果是_______。(知识点4.5)
A)错误信息B)111C)222D)111,222
12.以下程序的输出结果是_______。(知识点4.5)
main()
{inta=2,c=5;
printf(“a=%%%d,b=%%%dn”,a,c);}
A)a=%2,b=%5B)a=2,b=5C)a=%%%d,b=%%%dD)a=%%d,b=%%d
13.对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是
_______。(知识点3.8)
A)f=(f*100+0.5)/100.0B)f=(f*100+0.5)/100
C)f=(int)(f*100+0.5)/100.0D)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的值为______。(知识点
5.2)
A)2,2B)2,0C)0,2D)0,0
15.语句printf(“%dn”,strlen(“asdnx121”));的输出结果是______。(知识点7.3)
A)9B)11C)7D)8
16.有以下程序:
main()
{
inty=1234;
printf(“y=%6d”,y);
printf(“y=%+06dn”,y);
}
该程序的运行结果是______。(知识点4.5)
A)y=1234y=001234B)y=1234y=+01234
C)y=1234y=+01234D)y=1234y=1234
17.语句:printf(“%d”,!9);的输出结果是______。(知识点5.2)
A)0B)1C)有语法错误,不能执行D)-9
18.已有定义语句:intx=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是
______。(知识点5.3)
if(x
A)x=4,y=5,z=6B)x=4,y=6,z=6
C)x=4,y=5,z=5D)x=5,y=6,z=4
19.下列选项中属于正确的switch语句的是______。(知识点5.4)
A)switch(1.0)B)swicth(1)
{ca1.0:printf(“An”);{ca1:printf(“An”);
ca2.0:printf(“Bn”);}ca2:printf(“Bn”);}
C)switch((int)(1.0+2.5))D)switch(“a”);
{ca1:printf(“An”);{ca“a”:printf(“An”);
ca1+2:printf(“Bn”);}ca“b”:printf(“Bn”);}
20.若k为int型变量,以下语句段执行后的输出结果是______。(知识点5.3)
k=-3;
if(k<=0)printf(“
”)
elprintf(“****”);
A)
B)****C)
****D)有语法错误,不能执行
21.当a=2,b=3,c=4,d=5时,执行下面一段程序后x的值为_____。(知识点5.3)
if(a>b)
if(c
el
if(a
if(b>d)x=2;
elx=3;
elx=4;
elx=5;
A)2B)3C)4D)5
22.下列程序的运行结果是________。(知识点6.3)
main()
{inty=10;
do{y--;}while(--y);
printf(“%dn”,y--);}
A)-1B)1C)8D)0
23.下列程序的运行结果是________。(知识点6.5)
#include
main()
{
inti;
for(i=1;i<=5;i++)
{if(i%2)printf(“*”);
elcontinue;
printf(“#”);
}
printf(“$n”);
}
A)*#*#$B)#*#*#*$C)*#*#*#$D)***#$
24.若x是int型变量,且有下面的程序片段:(知识点6.5)
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%dn”),x);
该程序片段的输出结果是_______。
A)**5##6B)##5C)##5**6##7D)**5##6**7
**7**6##7
25.有以下程序:
main()
{inta=1,b=0;
switch(a)
{ca1:switch(b)
{ca0:printf(“****”);break;
ca1:printf(“
”);break;}
ca2:printf(“$$$$”);break;}
该程序的输出结果是________。(知识点5.4)
A)****B)****$$$$C)****
$$$$D)
$$$$
26.下列程序段的输出结果是_______。(知识点6.4)
intx=3;
do{printf(“%3d”,x-=2);}
while(!(--x));
A)1B)30C)1-2D)死循环
27.有以下程序,其中x、y为整型变量;
for(x=0,y=0;(x<=1)&&(y=1);x++,y--);
printf(“x=%d,y=%d”,x,y);
该程序的输出结果是_____。(知识点6.5)
A)x=2,y=0B)x=1,y=0C)x=1,y=1D)x=0,y=0
28.有以下程序段:
intn=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);
此处do-while循环的结束条件是_____。(知识点6.4)
A)p的值不等于12345并且n的值大于3
B)p的值等于12345并且n的值大于等于3
C)p的值不等于12345或者n的值小于3
D)p的值等于12345或n的值大于等于3
29.在下述程序中,if(i>j)语句共执行的次数是_____。(知识点6.5)
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(“%d”,s);
break;
}
s+=i;
}
}
A)4B)7C)5D)6
30.以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均
分进行输出,但运行结果不正确。
main()
{intn,k;floatscore,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:%fn”,n,ave);}
}
造成程序计算结果错误的语句行是_____。(知识点6.6)
A)ave=0.0;B)for(n=1;n<=10;n++)
C)ave+=score/4;D)printf(“NO%d:%fn”,n,ave);
31.若有以下定义:chars[10]={‘a’,’b’,’c’,’0’,’0’,’2’,’x32’,’0’};执行语句printf(“%d”,strlen(s));
的结果是_____。(知识点7.3)
A)3B)4C)8D)10
32.设有数组定义:chararray[]=“abcdef”;则数组array所占的空间为_____。(知识点7.3)
A)4个字节B)5个字节C)6个字节D)7个字节
33.有以下程序:
main()
{charstr[][10]={“China”,“Beijing”},*p=str;
printf(“%sn”,p+10);}
该程序运行后的输出结果是_____。(知识点10.4)
A)ChinaB)BeijingC)ngD)ing
34.阅读下面程序,该程序段的功能是_____。(知识点7.1)
#include
main()
{intc[]={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.下列程序的输出结果是_____。(知识点7.2)
main()
{intn[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(“%dn”,n[i][j]);
}
A)14B)0C)6D)值不确定
36.下列函数调用语句中含有______个参数。(知识点8.3)
func((f1,f2),(f2,f3,f4),f5)
A)3B)4C)5D)6
37.下列程序的运行结果是_______。(知识点7.3)
#include
main()
{char*p1,*p2,ch[20]=“ABCDEFabcdef”;
p1=“1234”;p2=“abcd”;
strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);
pintf(“%sn”,ch);}
A)Abc4EFabcdeB)Abc4EFC)AbcdEFD)Abc4
38.下列程序的运行结果是_______。(知识点8.6)
#include
intf(inta)
{switch(a)
{ca0:return0;
ca1:ca2:return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(10);
printf(“b=%dn”,b);
}
A)12B)10C)9D)8
39.有以下程序:
fun(intn)
{if(n==1||n==2)return2;
returns=n-fun(n-2);}
main()
{printf(“%dn”,fun(7));}
该程序运行后的输出结果是_____。(知识点8.6)
A)1B)2C)3D)4
40.下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i
for(j=i+1;j
}
main()
{intaa[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”);
}
该程序运行后的输出结果是_____。(知识点8.4)
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.下列程序的运行结果是_____。(知识点8.3)
main()
{inta=3,y;
y=fn(a,a++);
printf(“%d”,y);}
intfn(x,c)
{intb;
if(x
elif(x==c)b=0;
elb=-1;
return(b);
}
A)3B)-1C)1D)0
42.下列程序的运行结果是_____。(知识点7.3)
main()
{chararr[2][4];
strcpy(arr,“you”);strcpy(arr[1],“me”);
printf(“%sn”,arr);}
A)youmeB)youC)meD)arr
43.下列程序的输出结果是_____。(知识点8.8)
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf(“%dn”,a);}
A)20B)24C)25D)15
44.程序中对fun函数有如下说明:
void*fun();
此说明的含义是_____。(知识点10.6)
A)fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
45.设有下列定义:staticintx,*p=&x,*q;
scanf(“%d,%d”,p,q);
若输入3,4,则x的值为_____。(知识点8.8)
A)3B)4C)0D)无法确定
46.设有以下程序:
intfun(char*s)
{intn=0;
while(*s){n++;s++;}
returnn;}
main()
{chary[]=“this_is_an_example。”;
printf(“%dn”,fun(&y[6]));
}
该程序的输出结果是_____。(知识点:10.4)
A)12B)13C)14D)16
47.下列程序的功能是_____。(知识点:10.4)
intfun(char*a)
{char*b=a;
while(*b)b++;
{returnb-a;}
}
A)比较两个字符串的大小B)字符串的复制
C)计算字符串的长度D)字符串的连接
48.下列程序的输出结果是_______。(知识点10.2)
main()
{
intk=3,m=5,n=7;
int*pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%dn",n);
}
A)5B)7C)15D)21
49.下列程序的执行结果是_______。(知识点10.3)
main()
{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf(“%d”,*--p);}
A)非法B)a[4]的地址C)5D)4
50.以下函数返回a所指的数组中最小值所在的下标值:
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i
return(p);}
在下划线处应填入_______。(知识点10.2)
A)i=pB)a[p]=a[i]C)p=jD)p=i
51.下列程序的运行结果是_______。(知识点10.2)
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d%d”,a,b);
}
A)63B)36C)编译出错D)00
52.有如下程序:
#definef(x)x*x
main()
{inti;
i=f(4+4)/(2+2);
printf(“%dn”,i);}
该程序执行后的输出结果是_______。(知识点9.1)
A)28B)21C)16D)4
53.下列程序的输出结果是_______。(知识点11.4)
structtt;
{intn1;charn2;floatn3;
unionuu{intu1[2];charu2[2];}su;
};
main()
{printf(“%dn”,sizeof(structtt));}
A)11B)12C)7D)9
54.下列程序的输出结果是_______。(知识点11.6)
structLH
{intn;structLH*m;}p[4];
main()
{inti;
for(i=0;i<3;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%dn”,(p[1].m)->n,p[3].m->n);
}
A)1,2B)1,3C)2,0D)程序出错
55.下列程序的输出结果是_______。(知识点11.6)
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[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)102020B)506021C)516021D)607031
56.字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结
果是_______。(知识点11.8)
#include
main()
{union
{inti[4];
longk;
charc[6];
}a,*s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf(“%cn”,s->c[0]);
}
A)5B)3C)6D)9
57.下列程序的运行结果是_______。(知识点12.2)
main()
{unsignedc1=0xff,c2=0x00;
c1=c2|c1>>2;c2=c1^0236;
printf(“%x,%xn”,c1,c2);
}
A)0x3f,0XA1B)3f,A1C)ffff,61D)3f,a1
58.若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的排列次序正确的是_______。
(知识点3.8)
A)sizeof,&=,<<,^B)sizeof,<<,^,&=
C)^,<<,sizeof,&=D)<<,^,&=,sizeof
59.有以下程序:
#include
voidfun(char*fname,char*st)
{FILE*myf;inti;
myf=fopen(fname,“w”);
for(i=0;i
fclo(myf);
}
main()
{fun(“test.t”,“newworld”);fun(“test.t”,“hello,”);}
执行该程序后,文件test.t中的内容是_______。(知识点13.4)
A)hello,B)newworldhello,C)newworldD)hello,rld
60.有以下程序:
#include
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen(“”,“w”);
fprintf(fp,“%dn”,i);fprintf(fp,“%dn”,j);
fclo(fp);
fp=fopen(“”,“r”);
fscanf(fp,“%d%d”,&k,&n);printf(“%d%dn”,k,n);
fclo(fp);}
该程序运行后的输出结果是_______。(知识点13.4)
A)2030B)2050C)3050D)3020
二、多选题(共20小题,每题2分,共40分)
1.下列符号串中,不属于C语言合法标识符的有_____。(知识点3.2)
A)_1_2_3B)a-b-cC)intD)9cd
2.当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有_______。(假设k>0)
(知识点5.3)
A)k%2B)k%2==1C)(k%2)!=0D)!k%2==0
3.已有定义inta=-2;和输出语句printf(“%8lx”,a);下列叙述不正确的有_______。(知
今识点4.5)
A)整型变量的输出形式只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字81规定了输出字段的宽度
4.下列选项中,没有构成死循环的程序段有_____。(知识点6.7)
A)inti=100;B)for(;;)
while(1)
{i=i%100+1;
if(i>=100)break;}
C)intk=0;D)ints=36;
do{++k;}while(k>=0);while(s);--s;
5.t为int类型,进入下面的循环之前,t的值为0:
while(t=1)
{……….}
则下列叙述不正确的有________。(知识点6.3)
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)循环有可能是个无限循环
6.下列判断正确的是_______。(知识点10.3)
A)char*a=“china”;等价于char*a;*a=“china”;
B)charstr[6]={“china”};等价于charstr[]={“china”};
C)char*s=“china”;等价于char*s;s=“china”;
D)charc[4]=“abc”,d[4]=“abc”;等价于charc[4]=d[4]=“abc”;
7.若变量已正确定义,以下能正确计算1+2+3+4+5的程序段有_____。(知识点:6.7)
A)i=1;s=1;B)i=0;s=0;
dodo
{s=s+i;i++;{i++;s=s+i;
while(i<5);while(i<5);
C)i=1;s=0;D)i=0;s=0;
dodo
{s=s+i;i++;{s=s+i;i++;
while(i<6);while(i<=5);
8.下面程序把数组元素中的最小值放入a[0]中,则在if语句中条件表达式可以是______。
(知识点10.2)
main()
{inta[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);
}
9.设有如下定义:
char*s[2]={“abcd”,“ABCD”};
则下列说法正确的有_____。(知识点:10.3)
A)s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址
B)s是指针数组名,它含有两个元素分别指向字符型一维数组
C)s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素
D)s数组的两个元素中分别存放了字符’a’和’A’的地址
10.以下有关字符串赋值、赋初值的语句错误的有_______。(知识点10.4)
A)charsz[2][40];sz[1]=“string1”;
B)char*sz[2];sz[1]=“string2”;
C)charsz[][40]=“string3”;
D)char*sz[]=“string4”;
11.若有以下说明:inta[5][9];则下列选项中对数组元素a[i][j]的引用错误的有_______。
(0<=i<4,0<=j<9)(知识点10.3)
A)*(&a[0][0]+9*i+j)B)*(a+i)(j)C)*(*(a+i)+j)D)*(a[i]+j)
12.若有定义:char*st=“howareyou!”;下面程序段正确的有_____。(知识点:7.3)
A)chara[11],*p;strcpy(p=a+1,&st[4]);
B)chara[11];strcpy(++a,st);
C)chara[11];strcpy(a,st);
D)chara[],*p;strcpy(p=&a[1],st+2);
13.设有以下说明语句:
Structstu
{inta;
floatb;
}stutype;
则下列叙述正确的有_______。(知识点11.2)
A)struct是结构体类型的关键字
B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
14.若已建立如图所示的单向链表:
mn
Z
x0
a
s
infolinkinfolinkinfolink
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有_______。
(知识点11.7)
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.设有定义语句:intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_______。(知识点
10.3)
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.下列叙述正确的有_____。(知识点8.5)
A)函数可以嵌套定义,但不能嵌套调用
B)函数可以嵌套调用,也可以嵌套定义
C)函数不可以嵌套定义,但可以递归调用
D)函数可以嵌套调用,但不能嵌套定义
17.下列叙述不正确的有_____。(知识点8.8)
A)全局变量可以为本文件中其他函数所调用,编译时分配在静态存储区
B)局部变量只在本函数范围内有效,形式参数属于局部变量
C)局部变量如没有被说明为静态的存储类别,则会被分配动态存储空间,存储在动态存储
区中
D)局部静态变量在函数调用结束后依然存在,但其他函数不能引用它
18.若变量已正确定义,要求程序段完成求5!的计算,下列选项中不能完成此操作的程序
段有____(知识点6.7)
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库函数的调用不正确的有_______。(知识点10.4)
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清零的表达式有_______。(知识点12..2)
A)n=n&~nB)n=n&0C)n=n^nD)n=n|n
C语言程序设计预赛题答案
一、单选题
ACADCBCCBC
617181920
BACCCBACCD
227282930
DDCABCADDA
337383940
BDBBCADCCC
447484950
BBDCABCCCD
557585960
BBACCDDBAA
二、多选题
BCDABCABCACACBCBCDBDABDACD
617181920
BAABDABCABCCDABCDBCBCABC
本文发布于:2023-03-03 02:11:44,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1677780704119871.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:c语言笔试题.doc
本文 PDF 下载地址:c语言笔试题.pdf
留言与评论(共有 0 条评论) |