河海大学级C语言期终考试试题机电学院文档格式.docx
《河海大学级C语言期终考试试题机电学院文档格式.docx》由会员分享,可在线阅读,更多相关《河海大学级C语言期终考试试题机电学院文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
0||x>
=5)
7.下面程序段执行后
inti=10;
floatx;
x=5/i;
x的值为__C____
A.0.5B.0C.0.0D.1.0
8.设有说明“inta=3,b=5,m;
”,则执行表达式m=a<
=3&
&
a+b<
8后,m的值为_____C_。
A.trueB.falseC.0D.1
9.下面程序段执行后
intx=5,y=7,z=8;
z+=x++||y++||++z
x,y,z的值分别是__A___。
A.6、7、9B.6、8、10C.6、8、8D.6、8、1
10.若执行以下程序时从键盘上输入9,则输出结果是_B____。
A.11B.10C.9D.8
main()
{intn;
scanf("
%d"
&
n);
if(n++<
10)printf("
%d\n"
n);
elseprintf("
n--);
}
11.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是_C_____
A.B.
switch(a+b);
switch(a*a+b*b)
{case1:
y=a+b;
break;
{case3:
case0:
y=a-b;
case1:
break;
}case3:
y=b-a,break;
}
C.D.
switchaswitch(a-b)
{casec1:
break;
{default:
y=a*b;
break
casec2:
x=a*d;
case3:
case4:
x=a+b;
default:
case10:
case11:
}}
12.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是__A___
A.无限次B.有语法错,不能执行
C.一次也不执行D.执行1次
13.以下程序执行后sum的值是__C_____
A.15B.14C.不确定D.0
{inti,sum;
for(i=1;
i<
6;
i++)sum+=i;
printf("
sum);
14.有以下程序段
intx=3
do{
x-=2);
}while(!
(--x));
其输出结果是_____C___
A.1B.30C.1–2D.死循环
15.若变量c为char类型,能正确判断出c为小写字母的表达式是D_____
A.'
a'
<
=c<
='
z'
B.(c>
)||(c<
)
C.('
=c)and('
>
=c)D.(c>
)&
(c<
16.以下程序的输出结果是__C_____
A.0B.29C.31D.无定值
voidfun(intx,inty,intz)
{
z=x*x+y*y;
{inta=31;
fun(5,2,a);
a);
17.下列程序段的输出结果是__A___?
?
___
A.2143B.1212C.1234D.2112
voidfun(int*x,int*y)
%d%d"
*x,*y);
*x=3;
*y=4;
{intx=1,y=2;
fun(&
y,&
x);
%d%d"
x,y);
18.下列程序的输出结果是_C______
A.非法B.a[4]的地址C.5D.3
main()
{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
*--p);
19.下列程序的运行结果是____B_____
A.63B.36C.编译出错D.00
voidfun(int*a,int*b)
{int*k;
k=a;
a=b;
b=k;
{inta=3,b=6,*x=&
a,*y=&
b;
fun(x,y);
a,b);
20.下面程序的输出结果是_____C______
A.0B.1C.10D.9
{inta[]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
*p+9);
21.设有以下说明语句
struct_ex{
intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是____B___
A.struct结构体类型的关键字B.example是结构体类型名
C.x,y,z都是结构体成员名D.struct_ex是结构体类型
22.以下程序的输出结果是___B______
A.20B.21C.22D.23
inti,k,a[10],p[3];
k=5;
for(i=0;
10;
i++)a[i]=i;
3;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
k);
23.以下程序的输出结果是________C__
A.1,5,9B.1,4,7C.3,5,7D.3,6,9
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;
i++)printf("
%d,"
x[i][2-i]);
24.以下程序的输出结果是____A______
A.18B.19C.20D.21
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
i++)
for(j=0;
j<
=i;
j++)
s+=a[i][j];
s);
25.当执行下面的程序时,如果输入ABC,则输出结果是__A____
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
#include"
stdio.h"
string.h"
{charss[10]="
12345"
;
gets(ss);
strcat(ss,"
6789"
);
%s\n"
ss);
26.以下程序的输出结果是__A____
A.1B.2C.3D.4
longfun(intn)
{longs;
if(n==1||n==2)
s=2;
else
s=n-fun(n-1);
returns;
fun(3));
27.以下程序的输出结果是_B_____
A.16B.2C.9D.1
#defineSQR(X)X*X
inta=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("
d\n"
28.若定义了以下函数:
voidf(......)
{......
*p=(double*)malloc(10*sizeof(double));
......
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是__C____
A.double*pB.float**pC.double**pD.float*p
29.以下程序的输出是(C)
A.10B.11C.51D.60
struct_st{
intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
struct_staa[4]={50,&
dt[0],60,&
dt[0],};
{p=aa;
++(p->
x));
30.while(!
x)中的(!
x)与下面条件__A_________等价
A.x==0B.x!
=1C.x==1D.x!
=0
二、读程序,写结果(20分,每题2分)
1.下面程序的输出结果是___fisNOT1.0__________
voidmain()
{
floatf=0.0;
inti;
for(i=0;
i++)
f+=0.1;
if(f==1.0)
fis1.0\n"
else
fisNOT1.0\n"
2.下列程序的输出结果是___*#*#*#$_________________
voidmain(void)
{inti;
for(i=1;
i<
=5;
i++)
{if(i%2)printf(“*”);
elsecontinue;
printf(“#”);
$\n"
3.下列程序段的输出结果是__5359求质数________________________
voidmain()
for(t=50,k=0;
t<
=60;
t++)
{
for(i=2;
t;
i++)
if(t%i==0)break;
if(i==t)
printf("
%5d"
t);
}
4.下列程序的输出是____123______?
?
_________
voidincrement(void)
{staticintx=0;
x++;
%d\t"
x);
{increment();
increment();
5.下列程序的输出结果是_____24最大公约数______________
intxy(inta,intb)
{intr,t;
if(a<
b){
t=a;
b=t;
r=a%b;
while(r!
=0)
a=b;
b=r;
returnb;
inta=72,b=96;
xy(a,b));
6.下列程序的输出结果是43535______倒续__
#include<
stdio.h>
intx=53534,r;
while(x!
r=x%10;
x=x/10;
printf(“%d”,r);
7.写出下面程序的运行结果____75求最大________
voidmain()
intm,a[]={25,64,38,40,75,66,38,54};
m=a[0];
for(inti=1;
8;
i++)
if(a[i]>
m)
m=a[i];
m);
8.写出下面程序的运行结果________1,1,20____行列值_____
inta[3][4]={{7,5,14,3},{6,20,7,8},{14,6,9,18}};
inti,j,r,c,m;
m=a[0][0];
for(i=0;
i++)
for(j=0;
j++)
if(a[i][j]>
m)
m=a[i][j];
r=i;
c=j;
}
printf("
%d,%d,%d\n"
r,c,m);
9.写出下列程序的运行结果____123456789排序____________
voidxyz(inta[],intn)
{inti,j,key;
=n-1;
{key=a[i];
for(j=i-1;
j>
=0;
j--)
if(key<
a[j])
a[j+1]=a[j];
//将a[j]向后移动一个位置
else
break;
}
a[j+1]=key;
inta[]={5,2,9,1,3,4,6,8,7};
inti,n=9;
xyz(a,n);
n;
%4d"
a[i]);
\n"
10.下面程序的输出结果是___65423__________
voidfun(intn)
{
if(n==0)return;
else{
%d"
n%10);
fun(n/10);
inta=32456;
fun(a);
三、完善程序(10分,每空2分)
1.下列程序的功能是用牛顿迭代法求实数a的平方根,迭代公式是
.
doublemysqrt(doublea)
{doublex1,x2,eps=1e-5;
x2=a/2;
do{
x1=x2;
x2=0.5*(x1+a/x1);
}while(___[1]x1>
eps________);
returnx2;
2.链表算法
typedefstruct_lnode
intdata;
//数据元素,可以是任何类型,这里我们使用整型数据元素
struct_lnode*next;
//指向后继节点的指针
}Lnode;
/*用头插法创建链表.用值e构造节点s,始终将节点s插入到首节点前面,并且将first指针指向新的首节点*/
Lnode*list_create(Lnode*first,inte)
Lnode*q,*s;
s=(Lnode*)malloc(sizeof(Lnode));
//给新结点分配空间,构造新节点
s->
data=e;
next=0;
if(first==NULL)//空链表
first=s;
else
{
__[2]___s->
next=first____________;
__[3]____first=s,p++___________;
returnfirst;
/*在first所表示的链表中查找值为e的节点,如果找到,返回该节点,否则,返回空指针*/
Lnode*list_find(Lnode*first,inte)
Lnode*p;
p=first;
while(p)
if(p->
data==e)
returnp;
_[4]___________;
returnNULL;
3.下面的程序实现字符串拷贝,即将字符串src中的内容拷贝到字符串desc中,返回字符串desc。
要求desc必须已经分配空间,并且空间足够大以便容纳src的内容。
char*StrCopy(char*desc,constchar*src)
{char*p;
p=desc;
while(_[5]___________);
returnp;