春阅读程序 完善程序题Word格式文档下载.docx
《春阅读程序 完善程序题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《春阅读程序 完善程序题Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
j<
10;
j++){
if(j>
5){i+=2;
break;
if(j%2!
=0){
j+=2;
continue;
}
cout<
}
执行程序后输出的第一行是(8),第二行是(9)。
7.【程序】
#include<
intf(int&
x,int&
y)
x+=y;
y+=x;
return(x>
y?
x:
y);
intx=20,y=30,z;
z=f(x,y);
x<
y<
z<
endl;
z=f(y,x);
执行程序后输出的第一行是(10),第二行是(11)。
8.【程序】
intf1(intn)
if(n==1)return1;
elsereturnn*n+f1(n-1);
intf2(intn)
intmul=1;
if(n==1)mul=1;
elsemul=n*f2(n-1);
returnmul;
f1(3)<
f2(4)<
执行程序后输出的第一行是(12),第二行是(13)。
9.【程序】
(3分)
char*str(char*p1,char*p2)
char*p=p1;
while(*p)p++;
*p++='
'
while(*p++=*p2++);
returnp1;
chars1[200]={"
NanJing"
};
chars2[200]={"
is"
chars3[]={"
good"
str(s2,s3)<
str(s1,s2)<
s1<
!
s2<
s3<
执行程序后输出的第一行是(14),第二行是(15),第三行是(16)。
10.【程序】
classA{
intx,y;
public:
A(inta,intb){x=a;
y=b;
virtualvoidfun1(){cout<
"
x+y="
x+y<
\n"
classB:
publicA{
intm,n;
B(inta,intb,intc,intd):
A(c,d){m=a;
n=b;
voidfun1(){cout<
m*n="
m*n<
voidprint(A&
ra){ra.fun1();
voidmain()
Aa(10,20),*pa;
B*p;
p=newB(20,30,40,50);
p->
fun1();
pa=&
pa->
pa=p;
print(a);
deletep;
执行程序后输出的第二行是(17),第三行是(18)。
●完善程序题(共12分)
11.设有一条环形铁路,共有n个车站。
现有检查组去检查各个车站的服务质量,从第i个车站开始检查,每隔m(已检查过的车站不计算在内)个车站作为下一个要检查的车站序号,直到所有车站都检查完为止。
下列程序的功能是:
按以上要求计算出一次检查的车站序号,并输出计算的序号序列和检查循环的圈数。
例如:
共有20个车站,车站的序号依次为:
1,2,3~20;
若要求从第3个车站开始检查,间隔5个车站,则检查车站的顺序为:
3->
8->
13->
18->
4->
10->
16->
2->
11->
19->
7->
17->
9->
1->
15->
14->
20->
6->
12->
5。
函数check()中的count记录检查完所有车站时要绕环形铁路的圈数。
【程序】
(4分)
#defineN100
intcheck(intx[],inty[],intn,inti,intm)
intk=0,k1,count=0;
x[0]=n;
for(intj=1;
n;
j++)
x[j]=j;
y[k++]=i;
x[i]=-1;
j=i;
while((19))
{
k1=0;
while(k1<
m){
j++;
if(j>
=n){
count++;
j=(20);
}
if(x[j]!
=-1)k1++;
y[k++]=(21);
x[j]=-1;
returncount;
intA[N],B[N],n,m,i,j,k=0,num;
输入车站个数n,第一个开始检查的车站号i,间隔的车站数m:
cin>
>
n>
i>
m;
num=(22);
检查顺序:
for(j=0;
n-1;
B[j]<
->
全部检查完各个车站,共要循环的圈数为:
num<
12.以下程序的功能是求满足以下条件的所有三位数:
(1)该三位数是某一个二位数的平方;
(2)该三位数的个位数、十位数和百位数各不相同,即1到9这九个数字在该数中至多只允许出现一次。
要求每行输出五个数。
例如,满足以上条件的所有三位数有13个,分别为:
169196256289324
361529576625729
784841961
intf(inty)
inti,j,k;
i=y%10;
j=(23);
k=y/100;
if((24))
return0;
for(i=11;
31;
i++)
if((25))return1;
return0;
intx[22]={0},count=0;
for(inti=102;
987;
i++){
if(f(i)){
(26);
count++;
for(i=0;
count;
x[i]<
if((i+1)%5==0)cout<
共有:
count<
个三位数满足条件.\n"
13.在以下程序中,函数creat()根据键盘一次输入的整数建立一条单向无序链表,链表上的每一个结点包含一个整数;
函数sort()根据链表结点的数据按从小到大的顺序将链表调整为一条有序链表;
函数print()将链表上的整数依次输出;
函数del()将链表删除。
排序算法提示:
(1)初始时,使p指向链表的首结点;
(2)从p之后的所有结点中找出data值最小的结点;
(3)让p1指向该结点,并将p指向结点的data值与p1指向结点的data值进行交换,让p指向下一个结点;
(4)重复步骤
(2)(3),直至p指向链表的最后一个结点为止。
structNode{
intdata;
Node*next;
Node*sort(Node*head)
Node*p=head,*p1,*p2;
if(p==NULL)returnhead;
while(p->
next!
=NULL){
p1=p;
(27);
while(p2!
if(p2->
data<
p1->
data)(28);
p2=p2->
next;
if(p!
=p1){
intt;
t=p->
data;
p->
data=p1->
p1->
data=t;
p=p->
returnhead;
Node*creat(void)
Node*h=NULL,*p,*p1;
intdata=1;
while(data){
输入一个整数,0表示输入结束:
cin>
if(data){
p=newNode;
data=data;
next=NULL;
if(h==NULL)
h=p1=p;
else{
(29);
p1=p;
returnh;
voidprint(Node*p)
while(p){
p->
voiddel(Node*h)
Node*p;
while(h){
p=h;
(30);
deletep;
Node*head;
head=creat();
链表上的数据为:
print(head);
head=sort(head);
排序后链表上的数据为:
del(head);