tmp=a[k];
a[k]=a[i];
a[i]=tmp;
}
}
4.写出下列程序的运行结果。
#include
intx,y,z;
voidp(int*x,inty)
{--*x;
y++;
z=*x+y;
}
voidmain()
{x=5;y=2;z=0;
p(&x,y);
printf("%d,%d,%d#",x,y,z);
p(&y,x);
printf("%d,%d,%d",x,y,z);
}
5.写出下列程序的运行结果。
#include
intf(intm)
{staticintk=0;
ints=0;
for(;k<=m;k++)s++;
returns;
}
voidmain()
{ints1,s2;
s1=f(5);
s2=f(3);
printf("%d,%d\n",s1,s2);
}
6.写出下列程序的运行结果。
#include
#include
intpal(char*s)
{chars2[80];
inti,Len;
Len=strlen(s);
for(i=0;s[i];i++)
s2[Len-i-1]=s[i];
s2[Len]='\0';
if(strcmp(s,s2)==0)
return1;
else
return0;
}
voidmain()
{
if(pal("level")==1)
printf("Yes#");
else
printf("No$");
if(pal("adam")==1)
printf("Yes\n");
else
printf("No\n");
}
得分
二.程序填空题(本大题共15空,每空2分,共30分。
)
1.设数组a包括10个整型元素,下面的程序求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。
#include
voidmain()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(
(1);i<10;i++)
(2)
for(i=1;i<10;i++)
{printf(“%3d”,b[i]);
if((3))printf(“\n”);
}
}
(1)
A.
i=0
B.
i=1
C.
i=-1
D.
空缺
(2)
A.
b[i]=a[i]+a[i+1]
B.
b[i]=a[i-1]+a[i]
C.
b[i+1]=a[i]+a[i+1]
D.
b[i+1]=a[i-1]+a[i]
(3)
A.
i%3==0
B.
(i+1)%3==0
C.
i/3==0
D.
(i+1)/3==0
2.下面的程序输出1~n(50<=n<=100)之间的所有素数。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
#include
___(4)___
intIsPrime(int);
intmain()
{
inti,n;
printf("请输入一个整数(>=50且<=100):
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(_____(5)____)
printf("%5d",i);
}
}
intIsPrime(intm)
{
inti,k;
if(m<=1)
return0;
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(____(6)___)
return1;
else
return0;
}
(4)
A.
#include
B.
#include
C.
#include
D.
#include
(5)
A.
IsPrime(n)==1
B.
IsPrime(n)==0
C.
IsPrime(i)==1
D.
IsPrime(i)==0
(6)
A.
i!
=k
B.
i==m
C.
i==k
D.
i==k+1
3.下列程序读入时间数值,将其加n(n<60)秒后输出,时间格式为hh:
mm:
ss,当小时值等于24小时,从0开始计时。
#include
struct{inthh,mm,ss;}time;
voidmain()
{
scanf(“%d:
%d:
%d”,&time.hh,&time.mm,&time.ss);
scanf(“%d”,&n);
time.ss+=n;
if((7))
{(8);
time.ss-=60;
if(time.mm==60)
{time.hh++;time.mm=0;
if((9))time.hh=0;
}
}
printf(“%d:
%d:
%d”,time.hh,time.mm,time.ss);
}
(7)
A.
time.ss==60
B.
time.ss>60
C.
time.ss>=60
D.
time.ss<60
(8)
A.
time.mm++
B.
time.mm--
C.
time.hh++
D.
time.hh--
(9)
A.
time.hh>24
B.
time.hh<24
C.
time.hh=24
D.
time.hh==24
4.下面的程序段A与B功能相同,都是用于计算Fibonacci数列的第n项的值。
程序段A:
intf(intn)
{
intt0,t1,t;
t0=0;t1=1;t=n;
while(n>1)
{t=t0+t1;
t0=t1;
(10);
n--;
}
returnt;
}
程序段B:
intf(intn)
{
if((11))
returnn;
else
return(12);
}
(10)
A.
t1=t0
B.
t1=t
C.
t1=t-t0
D.
t1=t-t1
(11)
A.
n<0
B.
n<=0
C.
n<1
D.
n<=1
(12)
A.
n+f(n-1)
B.
n+f(n-2)
C.
f(n-1)+f(n-2)
D.
f(n-1)+n-2
5.下面的程序输入若干学生的成绩(到输入-1为止),并建立一个链表,遍历链表,统计并输出不及格的学生个数及其成绩。
#include
#include
#defineLENsizeof(structline)
#defineNULL0
structline{
intnum;
structline*next;
};
voidmain()
{structline*p1,*tail,*head;
intk,sum=0;
p1=head=tail=NULL;
scanf("%d",&k);
while(k!
=-1){
p1=(structline*)malloc(LEN);
p1->num=k;
p1->next=NULL;
if(head==0)head=p1;
else(13);
(14);
scanf("%d",&k);
}
for(p1=head;(15);p1=p1->next)
if(p1->num<60)
{printf(“%d\n”,p1->num);
sum++;
}
printf("不及格人数为:
%d\n",sum);
}
(13)
A.
tail->next=p1
B.
p1->next=tail
C.
tail=p1->next
D.
p1=tail->next
(14)
A.
p1=tail
B.
tail=p1
C.
p1->next=tail
D.
tail->next=p1
(15)
A.
tail!
=NULL
B.
tail->next!
=NULL
C.
p1!
=NULL
D.
p1->next!
=NULL
得分
三.编程题(本大题共4题,每题10分,共40分。
)
1.编写程序,输入实数x值,按下式计算并输出y的值
{
+sinxx>10
y=0x=10
2x3+6x<10
2.输入2个正整数a(0例如,输入2和3,则要求计算2+22+222,应该输出246。
请编写程序完成此功能,其中计算n个a的值要求用自定义函数完成,函数格式为:
longn_a(inta,intn),例如n_a(2,3)的返回值应该是222。
3.输入一个整数n(n<50),再输入n个整数存入一个数组中,再输入一个整数x,在数组中查找X,输出找到的第一个x的数组下标位置,否则输出“NotFound!
”。
4.文本文件file.txt中有若干行字符,请编写程序,读出文件中的字符,统计文件中数字字符的个数以及文件共有几行。
年级:
_____________专业:
_____________________班级:
_________________学号:
_______________姓名:
__________________
…………………………………………………………..装………………….订…………………..线………………………………………………………
诚信应考考出水平考出风格
浙江大学城市学院
2006—2007学年第二学期期末考试答题卷
《程序设计Ⅱ》
开课单位:
计算分院;考试形式:
闭卷;考试时间:
2007年7月13日;
所需时间:
120分钟
题序
一
二
三
总分
1
2
3
4
得分
评卷人
得分
一.程序阅读题(本大题共6题,每题5分,共30分。
)
把程序的运行结果填入相应的题号中。
1.
2.
3.
4.
5.
6.
得分
二.程序填空题(本大题共15空,每空2分,共30分。
)
把正确的选择项填入相应的题号中。
⑴
⑵
⑶
⑷
⑸
⑹
⑺
⑻
⑼
⑽
⑾
⑿
⒀
⒁
⒂
得分
三.编程题(本大题共4题,每题10分,共40分。
)
1.
得分
2.
得分
3.
得分
4.