C语言期末考试题8Word下载.docx
《C语言期末考试题8Word下载.docx》由会员分享,可在线阅读,更多相关《C语言期末考试题8Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言期末考试题8Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/e14cb64f-f5f2-4abf-8197-11fed7ee7f84/e14cb64f-f5f2-4abf-8197-11fed7ee7f841.gif)
给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.
#include<
stdio.h>
voidmain()
/*Beginning*/
{intr;
floats;
scanf("
%d"
&
r);
s=p*r*r;
printf("
s=%f\n"
s);
}
出错的原因是(D).
注释语句书写位置错误
存放圆半径的变量r不应该定义为整型
输出语句中格式描述符非法
计算圆面积的赋值语句中使用了非法变量
第4题(2.0分)
"
\\\″ABC\″\\″的长度是(B).
11
7
5
3
第5题(2.0分)
已知inti,a;
执行语句i=(a=2*3,a*5),a+6;
后,变量i的值是(C).
6
12
30
36
第6题(2.0分)
有以下程序:
{ints=0,a=1,n;
&
n);
do{
s+=1;
a=a–2;
}while(a!
=n);
%d\n"
s);
若要使程序的输出值为2,则应该从键盘输入给n的值是(B).
-1
-3
-5
第7题(2.0分)
要求计算s=1+1/2+1/3+…+1/10,程序为:
{intn;
s=1.0;
for(n=10;
n>
1;
n––)s=s+1/n;
%6.4f\n"
程序运行后输出结果错误,导致错误结果的程序行是(C).
s=1.0;
for(n=10;
n––)
s=s+1/n;
printf("
第8题(2.0分)
{inti,j,m=55;
for(i=1;
i<
=3;
i++)
for(j=3;
j<
=i;
j++)
m=m%j;
m);
程序的运行结果是(B)
1
2
第9题(2.0分)
第10题(2.0分)
设变量已正确定义并赋值,以下正确的表达式是(C).
x=y*5=x+z
int(15.8%5)
x=y+z+5,++y
x=25%5.0
第11题(2.0分)
以下程序执行后,sum的值是(C).
{inti,sum;
6;
i++)sum+=i;
sum);
15
14
不确定
第12题(2.0分)
运行以下程序后,如果从键盘上输入china#〈回车〉,则输出结果是(D).
{intv1=0,v2=0;
charch;
while((ch=getchar())!
#'
)
switch(ch)
{case'
:
case'
h'
o'
v2++;
default:
v1++;
}
%d,%d\n"
v1,v2);
2,0
5,0
5,5
5,2
第13题(2.0分)
有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是(A).
无限次
有语法错误,不能执行
1次也不执行
执行1次
第14题(2.0分)
执行以下程序后,输出的结果是D().
{inty=10;
y––;
}while(––y);
y––);
8
第15题(2.0分)
以下能正确定义一维数组的选项是(B).
intnum[];
#defineN100intnum[N];
intnum[0..100];
intN=100;
intnum[N];
第16题(2.0分)
以下程序的输出结果是(A).
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
3;
for(j=0;
j++)s+=a[i][j];
18
19
20
21
第17题(2.0分)C
以下错误的定义语句是().
intx[][3]={{0},{1},{1,2,3}};
intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
intx[][3]={1,2,3,4};
第18题(2.0分)
以下对一维数组a的正确定义是(D).
inta(10)
intn=10,a[n];
intn;
scanf("
inta[n];
#defineSIZE10
inta[SIZE]
第19题(2.0分)
{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;
12;
i++)c[s[i]]++;
5;
i++)printf("
c[i]);
\n"
);
程序的运行结果是(C).
1234
2344
4332
1123
第20题(2.0分)
fun(intx,inty)
{
return(x+y);
main()
{
inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
执行后的输出结果是B
9
第21题(2.0分)
voidfun(inta,intb,intc)
a=456;
b=567;
c=678;
intx=10,y=20,z=30;
fun(x,y,z);
%d,%d,%d"
x,y,z);
运行后输出结果是B
30,20,10
10,20,30
456,567,678
678,567,456
第22题(2.0分)
inta=1;
intf(intc)
staticinta=2;
c=c+1;
return(a++)+c;
intk=0,i;
for(i=0;
i<
2;
i++){inta=3;
k+=f(a);
k+=a;
k);
程序运行后的输出结果是A
16
17
第23题(2.0分)
intfun(intx[],intn)
{staticintsum=0,i;
n;
i++)sum+=x[i];
returnsum;
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
45
50
60
55
第24题(2.0分)
若有以下定义和语句:
ints[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是(C).
ps+1
*(ps+3)
ps[0][2]
*(ps+1)+3
第25题(2.0分)
#include<
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t–'
+'
;
s++;
{charstr1[100]="
abcddfefdbd"
c='
d'
ss(str1,c);
%s\n"
str1);
程序运行后的输出结果是(B).
ABCDDEFEDBD
abcDDfefDbD
abcAAfefAbA
Abcddfefdbd
第26题(2.0分)
以下程序运行后,输出结果是(C).
string.h>
voidfun(char*w,intn)
{chart,*s1,*s2;
s1=w;
s2=w+n–1;
while(s1<
s2)
{t=*s1++;
*s1=*s2––;
*s2=t;
{char*p;
p="
1234567"
fun(p,strlen(p));
puts(p);
1234567
7654321
1711717
7177171
第27题(2.0分)
语句printf("
a\bre\'
hi\'
y\\\bou\n"
的输出结果是(C).
y\\\bou
y\bou
re'
hi'
you
abre'
第28题(2.0分)
以下程序的输出结果是(C).
#include"
stdio.h"
#defineM(x,y)x%y
main()
{inta,m=12,n=100;
a=M(n,m);
a––);
4
第29题(2.0分)
不合法的main()函数命令行参数表示形式是(C).
main(inta,char*c[])
main(intarc,char**arv)
main(intargc,char*argv)
main(intargv,char*argc[])
第30题(2.0分)
若有说明:
inti,j=2,*p=&
i;
则能完成i=j赋值功能的语句是(B).
i=*p;
*p=*&
j;
i=&
i=**p;
二、程序填空共1题(共计10分)
第1题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
输入3个数a,b,c,按从小到大的顺序输出。
-------------------------------------------------------*/
voidswap(int*p1,int*p2);
intn1,n2,n3;
int*pointer1,*pointer2,*pointer3;
pleaseinput3number:
n1,n2,n3:
n1,&
n2,&
n3);
pointer1=&
n1;
pointer2=&
n2;
pointer3=&
n3;
/***********SPACE***********/
if(【?
】)swap(pointer1,pointer2);
】)swap(pointer1,pointer3);
】)swap(pointer2,pointer3);
thesortednumbersare:
%d,%d,%d\n"
n1,n2,n3);
/***********SPACE***********/
voidswap(【?
】)
int*p1,*p2;
intp;
p=*p1;
*p1=*p2;
*p2=p;
三、程序改错共1题(共计10分)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
求出两个非零正整数的最大公约数,并作为函数值返回。
例如:
若给num1和num2分别输入49和21,则输出的最大公约数为7。
------------------------------------------------------*/
intfun(inta,intb)
intr,t;
if(a<
b)
{
t=a;
/**********FOUND**********/
b=a;
a=t;
r=a%b;
while(r!
=0)
a=b;
b=r;
r=a/b;
returna;
intnum1,num2,a;
%d%d"
num1,&
num2);
a=fun(num1,num2);
themaximumcommondivisoris%d\n\n"
a);
四、程序设计共1题(共计20分)
第1题(20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
编写函数判断一个整数m的各位数字之和能否被7整除,
可以被7整除则返回1,否则返回0。
调用该函数找出
100~200之间满足条件的所有数。
------------------------------------------------*/
intsub(intm)
/**********Program**********/
/**********End**********/
inti;
for(i=100;
=200;
if(sub(i)==1)
%4d"
i);
yzj();
getch();
yzj()
FILE*IN,*OUT;
intn;
inti[10];
into;
IN=fopen("
in.dat"
"
r"
if(IN==NULL)
ReadFileError"
OUT=fopen("
out.dat"
w"
if(OUT==NULL)
WriteFileError"
for(n=0;
n<
10;
n++)
{
fscanf(IN,"
i[n]);
o=sub(i[n]);
fprintf(OUT,"
o);
fclose(IN);
fclose(OUT);