大学计算机C语言期末考试复习试题及答案 24.docx
《大学计算机C语言期末考试复习试题及答案 24.docx》由会员分享,可在线阅读,更多相关《大学计算机C语言期末考试复习试题及答案 24.docx(26页珍藏版)》请在冰点文库上搜索。
大学计算机C语言期末考试复习试题及答案24
试卷总分:
100分
共有题型:
6种
一、填空共15题(共计15分)
第1题(1.0分)
若有以下数组a,数组元素:
a[0]~a[9],其值为
941282107513
该数组中下标最大的元素的值是【1】.
答案:
=======(答案1)=======
3
第2题(1.0分)
表达式18&&53的值是【1】.
答案:
=======(答案1)=======
1
第3题(1.0分)
c语言程序的三种基本结构是:
顺序结构,选择结构,【1】结构.
答案:
=======(答案1)=======
循环
第4题(1.0分)
预处理命令行都必须以【1】号开始.
答案:
=======(答案1)=======
#
第5题(1.0分)
设i,j,k均为int型变量,则执行完for循环
for(i=0,j=10;i<=j;i++,j--)k=i+j;
后,k的值为【1】.
答案:
=======(答案1)=======
10
第6题(1.0分)
程序段intk=10;while(k=0)k=k-1循环体语句执行【1】次.
答案:
=======(答案1)=======
0
第7题(1.0分)
执行下列语句后,*(p+1)的值是【1】.
chars[3]="ab",*p;
p=s;
答案:
=======(答案1)=======
b
第8题(1.0分)
若输入字符串:
abcde<回车>,则以下while循环体将执行【1】次.
While((ch=getchar())=='e')printf("*");
答案:
=======(答案1)=======
0
第9题(1.0分)
如果函数不要求带回值,可用【1】来定义函数返回值为空.
答案:
=======(答案1)=======
void
第10题(1.0分)
C语言中,数组元素的下标下限为【1】.
答案:
=======(答案1)=======
0
第11题(1.0分)
inta=1,b=2,c=3;执行语句a=b=c;后a的值是【1】.
答案:
=======(答案1)=======
3
第12题(1.0分)
若有以下数组a,数组元素:
a[0]~a[9],其值为
941282107513
该数组可用的最小下标值是【1】.
答案:
=======(答案1)=======
0
第13题(1.0分)
将数组a的首地址赋给指针变量p的语句是【1】.
答案:
=======(答案1)=======
p=a;
第14题(1.0分)
以下程序的输出结果为【1】,
#include"stdio.h"main(){inta=010,j=10;printf("%d,%d\n",++a,j--);}
答案:
=======(答案1)=======
9,10
第15题(1.0分)
假设有条件intx=1,y=2,z=3;则表达式z+=x>y?
++x:
++y的值是【1】.
答案:
=======(答案1)=======
6
二、判断共15题(共计15分)
第1题(1.0分)
do-while循环是先判断循环条件表达式,后执行循环体;while循环是先执行循环体,后判断循环条件表达式.
答案:
N
第2题(1.0分)
关系运算符的优先级高于算术运算符并且低于赋值运算符.
答案:
N
第3题(1.0分)
C程序中的关键字必须小写.
答案:
Y
第4题(1.0分)
若有说明intc;则while(c=getchar());是正确的C语句.
答案:
Y
第5题(1.0分)
数组中的元素类型不能不同
答案:
Y
第6题(1.0分)
a=(b=4)+(c=6)是一个合法的赋值表达式.
答案:
Y
第7题(1.0分)
inta[3][4]={{1},{5},{9}};它的作用是将数组各行第一列
的元素赋初值,其余元素值为0.
答案:
Y
第8题(1.0分)
若a=3,b=2,c=1则关系表达式"(a>b)==c"的值为"真".
答案:
Y
第9题(1.0分)
inti,*p=&i;是正确的C说明语句.
答案:
Y
第10题(1.0分)
语句"int*pi,pj"定义了两个指针变量
答案:
N
第11题(1.0分)
如果函数值的类型和return语句中表达式的值不一致,则以
函数类型为准.
答案:
Y
第12题(1.0分)
C语言中的for语句可以用于循环次数已经确定的情况,但是不能用于循环次数不确定而只给出循环结束条件的情况.
答案:
N
第13题(1.0分)
在执行switch语句时,default和各个case的出现次序不影响执行结果.
答案:
Y
第14题(1.0分)
语句printf("%f%%",1.0/3);输出为0.333333.
答案:
N
第15题(1.0分)
若i=3,则printf("%d",-i++);输出的值为-4.
答案:
N
三、单项选择共17题(共计34分)
第1题(2.0分)
下列程序段的输出结果为().
floatx=213.82631;
printf("%3d",(int)x);
A:
213.82
B:
213.83
C:
213
D:
3.8
答案:
C
第2题(2.0分)
下列定义不正确的是().
A:
#definePI3.141592
B:
#defineS345
C:
intmax(x,y);intx,y;{}
D:
staticcharc;
答案:
C
第3题(2.0分)
以下程序段的输出结果为().
charc[]="abc";
inti=0;
dowhile(c[i++]!
='\0');printf("%d",i-1);
A:
abc
B:
ab
C:
2
D:
3
答案:
D
第4题(2.0分)
若ch为char型变量,k为int型变量(已知字符a的ASCII十进制代码为97),
则以下程序段的执行结果是().
ch='a';k=12;printf("%x,%o,",ch,ch);printf("k=%%%d\n",k);
A:
因变量类型与格式描述符的类型不匹配,输出无定值
B:
输出项与格式描述符个数不符,输出为零值或不定值
C:
61,141,k=%12
D:
61,141,k=%d
答案:
C
第5题(2.0分)
对for(表达式1;;表达式3)可理解为().
A:
for(表达式1;0;表达式3)
B:
for(表达式1;1;表达式3)
C:
for(表达式1;表达式1;表达式3)
D:
for(表达式1;表达式3;表达式3)
答案:
B
第6题(2.0分)
以下程序段的输出结果为().
for(i=4;i>1;i--)
for(j=1;j
putchar('#');
A:
无
B:
######
C:
#
D:
###
答案:
B
第7题(2.0分)
下列语句的结果是().
main()
{intj;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:
3,3
B:
3,4
C:
4,3
D:
4,4
答案:
D
第8题(2.0分)
设a=12,且a定义为整型变量.执行语句a+=a-=a*=a;后a的值为().
A:
12
B:
144
C:
0
D:
132
答案:
C
第9题(2.0分)
执行语句for(i=1;i++<4;);后变量i的值是().
A:
3
B:
4
C:
5
D:
不定
答案:
C
第10题(2.0分)
若有chara[80],*s=a;正确的输入语句是().
A:
scanf("%s",s);
B:
gets(*s);
C:
scanf("%c",s);
D:
getchar(s,80);
答案:
A
第11题(2.0分)
以下函数调用语句中实参的个数是().
func((e1,e2),(e3,e4,e5));
A:
2
B:
3
C:
5
D:
语法错误
答案:
A
第12题(2.0分)
下列运算符中优先级最高的是().
A:
<
B:
+
C:
&&
D:
!
=
答案:
B
第13题(2.0分)
inta[10];
给数组a的所有元素分别赋值为1、2、3、……的语句是().
A:
for(i=1;i<11;i++)a[i]=i;
B:
for(i=1;i<11;i++)a[i-1]=i;
C:
for(i=1;i<11;i++)a[i+1]=i;
D:
for(i=1;i<11;i++)a[0]=1;
答案:
B
第14题(2.0分)
若k为int型变量,则以下程序段的执行结果是().
k=-8567;printf("k=|%06D|\n");
A:
格式描述符不合法,输出无定值
B:
输出为k=|%06D|
C:
输出为|0-8567|
D:
输出为|-8567|
答案:
B
第15题(2.0分)
在C语言中,要求运算数必须是整型的运算符是().
A:
^
B:
%
C:
!
D:
>
答案:
B
第16题(2.0分)
下列运算符中是C语言关系运算符的是().
A:
~
B:
!
C:
&
D:
!
=
答案:
D
第17题(2.0分)
若有说明:
inta[][3]={1,2,3,4,5,6,7,8,9};则a数组第一维的大小是().
A:
2
B:
3
C:
4
D:
无确定值
答案:
B
四、程序填空共2题(共计12分)
第1题(6.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
以下程序的功能如(图1)。
-------------------------------------------------------*/
#include
#include
/***********SPACE***********/
doublef(【?
】)
{
/***********SPACE***********/
【?
】;
/***********SPACE***********/
if(【?
】)
y=2.0*x*x+3.0*x+4.0;
else
y=-2.0*x*x+3.0*x-4.0;
/***********SPACE***********/
【?
】;
}
main()
{
clrscr();
printf("%f\n",f(f(-1.0)+f(5.0)));
}
答案:
=======(答案1)=======
floatx
=========或=========
doublex
=======(答案2)=======
doubley
=======(答案3)=======
x<=2
=========或=========
2>=x
=======(答案4)=======
returny
=========或=========
return(y)
第2题(6.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
已定义一个含有30个元素的数组s,函数fun1的功能是按
顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
每五个元素求一个平均值,并将该值存放在数组w中。
程序中有4个空,填空使程序完整。
-------------------------------------------------------*/
floats[30],w[6];
fun1(floats[])
{
intk,i;
for(k=2,i=0;i<30;i++)
{
/***********SPACE***********/
【?
】
k+=2;
}
}
fun2(floats[],floatw[])
{
floatsum=0.0;
intk,i;
for(k=0,i=0;i<30;i++)
{
sum+=s[i];
/***********SPACE***********/
【?
】
{
w[k]=sum/5;
/***********SPACE***********/
【?
】
k++;
}
}
}
main()
{inti;
fun1(s);
/***********SPACE***********/
【?
】
for(i=0;i<30;i++)
{
if(i%5==0)printf("\n");
printf("%8.2f",s[i]);
}
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}
答案:
=======(答案1)=======
s[i]=k;
=========或=========
s[i]=(i+1)*2
=======(答案2)=======
if((i+1)%5==0)
=========或=========
if((i+1)/5*5==i+1)
=======(答案3)=======
sum=0;
=========或=========
sum=0.0;
=======(答案4)=======
fun2(s,w);
五、程序改错共1题(共计6分)
第1题(6.0分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
函数fun的功能是:
输出Fabonacci数列的前20项,要求变
量类型定义成浮点型,输出时只输出整数部分,输出项
数不得多于或少于20。
请改正程序中的4个错误,使它能得出正确的结果。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
fun()
{
inti;
floatf1=1,f2=1,f3;
/**********FOUND**********/
printf("%8d",f1);
/**********FOUND**********/
for(i=1;i<=20;i++)
{
f3=f1+f2;
/**********FOUND**********/
f2=f1;
/**********FOUND**********/
f3=f2;
printf("%8.0f",f1);
}
printf("\n");
}
main()
{
fun();
}
答案:
=======(答案1)=======
printf("%8.0f",f1);
=========或=========
printf("%f",f1);
=========或=========
printf("%8f",f1);
=======(答案2)=======
for(i=1;i<20;i++)
=========或=========
for(i=1;20>i;i++)
=========或=========
for(i=2;i<=20;i++)
=========或=========
for(i=2;20>=i;i++)
=========或=========
for(i=1;i<=19;i++)
=========或=========
for(i=1;19>=i;i++)
=======(答案3)=======
f1=f2;
=======(答案4)=======
f2=f3;
六、程序设计共3题(共计18分)
第1题(6.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
编写函数求1~100中奇数的平方和。
结果为166650。
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数
main和其它函数中的任何内容,仅在函
数的花括号中填入所编写的若干语句。
------------------------------------------------*/
#include"stdio.h"
floatsum(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
printf("sum=%f\n",sum(100));
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intn;
inti;
floato;
IN=fopen("in.dat","r");
if(IN==NULL)
{printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("WriteFileError");
}
fscanf(IN,"%d",&i);
o=sum(i);
fprintf(OUT,"%f\n",o);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
floats=0;
inti,j;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);
----------------------
第2题(6.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
编写函数fun,函数的功能是:
找出一批
正整数中的最大的偶数。
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数
main和其函数中的任何内容,仅在函数
fun的花括号中填入所编写的若干语句。
------------------------------------------------*/
#include"stdio.h"
intfun(inta[],intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
inta[]={1,2,9,24,35,18},k;
k=fun(a,6);
printf("max=%d\n",k);
yzj();
getch();
}
yzj()
{
FILE*IN,*OUT;
intiIN[10],iOUT,i,j;
IN=fopen("in.dat","r");
if(IN==NULL)
{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(j=0;j<10;j++)
{for(i=0;i<10;i++)
fscanf(IN,"%d",&iIN[i]);
iOUT=fun(iIN,10);}\
fprintf(OUT,"%d\n",iOUT);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti,amax=-1;
for(i=0;iif(a[i]%2==0)
if(a[i]>amax)amax=a[i];
returnamax;
----------------------
第3题(6.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
编写函数fun其功能是:
根据整型形参m,
计算如下公式的值:
y=1+1/3+1/5+1/7+...+1/(2m+1)
例如:
若m=9,则应输出:
2.133256
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数main
和其它函数中的任何内容,仅在函数fun的花
括号中填入所编写的若干语句。
------------------------------------------------*/
#include"stdio.h"
doublefun(intm)
{
/**********Program**********/
/**********End**********/
}
main()
{intn;
clrscr();
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
yzj();
getch();
}