4).a[n-1]=b或a[i-1]=b
〖第1题〗『程序改错』(10分)(题号:
76)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
计算并输出100—200之间的所有素数的平方根之和.
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
#include
voidmain()
{floats,sn;
intn,k,f,m;
s=0.0;
for(n=101;n<=199;n+=2)
{sn=sqrt(n);
m=sn;
k=3;
f=0;
/***********FOUND***********/
while(k<=m&&f=0)
{
/***********FOUND***********/
if(n%k==0)f=0;
/***********FOUND***********/
m++;
}
/***********FOUND***********/
if(f)s=s+sn;}
cout<
答案:
1).while(k<=m&&f==0)
2).if(n%k==0)f=1;
3).k++;
4).if(!
f)s=s+sn;}或if(f==0)s=s+sn;}或if(!
f)s+=sn;}或if(f==0)s+=sn;}
〖第2题〗『程序改错』(10分)(题号:
88)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
以下程序中函数fun1和fun2为两个虚函数,类derive
为base的派生类。
程序的运行结果为:
base:
:
fun1()
base:
:
fun2()
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
classbase
{
public:
virtualvoidfun1()=0;
/***********FOUND***********/
abstractvoidfun2()=0;
{
cout<<"base:
:
fun2()"<}
};
/***********FOUND***********/
classbase:
fun1()
{
cout<<"base:
:
fun1()"<}
classderive:
publicbase
{
public:
voidfun1(){base:
:
fun1();}
voidfun2(){base:
:
fun2();}
/***********FOUND***********/
}
voidmain()
{
/***********FOUND***********/
based;
d.fun1();
d.fun2();
}
答案:
1).virtualvoidfun2()=0
2).voidbase:
:
fun1()
3).};
4).derived;
〖第3题〗『程序改错』(10分)(题号:
71)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
题目:
用顺序交换法将12个整数中处于奇数位的数从大到小排序。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
voidmain()
/***********FOUND***********/
{intm[12],i,j;
/***********FOUND***********/
for(i=1;i<=12;i++)
cin>>m[i];
for(i=0;i<11;i+=2)
/***********FOUND***********/
for(j=i+1;i<11;i++)
/***********FOUND***********/
if(m[i]>m[j])
{k=m[i];
m[i]=m[j];
m[j]=k;}
for(i=0;i<12;i++)
cout<}
答案:
1).{int★m[12]★,★i★,★j★,★k★;
2).for(i=0;i<12;i++)或for(i=0;i<=11;i++)
3).for(j=i+2;j<11;j+=2)或for(j=i+2;j<11;j=j+2)
4).if(m[j]>m[i])或if(m[i]〖第1题〗『程序设计』(10分)(题号:
261)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
对给定的10个数按逆序排列,必须用循环完成。
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数main和其它
函数中的任何内容,仅在函数的花括号中填入所编
写的若干语句。
------------------------------------------------*/
#include
#include
#include
voidwriteinfile(intn[])
{
fstreammyfile;
intk;
myfile.open("f.txt",ios:
:
out);
for(k=0;k<10;k++)
myfile<myfile.close();
}
voidmain()
{
intn[10]={1,2,3,4,5,6,7,8,9,10},i,t;
/**********Program**********/
/**********End**********/
writeinfile(n);
}
答案:
----------------------
for(i=0;i<5;i++)
{t=n[i];n[i]=n[9-i];n[9-i]=t;}
for(i=0;i<10;i++)
cout<----------------------