1 / 20
文档名称:

计算机算法实践题.doc

格式:doc   大小:217KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机算法实践题.doc

上传人:mh900965 2018/2/12 文件大小:217 KB

下载得到文件列表

计算机算法实践题.doc

文档介绍

文档介绍:2004年秋上机试卷01
改错题
以下程序的功能是:求n(n≤100)个数的均方差。
均方差的计算公式为d=,其中平均值为。。
含有错误的原程序如下:
#include<>
double average(double x[],int n) //求平均值,数组x具有n个元素
{ double sum;int k=n;
while(k-->0) sum+=x[k];
return sum/n;
}
void variance(double x[],int n) //求均方差,数组x具有n个元素
{ double ave=average(x,n),d=0;
for(int i=0;i<n;i++)
d+=(x[i]-ave)*(x[i]-ave);
return d;
}
void main()
{
int n;
cout<<"请输入数据个数:";
cin>>n;
cout<<"请输入"<<n<<"个数据:";
double a[n];
for(int i=0;i<n;i++)
cin>>a[i];
cout<<""<<variance(a,n)<<endl;
//例如,5个数1、2、3、4、5的均方差为2
}
二、编程题
定义一个类PALIN,用于在一个指定的范围内查找其平方是一个回文数的整数x,统计满足条件之整数的个数,并输出它们:回文数是指该整数中的各位数字两边对称。例如:1、22、121、4224等均是回文数。算法提示:判断一个数是否为回文,可以将这个数的每一位数字分解到数组中,然后判断数组元素是否对称。
具体要求如下:
(1)私有数据成员。
int low,up:存放给定整数范围的下限和上限。
int a[100]:存放满足条件的整数。
int count:存放满足条件的整数的个数。
(2)公有成员函数。
PALIN(int t1, int t2):构造函数,用t1和t2初始化low和up,同时初始化count。
int palin(int x):判断整数x是否为回文数。若是,返回1;否则返回0。
void fun( ):求满足条件的整数,并依次放入数组a。
void show( ):输出查找范围、满足条件的整数及其个数。
(3)在主函数中定义一个PALIN类的对象p,给定的查找范围为[100,1000]。通过对象p调用成员函数实现查找及输出。本题正确的输出结果为
count=8
x x*x
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
307 94249
836 698896
答案:
一、
#include<>
double average(double x[],int n)
{ double sum;int k=n; //double sum=0;
while(k-->0) sum+=x[k];
return sum/n;
}
void variance(double x[],int n) //double
{ double ave=average(x,n),d=0;
for(int i=0;i<n;i++)
d+=(x[i]-ave)*(x[i]-ave);
return d; //return d/n;
}
void main()
{
int n;
cout<<"请输入数据个数:";
cin>>n;
cout<<"请输入"<<n<<"个数据:";
double a[n]; //double a[100];
for(int i=0;i<n;i++)
cin>>a[i];
cout<<""<<variance(a,n)<<endl;
}
二、
#include<>
class PALIN
{ int low,up;
int a[100];
int count;
public:
PALIN(int t1,int t2)
{low=t1;up=t2;count=0;
}

int palin(int x)
{int t[100],i=0,j=0;
while(x)
t[j++]=x%10,x/=10;
j--;
for(;i<j;i++,j--)
if(t[i]!=t[j])return 0;
return 1;
}
void fun()
{for(int x=low;x<=up;x++)
if(p