20学年第二学期c语言期末考题及解答 4Word格式.docx
《20学年第二学期c语言期末考题及解答 4Word格式.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及解答 4Word格式.docx(15页珍藏版)》请在冰点文库上搜索。
22<
33<
B)10.0,22.0,33.0<
C)10.0<
22.033.0<
D)1022<
5、main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
%d,%d,%d,%d\n"
a,b,c,d);
程序输出是____
A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错
6、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假的表达式是______。
A)x>
=1&
&
x<
=10&
x>
=200&
=210
B)x>
=1||x<
=10||x>
=200||x<
C)x>
D)x>
7、若w=1,x=2,y=3,z=4,则条件表达式w<
x?
w:
y<
z?
y:
z的值是______。
A)4B)3C)2D)1
8、对字符数组s赋值,不合法的是______。
A)chars[]="
Beijing"
;
B)chars[20]={"
beijing"
};
C)chars[20];
s="
D)chars[20]={'
B'
'
e'
i'
j'
n'
g'
9、若有语句int*point,a=4;
和point=&
a;
下面均代表地址的一组选项是______。
A)a,point,*&
aB)&
*a,&
a,*point
C)*&
point,*point,&
aD)&
*point,point
10、以下程序的运行结果是______。
{
intm=5;
if(m++>
5)
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);
A)4B)5C)6D)7
11、下面程序的运行结果是______。
#include<
stdio.h>
{inty=10;
do{
y--;
}while(--y);
printf("
y--);
A)-1B)1C)8D)0
12、已有以下数组定义和func函数调用语句,则func函数原形的正确声明为_______。
{inta[3][4];
……
func(a);
A)func(intarray[][6]);
B)func(intarray[3][]);
C)func(intarray[][4]);
D)func(intarray[2][5]);
13、已知:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是______。
A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2])
14、下面程序的输出结果是______。
main()
{inti,j,x=0;
for(i=0;
i<
2;
i++)
{x++;
for(j=0;
j<
-3;
j++)
{
if(j%2)continue;
x++;
x=%d\n"
x);
A)x=4B)x=8C)x=6D)x=12
15、下面程序的输出是____。
{intx=1,y=0,a=0,b=0;
switch(x)
case1:
switch(y)
{case0:
a++;
break;
b++;
case2:
b++;
a=%d,b=%d\n"
a,b);
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
16、已知:
inta[]={1,2,3,4},y,*p=a;
则执行语句
y=(*++p)--;
之后,数组a各元素的值变为_____。
A)0,1,3,4B)1,1,3,4C)1,2,2,4D)1,2,3,3
17、给出以下定义:
charx[]="
abcdefg"
;
chary[]={'
a'
b'
c'
d'
f'
};
则正确的叙述为_____。
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
18已知函数的调用形式:
fread(buffer,size,count,fp);
其中buffer代表的是____
A)一个整型变量,代表要读入的数据项总数
B)一个文件指针,指向要读的文件
C)一个指针,指向要读入数据的存放地址
D)一个存储区,存放要读的数据项
19以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____
{int*p,*q,a,b;
p=&
inputa:
"
);
scanf("
%d"
*p);
}
A)*p表示的是变量p的地址
B)*p表示的是变量a的值,不是变量a的地址
C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
20若有说明:
char*language[]={"
FORTRAN"
"
BASIC"
PASCAL"
JAVA"
C"
则表达式*language[1]>
*language[3]比较的是____
A)字符F和字符PB)字符串BAS1C和字符串JAVA
C)字符B和字符JD)字符串FORTRAN和字符串PASCAL
二、填空题(每空2分,共30分)
1、若有定义:
inte=1,f=4,g=2;
floatm=10.5n=4.0k;
则执行赋值表达式
k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_____。
2、下面程序的输出是_______。
{intx=3,y=2,z=0;
if(x=y+z)printf("
**"
elseprintf("
##"
3、假设已有定义doubles,d;
intk,n;
。
有以下程序段:
s=1.0;
for(k=1;
k<
=n;
k++)
s=s+1.0/(k*(k+1));
%f\n"
s);
填空完成下述程序,使之与上述程序的功能完全相同。
s=0.0;
①______;
k=0;
do{s=s+d;
②______;
d=1.0/(k*(k+1));
}while(③______);
4、下面程序段的运行结果是______。
inti=1;
s=3;
do{s+=i++;
if(s%7==0)continue;
else++i;
}while(s<
15);
i);
5、设定义语句“staticinta[3][4]={{1},{2},{3}};
”则a[1][1]值为①____,a[2][1]的值为②____。
6、下面的函数是一个求阶乘的递归调用函数。
facto(intn)
{if(n==1)①______________;
elsereturn(②_____________);
7、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
#include<
{chars[80],d[80];
inti,j;
gets(s);
for(i=j=0;
s[i]!
=‘\0’;
i++)
if()
{d[j]=s[i];
j++;
d[j]=‘\0’;
puts(d);
8、下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"
ABCDE"
,反序为"
EDCBA"
voidinvent(char*str,intn)
{chart;
t=*str;
*str=*(str+n-1);
*(str+n-1)=t;
if(n>
2)invent(____________,n-2);
9下面程序的功能是显示具有n个元素的数组s中的最大元素。
#defineN20
{inti,a[N];
N;
a[i]);
①______________);
intfmax(ints[],intn)
{intk,p;
for(p=0,k=p;
p<
n;
p++)
if(s[p]>
s[k])②_____________;
return(k);
10下面程序通过指向整型的指针将数组a[3][4]的内容按3行×
4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。
{inti,j;
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;
3;
i++)
{for(j=0;
4;
j++)
%4d"
____________);
三、程序编写题(30分,见答题纸)
答题纸
一、选择题(40分)
题号
1
2
3
4
5
6
7
8
9
10
答案
11
12
13
14
15
16
17
18
19
20
二、填空题(30分)
1.
2.
3.①②③
4.
5.①②
6.①②
7.
8.
9.①②
10.
三、程序编写题(共30分)
1、求这样一个三位数,该三位数等于其每位数字的阶乘之和,即:
abc=a!
+b!
+c!
编写函数intfac(intn),它的功能是求出n的阶乘,在主函数中调用该函数完成题目。
(15分)
2、编写函数voidfun(intx,int*pp,int*n)。
它的功能是:
求出整数x的偶数因子,并按照从小到大的顺序放在pp所指的整数数组aa[1000]中,这些因子的个数通过形参n返回。
在主函数中输入x,调用子函数fun,输出x的偶数因子和偶数因子个数。
(假如x为30,则有因子:
1,2,3,5,6,10,15,30,其中有4个数为偶数因子,它们是2,6,10,30)(15分)
输入范例:
pleaseenteranintegernumber:
输出范例:
Thefactorsareasfollowing:
Thenumberoffactorsis:
2010-2011学年第二学期期末
《C语言程序设计》(A卷)标准答案和评分标准
CBCBCCDCDCDCAAABCCBC
1.13.7
2.**
3.①d=1.0②k++③k<
=n
4.7
5.①0②0
6.①return1②n*facto(n-1)
7.s[i]>
=’0’&
s[i]<
=’9’
8.str+1
9.①a[fmax(a,N)]②k=p
10.*(p+4*i+j)
四、编程序题(共30分)(格式举例)
1、
inta[5],i,j,k;
intf(intm);
for(i=100;
1000;
{
for(j=0,k=1000;
k>
=10;
a[j]=(i%k)/(k/10);
k/=10;
}
if(f(a[0])+f(a[1])+f(a[2])==i)
printf("
Thenumberis:
%d"
intf(intm)
inti=0,t=1;
while(++i<
=m)t*=i;
return(t);
或者
intfac(int);
inti,j,k,n=0,x[50];
for(i=1;
10;
{for(j=0;
for(k=1;
{x[n]=i*100+j*10+k;
if(fac(i)+fac(j)+fac(k)==x[n])n++;
elsex[n]=0;
if(n>
0)for(i=0;
n;
i++)printf("
x[i]);
elseprintf("
Thereisnosuchanumber!
\n"
intfac(intn)
{if(n<
1)return1;
elsereturnn*fac(n-1);
2、
voidfun(intx,intpp[],int*n)
inti,j=0;
for(i=2;
=x;
i=i+2)
{if(x%i==0)pp[j++]=i;
*n=j;
intx,aa[1000],n,i;
\npleaseenteranintegernumber:
\n:
x);
fun(x,aa,&
n);
for(i=0;
printf("
Thefactoris:
aa[i]);
Thenumberoffactoris:
n);