:
a;i++)fun();
}
执行程序后输出的第一行是___(6)___,第二行是___(7)___。
6.[程序](2分_______)
#include
voidmain(void)
{
inti=1,j=1;
for(:
j<10;j++){
if(j>5){i+=2;break;}
if(j%2!
=0){
j+=2;
continue;
}
cout<
}
cout<
}
执行程序后输出的第一行是___(8)___,第二行是___(9)___.
7.[程序](2分)
#include
intf(int&x,int&y)
{
x+=y;
y+=x;
return(x>y?
x:
y);
}
voidmain(void)
{
intx=20,y=30,z;
z=f(x,y):
cout<z=f(y,x):
cout<}
执行程序后输出的第一行是___(10)___,第二行是___(11)___.
8.[程序](2分)
2011春江苏省计算机二级VC++试题
11:
21:
32]
#include
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;
}
voidmain(void)
{
cout<cout<}
执行程序后输出的第一行是___(12)___,第二行是___(13)___
9.[程序](3分)
#include
char*str(char*p1,char*p2)
{
char*p=p1;
while(*p)p++;
*p++=’’;
while(*p++=*p2++);
*p++=’’;
returnp1;
}
voidmain(void)
{
chars1[200]={“NanJin”};
chars2[200]={“is”};
chars3[]={“good”};
cout<cout<cout<’<’<执行程序后输出的第一行是___(14)___,第二行是___(15)____,第三行是___(16)___
1O.[程序](2分)
#include
classA{
intx,y;
public:
A(inta,intb){x=a;y=b;}
virtualvoidfunl(){cout<<“x+y=“<};
classB:
publicA{
intm,n;
public:
B(inta,intb,intc,intd):
A(c,d){m=a;n=b;}
voidfun1(){cout<<“m*n=”<};
voidprint(A&ra){ra.fun1();}
voidmain(void)
{
Aa(10,20),*pa;
2011春江苏省计算机二级VC++试题
11:
21:
32]
B*p;
p=newB(20,30,40,50);
p->fun1();
pa=&a;pa->fun1();
pa=p;pa->fun1();
print(a);
deletep;
}
执行程序后输出的第二行是___(17)____,第三行是___(18)___
完善程序题,共12分
11.设有一条环形铁路,共有n个车站,现有检查组去检查每个车站的服务质量,从第i个车站开始检查,每隔m(已检查过的车站不计算在内)个车站作为下一个要检查的车站,直到所有车站
都检查完为止。
下面的程序功能是:
按以上要求计算出依次检查的车站序号,并输出计算的序号序列和检查循环的圈数。
例如,假设共有20个车站,车站的序号依次为:
1,2,3,…,19,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分)
#include
#defineN100
intcheck(intx[],inty[],intn,inti,intm)//x存放车站序号,y存放依次检查的车站
{//n总车站数,i开始检查的车站号,m要间隔的车站数
intk=O,k1,count=0;//k记录已检查车站的个数
x[O]=n;//初始化数组x,x[0]记录最后一个车站号
for(intj=1;jy[k++]=i:
//i为第一个检查的车站
x[i]=-1:
//当“i]为一1时,表示该车站已检查
j=i;
while(___(19)___){
k1=O;//用k1累加间隔车站个数
while(k1j++;
if(j>=n){
.count++;
j=___(20)___;
}
if(x[j]!
=-1)k1++;
}
y[k++]=___(21)___;
x[j]=-1;
}
returncount;
}
voidmain(void)
{
intA[N],B[N],n,m,i,j,k=O,k1,num;//A记录车站序号,B记录检查顺序
cout<<”输入车站个数n,第一个开始检查的车站号i,间隔的车站数m:
”;
cin>>n>>i>>m;
num=___(22)___;
cout<<“检查顺序:
”<for(j=O;jcout<“;
cout<
cout<<“全部检查完各个车站,共要循环的圈数为:
”<}
12.以下程序的功能是:
求满足以下条件的所有三位数:
(1)该三位数是某一个二位数的平方:
(2)该三位数的个位数、十位数和百位数各不相同,即l到9这九个数字在该数中至多只允许出现
一次.要求每行输出五个数。
例如,满足以上条件的所有三位数有13个,分别为:
169196256289324
361529576625729
2011春江苏省计算机二级VC++试题
11:
21:
32]
784841961
[程序](4分)
#include
intf(inty)//y若满足条件,返回1:
否则返回O
{
inti,j,k;
i=y%10;//求个位数
j=___(23)___;//求十位数
k=y/100;
if(___(24)___)//判是否有相同的数字
return0;
for(i=11:
i<=31:
i++)//因32.32=1024,已超过三位数
if(___(25)___)return1;
return0;
}
voidmain(void)
{
intx[22]={0},count=O;
for(inti=102:
i<987;i++){
if(f(i)){
___(26)___;
count++;
}
}
for(i=0;icout<if((i+1)%5==0)cout<<’\n’;
}
cout<<’\n’<<“共有:
”<}
13.在以下程序中,函数create()根据键盘依次输入的整数建立一条单向无序链表,链表上的每一个结点包含一个整数;函数sort()根据链表结点的数据按从小到大的顺序将链表调整为一条
有序链表;函数print()将链表上的整数依次输出;函数del()将链表删除。
排序算法提示:
(1)初始时,使P指向链表的首结点,
(2)从P之后的所有结点中找出data值最小的结点。
(3)让p1指向该结点,并将P指向结点的data值与pl指向结点的data值进行交换,让P指向
下一个结点,(4)重复步骤
(2)和(3),直至P指向链表的最后一个结点为止·
[程序](4分)
#include
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!
=NULL){
if(p2->datadata)___(28)___;
p2=p2->next;
}
if(p!
=p1){
intt;
t=p->data;
p->data=p1->data;
p1->data=t;
}
2011春江苏省计算机二级VC++试题
11:
21:
32]
p=p->next;
}
returnhead;
}
Node*creat(void)
{
Node*h=NULL,*p,*p1;
intdata=1;
while(data){
cout<<“输入一个整数,0表示输入结束:
”;
cin>>data;
if(data){
p=newNode:
p->data=data;
p->next=NULL;
if(h==NULL)
h=p1=p;
else{
___(29)___;
p1=p;
}
}
}
returnh;
}
voidprint(Node*p)
{
while(p){
cout<data<<’\t’;
p=p->next;
}
cout<<’\n’;
}
voiddel(Node*h)
{
Node*p;
while(h){
p=h;
___(30)___
deletep;
)
}
voidmain(void)
(
Node*head;
head=creat();
cout<<“链表上的数据为:
”;
print(head);
head=sort(head);
cout<<“排序后链表上的数据为:
”;
print(head);
del(head);
cout<}