C语言期末考试题9.docx
《C语言期末考试题9.docx》由会员分享,可在线阅读,更多相关《C语言期末考试题9.docx(17页珍藏版)》请在冰豆网上搜索。
C语言期末考试题9
试卷编号:
11209
所属语言:
C语言
试卷方案:
C语言期末考试
试卷总分:
100分
共有题型:
4种
一、单项选择共30题(共计60分)
第1题(2.0分)
有以下程序
#include
voidmain()
{inta,b,d=25;
a=d/10%9;
b=a&&(–1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是(B).
A:
A)6,1
B:
2,1
C:
6,0
D:
2,0
第2题(2.0分)
已知intj,i=1;,执行语句j=–i++;后,j的值是(C).
A:
1
B:
2
C:
-1
D:
-2
第3题(2.0分)
已知inti=5,执行语句i+=++i后,i的值是C().
A:
10
B:
11
C:
12
D:
A、B、C都不对
第4题(2.0分)
"\\\″ABC\″\\″的长度是(B).
A:
11
B:
7
C:
5
D:
3
第5题(2.0分)
以下程序的功能是:
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include
voidmain()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=p*r*r;printf("s=%f\n",s);
}
出错的原因是(D).
A:
注释语句书写位置错误
B:
存放圆半径的变量r不应该定义为整型
C:
输出语句中格式描述符非法
D:
计算圆面积的赋值语句中使用了非法变量
第6题(2.0分)
要求计算s=1+1/2+1/3+…+1/10,程序为:
#include
voidmain()
{intn;
floats;
s=1.0;
for(n=10;n>1;n––)s=s+1/n;
printf("%6.4f\n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是(C).
A:
s=1.0;
B:
for(n=10;n>1;n––)
C:
s=s+1/n;
D:
printf("%6.4f\n",s);
第7题(2.0分)
执行以下程序后,输出的结果是(D).
#include
voidmain()
{inty=10;
do{
y––;
}while(––y);
printf("%d\n",y––);
}
A:
-1
B:
1
C:
8
D:
0
第8题(2.0分)
要求计算s=1+1/2+1/3+…+1/10,程序为:
#include
voidmain()
{intn;
floats;
s=1.0;
for(n=10;n>1;n––)s=s+1/n;
printf("%6.4f\n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是(C).
A:
s=1.0;
B:
for(n=10;n>1;n––)
C:
s=s+1/n;
D:
printf("%6.4f\n",s);
第9题(2.0分)
以下程序的输出结果是(B).
#include
voidmain()
{intk=0,m=0;
inti,j;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)k++;
k–=j;
}
m=i+j;
printf("k=%d,m=%d",k,m);
}
A:
k=0,m=3
B:
k=0,m=5
C:
k=1,m=3
D:
k=1,m=5
第10题(2.0分)
已有定义:
charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是(B).
A:
isupper(c)
B:
'A'<=c<='Z'
C:
'A'<=c&&c<='Z'
D:
c<=('z'–32)&&('a'–32)<=c
第11题(2.0分)
有以下程序:
#include
voidmain()
{ints=0,a=1,n;
scanf("%d",&n);
do{
s+=1;a=a–2;
}while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘输入给n的值是(B).
A:
-1
B:
-3
C:
-5
D:
0
第12题(2.0分)
下述循环程序(C).
for(a=0,b=0;a<3&&b!
=3;a++);
A:
无限次循环
B:
循环次数不定
C:
循环3次
D:
循环4次
第13题(2.0分)
有以下程序:
#include
voidmain()
{inti,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)
m=m%j;
printf("%d\n",m);
}
程序的运行结果是(B)
A:
0
B:
1
C:
2
D:
3
第14题(2.0分)
以下程序的输出结果是(D).
#include
voidmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf("%d\n",a);
}
A:
101
B:
6
C:
5
D:
4
第15题(2.0分)
以下错误的定义语句是(C).
A:
intx[][3]={{0},{1},{1,2,3}};
B:
intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C:
intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D:
intx[][3]={1,2,3,4};
第16题(2.0分)
下面程序的输出结果是(B).
#include
voidmain()
{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:
20
B:
21
C:
22
D:
23
第17题(2.0分)
以下程序的输出结果是(B).
#include
voidmain()
{intx[3][2]={0},i;
for(i=0;i<3;i++)scanf("%d",&x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
输入:
246
A:
200
B:
204
C:
240
D:
246
第18题(2.0分)
有以下程序:
#include
voidmain()
{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf("%d",c[i]);
printf("\n");
}
程序的运行结果是(C).
A:
1234
B:
2344
C:
4332
D:
1123
第19题(2.0分)
有如下程序:
#include
voidmain()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是(B).
A:
3
B:
6
C:
9
D:
2
第20题(2.0分)
以下程序运行后,输出结果是(C)
func(inta,intb)
{
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{
intk=4,m=1,p;
p=func(k,m);printf("%d,",p);
p=func(k,m);printf("%d\n",p);
}C
A:
8,15
B:
8,16
C:
8,17
D:
8,8
第21题(2.0分)
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是B
A:
地址传递
B:
单向值传递
C:
由实参传给形参,再由形参传回实参
D:
传递方式是由用户指定
第22题(2.0分)
sub2()
{
inta[MAX],i,max;
max=5;
for(i=0;i}
sub1()
{
for(i=0;i}
sub3(inta[])
{
inti;
for(i=0;iprintf("\n");
}
D
A:
024681012141618
01234
B:
01234
024681012141618
C:
0123456789
012345
D:
024681012141618
024681012141618
第23题(2.0分)
有以下程序:
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;ireturnsum;
}
main()
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf("%d\n",s);
}C
A:
45
B:
50
C:
60
D:
55
第24题(2.0分)
若有定义int*p[3];,则以下叙述中正确的是(B).
A:
定义了一个基类型为int的指针变量p,该变量具有3个指针
B:
定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针
C:
定义了一个名为*p的整型数组,该数组含有3个int类型元素
D:
定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素
第25题(2.0分)
满足字符串s1大于字符串s2时if条件为真,应当使用(D).
A:
if(s1>s2)
B:
if(strcmp(s1,s2))
C:
if(strcmp(s2,s1)>0)
D:
if(strcmp(s1,s2)>0)
第26题(2.0分)
有如下程序:
#include
voidmain()
{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("%d\n",s);
}
该程序的输出结果是(C).
A:
69825
B:
63825
C:
6385
D:
693825
第27题(2.0分)
在以下程序中,函数scmp()的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址.
#include
#include
char*scmp(char*s1,char*s2)
{if(strcmp(s1,s2)<0)
return(s1);
elsereturn(s2);
}
voidmain()
{inti;
charstring[20],str[3][20];
for(i=0;i<3;i++)
gets(str[i]);
strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
运行时依次输入:
abcd、abba和abc3个字符串,则输出结果为(B).
A:
abcd
B:
abba
C:
abc
D:
abca
第28题(2.0分)
在文件包含预处理语句的使用形式中,当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是(B).
A:
直接按系统设定的标准方式搜索目录
B:
先在源程序所在目录搜索,再按系统设定的标准方式搜索
C:
仅仅搜索源程序所在目录
D:
仅仅搜索当前目录
第29题(2.0分)
有以下程序段:
main()
{inta=5,*b,**c;
c=&b;
b=&a;
…}
程序在执行了c=&b;b=&a;语句后,表达式**c的值是(C).
A:
变量a的地址
B:
变量b中的值
C:
变量a中的值
D:
变量b的地址
第30题(2.0分)
设有定义语句:
intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是(D).
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)++);
二、程序填空共1题(共计10分)
第1题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算平均成绩并统计90分以上人数。
-------------------------------------------------------*/
main()
{
intn,m;floatgrade,average;
/***********SPACE***********/
average=n=m=【?
】;
while
(1)
{
/***********SPACE***********/
【?
】("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
/***********SPACE***********/
if(grade<90)【?
】;
m++;
}
if(n)printf("%.2f%d\n",average/n,m);
}
三、程序改错共1题(共计10分)
第1题(10.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
一个5位数,判断它是不是回文数。
即12321是回文数,个
位与万位相同,十位与千位相同。
------------------------------------------------------*/
#include"stdio.h"
main()
{
/**********FOUND**********/
longge,shi,qian;wan,x;
scanf("%ld",&x);
/**********FOUND**********/
wan=x%10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
/**********FOUND**********/
if(ge==wan||shi==qian)
printf("thisnumberisahuiwen\n");
else
printf("thisnumberisnotahuiwen\n");
getch();
}
四、程序设计共1题(共计20分)
第1题(20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
642。
------------------------------------------------*/
#include"stdio.h"
longfun(longs,longt)
{
/**********Program**********/
/**********End**********/
}
returnt;
}
main()
{
longs,t,m;
clrscr();
printf("\nPleaseenters:
");scanf("%ld",&s);
m=fun(s,t);
printf("Theresultis:
%ld\n",m);
getch();
yzj();
}
yzj()
{
FILE*IN,*OUT;
intn;
longi,t,m;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%ld",&i);
m=fun(i,t);
fprintf(OUT,"%ld\n",m);
}
fclose(IN);
fclose(OUT);
}