第五届全国信息应用技术大赛C语言程序设计预赛试题.docx
《第五届全国信息应用技术大赛C语言程序设计预赛试题.docx》由会员分享,可在线阅读,更多相关《第五届全国信息应用技术大赛C语言程序设计预赛试题.docx(36页珍藏版)》请在冰豆网上搜索。
![第五届全国信息应用技术大赛C语言程序设计预赛试题.docx](https://file1.bdocx.com/fileroot1/2023-2/7/3f4fae24-040c-4830-bf74-592c32b1619e/3f4fae24-040c-4830-bf74-592c32b1619e1.gif)
第五届全国信息应用技术大赛C语言程序设计预赛试题
第五届全国ITAT教育工程就业技能大赛预赛试题
C语言程序设计
一、单选题(共计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("%d\n",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,%d\n”,(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)
{case0:
return0;
case1:
case2:
return1;
}
return(f(a-2)+f(a-3));
}
main()
{intb;
b=f(9);
printf(“%d\n”,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("%d\n",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("%d\n",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;
elsereturnf(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%d\n",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("%s\n",str);
}
A、xyabcAB
B、abcABz
C、Ababcz
D、xycdBCD
(21)下列选项中属于正确的switch语句的是()。
A、swicth(’a’)
{case‘a’:
printf(“A\n”);
case‘b’:
printf(“B\n”);}
B、switch(1.0)
{case1.0:
printf(“A\n”);
case2.0:
printf(“B\n”);}
C、switch((int)(x+2.5))
{case1:
printf(“A\n”);
case1+2:
printf(“B\n”);}
D、switch(“a”);
{case“a”:
printf(“A\n”);
case“b”:
printf(“B\n”);}
(22)以下程序的运行结果为()。
#include"stdio.h"
voidmain(){
inty=2,a=1;
while(y--!
=-1){
do{
a*=y;a++;
}while(y--);}
printf("%d,%d\n",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(“%d\n”,(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(xelseif(x==c)b=0;
elseb=-1;
return(b);
}
A、4
B、-1
C、1
D、0
(28)有如下程序:
intx=-20;printf("%d\n",~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",temp.ch)"的结果是()。
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%d\n",*p,*q);
}
A、运行后报错
B、611
C、612
D、55
(32)以下程序的输出结果是( )。
main()
{inta=0,b=1,c=0,d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=15;
elsed=25;
printf("d=%d\n",d);
}
A、d=10
B、d=15
C、d=20
D、d=25
(33)下面四组字符串中,都可以用作C语言程序标识符的是()。
A、print
_maf
mx_2d
aMb6
B、I\am
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(“%d\n”,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("%d\n",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("%s\n",*m);
}
voidmain()
{
staticchar*a[]={"first","second","three"};
char**n;
n=a;
func(n);
}
A、first
B、irst
C、second
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出现的次数是:
%d\n",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("%d\n",*p);p++;}
}
A、0000
B、0123
C、1111
D、输出不确定值
(43)若有如下结构体定义,下列scanf用法不正确的是()。
structpupil
{
charname[20];
intage;
intsex;
}pup[5],*p;
p=pup;
A、scanf("%s",pup[0].name);
B、scanf("%d",&pup[0].age);
C、scanf("%d",&(p->sex));
D、scanf("%d",p->age);
(44)与y=(x>0?
1:
x<0?
-1:
0);的功能相同的if语句是()。
A、if(x>0)y=1;
elseif(x<0)y=-1;
elsey=0;
B、if(x)
if(x>0)y=1;
elseif(x<0)y=-1;
C、y=-1
if(x)
if(x>0)y=1;
elseif(x==0)y=0;
elsey=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
elsey=-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(“%d\n”,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,%c\n",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("%d\n",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)
{case0:
printf("Pe