C语言程序设计考试题.docx
《C语言程序设计考试题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计考试题.docx(25页珍藏版)》请在冰点文库上搜索。
C语言程序设计考试题
C语言程序设计考试题
一、选择题
(本大题共40个选项,每个选择项1.5分,共60分)
1.在C语言中,合法的字符常数是【1】
A)‘程序设计’B)“程序设计”
C)cD)‘\\’
2.在C语言中,以下不正确的八进制或不正确的十六进制数是【2】
A)090B)0xAB
C)0xlaD)-016
3.执行intx=2,y=3;后表达式x=(y==3)的值是【3】
A)0B)1
C)2D)3
4.执行语句inta,b,c;a=(b=c=3,c++,b+=c);则a的值是【4】
A)3B)4
C)7D)11
5.在循环结构的循环体中执行break语句,其作用是【5】
A)结束本次循环,进行下次循环
B)继续执行break语句之后的循环体中各语句
C)跳出该循环体,提前结束循环
D)终止程序运行
6.以下程序运行结果是【6】
main()
{chars[]=”\’Address\’”;
printf(%d\n”,strlen(s));
}
A)9B)10
C)11D)12
7.以下程序运行结果是【7】
main()
{inta[]={2,4,6,8,10},y=1,x;
for(x=0;x<3;x++)y+=a[x+1];
printf(“%d\n”,y);
}
A)17B)18
C)19D)20
8.已定义charx[8];inti;为了给x数组赋值,以下正确的语句是【8】
A)x[8]=”TurboC”;B)x=”TurboC”;
C)x[]=”TurboC”;D)for(i=0;i<7;i++)x[i]=getchar();
9.设inta[][4]={0,0};则以下错误的描述是【9】
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素得不到初值0
10.以下程序运行结果是【10】
fun3(intx)
{staticinta=3;
a+=x;
returna;
}
main()
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf(“%d\n”,n);
}
A)3B)4
C)6D)9
11.以下四个运算符,按优先级由高到低的排列顺序是【11】
A)++%+=>B)%++>+=
C)%+=>++D)++%>+=
12.以下不正确的描述是【12】
A)在函数外部定义的变量是全局变量
B)在函数内部定义的变量是局部变量
C)函数的形参是局部变量
D)局部变量不能与全局变量同名
13.“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含的文件的方式为【13】
A)直接按系统设定的标准方式搜索目录
B)先在源程序所在目录搜索,再按系统设定的标准方式搜索
C)仅仅搜索源程序所在的目录
D)仅仅搜索当前目录
14.设有语句int(*p)();则p是一个【14】
A)指向一维整型数组的指针变量
B)指针函数,该函数的返回值为指向整型变量的指针
C)指向函数的指针变量,该函数的返回值为整型
D)数组指针,它的每个元素都是一个可以指向整型变量的指针变量
15.若有typedeffloatAR[5];ARa;则以下叙述正确的是【15】
A)a是一个新类型名
B)AR是一个实型数组
C)AR是一个实型变量
D)a是一个实型数组
16.C语言的简单数据类型包括【16】
A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型
C)整型、字符型、逻辑型D)整型、实型、字符型
17.在C语言中,变量所分配的内存空间大小【17】
A)均为一个字节B)由用户自己定义
C)由变量的类型决定D)是任意的
18.在C语言中,合法的整型常数是【18】
A)-0x123B)3.14159C)01001101bD)6.7e10
19.下列各变量均为整型,选项中不正确的C语言赋值语句是【19】
A)i+=++i;B)i=j==k;
C)i=j+=i;D)i=j+1=k;
20.数学关系式x≤y≤z可用C语言的表达式表示为【20】
A)(x<=y)&&(y<=z)B)(x<=y)and(y<=z)
C)(x<=y<=z)D)(x<=y)&(y21.若定义floata;现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用【21】
A)scanf(“%6f”,&a);B)scanf(“%5.2f”,a);
C)scanf(“%6.2f”,&a);D)scanf(“%f”,a);
22.下面程序段的运行结果是【22】
unsigneda=0356,b;
b=~a|a<<2+1;
printf(“%x\n”,b);
A)ffbaB)ff71C)fff8D)fc02
23.要使以下程序的输出结果为4,则a和b应满足的条件是【23】
main()
{ints,t,a,b;
scanf(“%d%d”,&a,&b);
s=t=1;
if(a>0)s+=1;
if(a>b)t=s+t;
else
if(a==b)t=5;
elset=2*s;
printf(“%d\n”,t);
}
A)a>0并且aC)a>0并且a>bD)a<0并且a
24.若inti;则以下循环语句的循环执行次数是【24】
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次
C)1次D)2次
25.下面程序的输出结果为【25】
main()
{inti;
for(i=100;i<200;i++)
{
if(i%5==0)continue;
printf(“%d\n”,i);
break;
}
}
A)100B)101
C)无限循环D)无输出结果
26.下列程序段的运行结果是【26】
inti=1,a[]={1,5,10,9,13,7};
while(a[i]<=10)a[i++]+=2;
for(i=0;i<6;i++)printf(“%d”,a[i]);
A)271211139B)171211137
C)171211139D)17129137
27.以下语句把字符串“abcde”赋初值给字符数组,不正确的语句是【27】
A)chars[]=“abcde”;B)chars[]={’a’,’b’,’c’,’d’,’e’,’\0’};
C)chars[]={“abcde”};D)chars[5]=“abcde”;
28.若变量c为char类型,能正确判断出c为小写字母的表达式是【28】
A)'a'<=c<='z'B)(c>='a')||(c<='z')
C)('a'<=c)and('z'>=c)D)(c>='a')&&(c<='z')
29.下列程序段的输出结果是【29】
voidfun(int*x,int*y)
{printf("%d%d",*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);
}
A)2143B)1212C)1234D)2112
30.以下程序的输出结果是【30】
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A)20B)21C)22D)23
31.当执行下面的程序时,如果输入ABC,则输出结果是【31】
main()
{charss[10]="1,2,3,4,5";
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
A)ABC6789B)ABC67C)12345ABC6D)ABC456789
32.以下不能对二维数组a进行正确的初始化的语句是【32】
A)inta[2][3]={0};B)inta[][3]={1,2,3,4,5};
C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[2][3]={{1},{3,4,5}};
33.若inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是【33】
A)2B)3C)4D)无确定值
34.下面程序段的运行结果是【34】
inta[2][3]={1,2,3},i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{a[i][j]=a[i*j%2][j]+a[i][(i+j)%3];
printf(“%d,”,a[i][j]);
}
A)2,4,6,2,0,8,B)1,2,3,0,0,0,
C)1,2,3,2,0,6,D)2,4,6,2,0,6,
35.下面程序段的运行结果是【35】
inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
printf(“%d\n”,a[2][1]);
A)2B)4C)7D)8
36.定义一个结构体变量时,系统分配给它的内存大小是【36】
A)各成员所需内存量的总和
B)成员中占内存量最大者所需内存容量
C)结构中第一个成员所需内存容量
D)结构中最后一个成员所需内存容量
37.若typedefcharSTRING[255];STRINGs;,则s是【37】
A)字符指针数组变量
B)字符数组变量
C)字符变量
D)字符指针变量
38.若已定义:
int*p,a;,则语句p=&a;中的运算符“&”的含义是【38】
A)位与运算B)逻辑与运算
C)取指针内容D)取变量地址
39.若有定义char*p,ch;则不能正确赋值的语句组是【39】
A)p=&ch;scanf(“%c”,p);
B)p=(char*)malloc
(1);*p=getchar();
C)*p=getchar();p=&ch;
D)p=&ch;*p=getchar();
40.下面程序段的运行结果是【40】
chars[]=“ABC”;inti;
for(i=0;i<3;i++)printf(“%s”,&s[i]);
A)ABCB)ABCABCABCC)AABABCD)ABCBCC
1.下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言所有函数都是外部函数
2.以下所列的C语言常量中,错误的是
A)0xFFB)1.2e0.5C)2LD)'\72'
3.下列选项中,合法的C语言关键字是
A)VARB)cherC)integerD)default
4.设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为
A)不定值B)4C)3D)1
5.下面程序段的运行结果是【5】
floaty=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;
inti;
p=&a[1];
for(i=0;i<3;i++)y+=*(p+i);
printf(“%f\n”,y);
A)12.0000B)28.0000C)20.0000D)18.0000
6.下面程序段的运行结果是【6】
charc[]={‘a’,‘b’,‘\0’,‘c’,‘\0’};
printf(“%s\n”,c);
A)abcB)‘a’‘b’C)abcD)ab
7.下面程序段的运行结果是【7】
chars[10],*sp=“HELLO”;
strcpy(s,sp);
s[0]=‘h’;s[6]=‘!
’;
puts(s);
A)hELLOB)HELLOC)hHELLO!
D)h!
8.若有定义inta[3][5],i,j;(且0≤i<3,0≤j<5),则a[i][j]的地址不正确表示是【8】
A)&a[i][j]B)a[i]+j
C)*(a+i)+jD)*(*(a+i)+j)
9.若有定义int*p[4];,则标识符p是一个【9】
A)变量的指针变量
B)指向函数的指针变量
C)指向有四个整数元素的一维数组的指针变量
D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
10.若有定义char*language[]={“FORTRAN”,“BASIC”,“PASCAL”,“JAVA”,
“C”};则language[2]的值是【10】
A)一个字符B)一个地址C)一个字符串D)不确定
11.C语言规定,函数返回值的类型由【11】所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数时的形参类型
D)在定义该函数时所指定的函数类型
12.下面程序的输出结果为【12】
#include
#defineSQR(x)x*x
main()
{inta=10,k=3,m=2;
a=SQR(k+m);
printf(“%d\n”,a);
}
A)25B)11C)5D)10
13.下面程序的输出结果为【13】
#include
main()
{inta=10;
{inta=15;
printf(“a.1=%d,”,a);
}
printf(“a.2=%d\n”,a);
}
A)a.1=10,a.2=15B)a.1=15,a.2=10
C)a.1=15,a.2=15D)a.1=10,a.2=10
14.下面函数调用正确的是【14】
A)fopen(‘file.dat’,‘r’);B)fprintf(“%ld”,data,fp);
C)fclose(“file.dat”);D)fread(&i,sizeof(int),1,fp);
15.若变量已正确定义并赋值,下面符合C语言语法的表达式是【15】
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
16.C语言中运算对象必须是整型的运算符是【16】
A)%=B)/C)=D)<=
17.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是【17】
A)1B)2C)2.0D)2.5
18.有如下程序:
main()
{inti,sum;
for(i=1;i<=3;sum++)
sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是【18】
A)6B)3C)死循环D)0
19.如下程序:
intrunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=runc(runc(x,y),z);
printf(“%d\n”,r);
}
该程序的执行结果是【19】
A)12B)13C)14D)15
20.有如下程序段:
int*p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值为【20】
A)12B)11C)10D)编译出错
21.以下函数返回a所指数组中最小的值所在的下标值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);
}
在下划线处应填入的是【21】。
A)i=pB)a[p]=a[i]C)p=jD)p=i
22.在C语言中,函数的隐含存储类别是【22】。
A)autoB)staticC)externD)无存储类别
23.以下所列的C语言常量中,错误的是【23】。
A)0xFFB)1.2e0.5C)2LD)‘\72’
24.若a为类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是【24】。
A)-3B)9C)-12D)6
25.有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是【25】
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
26.当调用函数时,实参是一个数组,则向函数传递的是【26】
A)数组的长度B)数组的首地址
C)数组每一个元素的地址D)数组每个元素中的值
27.以下对C语言共用体类型数据的描述中,不正确的是【27】
A)共用体变量占的内存长度等于最长的成员的长度
B)共用体类型可以出现在结构体类型定义中
C)共用体变量可以作为函数的形参
D)同一共用体中各成员的首地址相同
28.下面函数st的功能是【28】
st(char*s)
{char*q=s;
while(*q!
=‘\0’)q++;
return(q-s);
}
A)检查字符串s中是否含有空字符
B)生成一个新的字符串q,字符串q是从字符串s的尾部到头部排列的
C)将字符串s中的非空字符的ASCII码值增1
D)计算字符串s的长度
29.以下正确的叙述是【29】
A)在C语言中,main函数必须位于文件的开头
B)C语言的每行中只能写一条语句
C)C语言本身没有输入、输出语句
D)对一个C语言程序进行编译预处理时,可检查宏定义的语法错误
30.若执行以下程序段:
inta=1,b=2,m=2,n=2;
(m=a>b)&&++n;
则n的值是【30】
A)1B)2
C)3D)4
31.以下程序的运行结果是【31】
#include
main()
{inti=0;
while
(1)
{printf(“*”);
i++;
if(i<3)break;
}
printf(“\n”);
}
A)*B)***
C)**D)****
32.若有以下程序:
#include
main(intargc,char*argv[])
{
while(--argc)
printf(“%s”,argv[argc]);
printf(“\n”);
}
该程序经编译和连接后生成可执行文件S.EXE。
现在DOS提示符下键入SAABBCC回车,则输出结果是【32】
A)AABBCCB)AABBCCS
C)CCBBAAD)CCBBAAS
33.若执行以下程序段
intx=3,y=6,z;
z=x^y<<2;
则z的二进制值是【33】
A)00011011B)00010100
C)00011000D)00000110
34.以下【34】是非法函数调用语句。
A)charc=‘T’;B)charc;
putchar(c);getchar(c);
C)putchar(0x7)D)putchar(‘d’+1);
35.以下不正确的一维数组定义语句是【35】
A)doublea[5]={1.0,2.7};
B)floata[5]={1.0,2.7,2.8,2,9,3.1,4.5};
C)chara[]={‘1’,‘2’,‘\101’,‘\t’};
D)chara[]={‘\x10’,‘\xa’,‘\r’};
二、填空题
(本大题共20个空,每个空2分,共40分)
1.表示条件:
102.以下程序的功能是:
从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。
main()
{floatx,amax,amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while(【2】)
{if(x>amax)amax=x;
if(【3】)amin=x;
scanf(“%f”,&x);
}
printf(“\namax=%f\namin=%f\n”,amax,amin);
}
3.Fibonacci数列中的头两个数是1和1,从第三个数开始,每个数等于前两个数之和。
下述程序计算此数列的前20个数,且每行输出5个数,请填空。
#include
voidmain()
{intf,f1=1,f2=1;
inti;
printf(“%6d,%6d”,f1,f2);
for(i=3;i<=20;i++)
{f=【4】
printf(“%6d”,f);
if(【5】)
printf(“\n”);
f1=f2;
【6】
}
}
4.下面程序的功能是将两个字符串连接起来,请填空。
#include
main()
{chars1[80],s2[40];
inti=0,j=0;
printf(“\nInputstring1:
”);
scanf(“%s”,s1);
printf(“Inputstring2:
”);
scanf(“%s”,s2);
while(s1[i]!
=‘\0’)
i++;
while(s2[j]!
=‘\0’)
【7】;
【8】=‘\0’;
printf(“%s\n”,s1);
}
5.计算1+1/2+1/4+…+1/50的值,并显示出来。
main()
{inti=2;
floatsum=1.0;
while(i<=【9】)
{sum+=1/【10】;
i+=2;
}
printf(“sum=%f\n”,sum);
}
6.以下程序是用来统计正整数的各位数字中零的个数,并求各位数字中最大者。
main()
{unsignedlongnum,max,t;
intcou