第2个回答 2009-03-28
//求回文数的
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
int mshow(int m,int i,int base)
{
bool flags=true;
int d[9],j=i,k,mm=m;
while(i>=0&&base>=1)
{
d[i-1]=int(m/base);
m=m%base;
base=base/10;
i--;
}
for(k=0;j+1,k<j;j--,k++)
{
if(d[j-1]!=d[k])flags=false;
}
return flags==true?mm:0;
}
int nshow(int m)
{
int i=8;
while((i+1)&&!int(m/(pow(10,i)))){i--;}
return i+1;
}
void main()
{
int n,x,y,z;
for(n=1;n<1000;n++)
{
x=nshow(n);
y=nshow(n*n);
z=nshow(n*n*n);
if(mshow(n,x,int(pow(10,x-1)))&&mshow(n*n,y,int(pow(10,y-1)))&&mshow(n*n*n,z,int(pow(10,z-1))))
cout<<n<<endl;
}
}
//工资管理系统
#include<iostream>
#include<string>
using namespace std;
class Employee
{//定义Employee类
protected:
string name,number;
public:
Employee(){};//构造函数
virtual void show()//显示姓名与编号的虚函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
}
~Employee(){}//析构函数
};
class Manager:public Employee
{//定义Manager类,公有继承Employee类
private:
double salary;
public:
static int m;
Manager(){};//构造函数
void show()//显示经理详细情况函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
cout<<"月工资:"<<salary<<endl;
}
Manager &operator=(const Manager &);//声明重载赋值函数
void put(string na,string nu,double sa)//给成员赋值函数
{
name=na;
number=nu;
salary=sa;
}
};
Manager &Manager::operator=(const Manager &p)//定义重载赋值函数
{
name=p.name;
number=p.number;
salary=p.salary;
return *this;
}
class HourlyWorker:public Employee
{//定义HourlyWorker类,公有继承Employee类
private:
double hour,wage;
public:
static int n;
HourlyWorker(){};//构造函数
void show()//显示钟点工详细情况函数
{
cout<<"姓名:"<<name<<endl;
cout<<"编号:"<<number<<endl;
cout<<"小时工资:"<<wage<<endl;
cout<<"月工作小时:"<<hour<<endl;
}
HourlyWorker &operator=(const HourlyWorker &);//声明重载赋值函数
void put(string na,string nu,double ho,double wa)//给成员赋值函数
{
name=na;
number=nu;
hour=ho;
wage=wa;
}
};
HourlyWorker &HourlyWorker::operator=(const HourlyWorker &p)//定义重载赋值函数
{
name=p.name;
number=p.number;
hour=p.hour;
wage=p.wage;
return *this;
}
int HourlyWorker::n=0;
int Manager::m=0;
void main()
{
Manager x[5];//建立5个Manager类
HourlyWorker y[5];//建立5个HourlyWorker类
int i;
string name,number,sort;
double wage,hour,salary;
bool flags=true;
while(flags)
{
cout<<"[1]增加一个职工"<<endl;
cout<<"[2]显示数组中所有的职工以及他们的工资"<<endl;
cout<<"[3]显示数组中所有的经理以及他们的工资"<<endl;
cout<<"[4]显示数组中钟点工以及他们的工资"<<endl;
cout<<"[5]退出"<<endl;
int num;
cin>>num;
switch(num)
{
case 1:
cout<<"输入职工信息:"<<endl<<"姓名:";
cin>>name;
cout<<"编号:";
cin>>number;
cout<<"类别:(输入“经理”或“钟点工”)";
cin>>sort;
if(sort=="经理")
{
cout<<"月工资:";
cin>>salary;
Manager::m++;
x[Manager::m-1].put(name,number,salary);
cout<<"***增加一个职工***"<<endl;
x[Manager::m-1].show();
}
else if(sort=="钟点工")
{
cout<<"小时工资:";
cin>>wage;
cout<<"月工作小时数:";
cin>>hour;
HourlyWorker::n++;
y[HourlyWorker::n-1].put(name,number,hour,wage);
cout<<"***增加一个职工***"<<endl;
y[HourlyWorker::n-1].show();
}
else cout<<"输入有误,请重新输入!"<<endl;
break;
case 2:
cout<<"***职工工资表***"<<endl;
for(i=0;i<Manager::m;i++)
x[i].show();
for(i=0;i<HourlyWorker::n;i++)
y[i].show();
break;
case 3:
cout<<"***经理工资表***"<<endl;
for(i=0;i<Manager::m;i++)
x[i].show();
break;
case 4:
cout<<"***钟点工工资表***"<<endl;
for(i=0;i<HourlyWorker::n;i++)
y[i].show();
break;
case 5:flags=false;
exit(0);
}
}
}
//求圆周率的
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
long a=100000L;
void main()
{
FILE *fp;
long t1,t2;
char filename[40];
unsigned long c,d,e,i,j,ws;
unsigned long *f,*bb;
printf("位数=");
scanf("%ld",&ws);
if(ws<1)return;
c=(ws+4)/05*17;
bb=f=(unsigned long*)malloc(04*c);
if(f==NULL)abort();
printf("将Pi存为:(文件名) ");//提示输入数据文件名
scanf("%s",filename);//若打入NUL,则不存盘
fp=fopen(filename,"w");
if(fp==NULL)abort();
t1=time(NULL);
for(i=0;i<c-1;i++,bb++)
*bb=a/5;*bb=a/5;//这里并不错
for(e=0;c;c-=17,bb-=17,e=d%a)
{ static long group;
d=0;i=c;
j=c+c-1;
_asm mov eDI,bb
loopi:
_asm mov eax,[eDI]
_asm mul Dword ptr a
_asm mov ecx,edx
_asm mov ebx,eax
_asm mov eax,d
_asm mul dword ptr i
_asm add eax,ebx
_asm adc edx,ecx
_asm div dword ptr j
_asm mov d,eax
_asm mov [eDI],edx
_asm sub eDI,04
_asm dec dword ptr j
_asm dec dword ptr j
_asm dec dword ptr i
_asm jnz loopi
e += d/a;//这是为了避免重复计算
if(e>=100000)//这是一种糟糕情况
abort();//希望它最好不要发生
if(++group%200==0) //逢千位附近
printf( "%05lu\t",e);//显示五位
fprintf(fp,"%05lu",e);//写入磁盘
}
t2=time(NULL);
printf("%ld秒\n",t2-t1);
free(f);
fclose(fp);
}
//教学管理系统
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
const m=17;
const n=42;
//**************************定义类teach**************************
class teach
{
double *f,*g,*k,*p,*q,*r,*x,*a;
float *F,*G,*K,*P,*Q,*R,*X,*A,*T;
int *t;
public:
teach();//声明构造函数
double max(double ma[],int);//声明求最大值函数
double min(double ma[],int);//声明求最小值函数
void chutai();//声明求初态值函数
void motai();//声明求末态值函数
void zhi();//声明求教学质量函数
void zong();//声明求综合教学质量函数
void tread();//声明读数据函数
void twrite();//声明写数据函数
~teach();//声明析构函数
};
struct teacher //声明教师综合质量的结构体变量
{
int num;
float zhi;
}tea[n];
struct student //声明教师综合质量的结构体变量
{
int num;
float score;
}stu[m];
teach::teach()//定义构造函数
{
f=new double[n];
g=new double[n];
F=new float[n];
G=new float[n];
k=new double[n];
K=new float[n];
p=new double[n];
q=new double[n];
P=new float[n];
Q=new float[n];
r=new double[n];
R=new float[n];
x=new double[n];
X=new float[n];
a=new double[n];
A=new float[n];
t=new int[n];
T=new float[m];
}
teach::~teach()//定义析构函数
{
delete []f;
delete []g;
delete []F;
delete []G;
delete []k;
delete []K;
delete []p;
delete []q;
delete []P;
delete []Q;
delete []r;
delete []R;
delete []x;
delete []X;
delete []a;
delete []A;
delete []t;
}
double teach::max(double ma[],int nn=n)//定义求最大值函数
{
double mm=ma[0],xx,yy;
for(int i=1;i<nn;i++)
{
yy=ma[i];
if(yy>mm)
{
xx=yy;
yy=mm;
mm=xx;
}
}
return mm;
}
double teach::min(double ma[],int nn=n)//定义求最小值函数
{
double mm=ma[0],xx,yy;
for(int i=1;i<nn;i++)
{
yy=ma[i];
if(yy<mm)
{
xx=yy;
yy=mm;
mm=xx;
}
}
return mm;
}
void teach::chutai()//定义求初态值函数
{
int j;
double fmax,fmin,gmax,gmin,kmax,kmin;
fmax=max(f);
fmin=min(f);
gmax=max(g);
gmin=min(g);
for(j=0;j<n;j++)
{
F[j]=float(1+(n-1)*(fmax-f[j])/(fmax-fmin));
G[j]=float(1+(n-1)*(gmax-g[j])/(gmax-gmin));
k[j]=0.8*F[j]+0.2*G[j];
}
kmax=max(k);
kmin=min(k);
for(j=0;j<n;j++)
{
K[j]=float(1+(n-1)*(kmin-k[j])/(kmin-kmax));
}
}
void teach::motai()//定义求末态值函数
{
int j;
double pmax,pmin,qmax,qmin,rmax,rmin;
pmax=max(p);
pmin=min(p);
qmax=max(q);
qmin=min(q);
for(j=0;j<n;j++)
{
P[j]=float(1+(n-1)*(pmax-p[j])/(pmax-pmin));
Q[j]=float(1+(n-1)*(qmax-q[j])/(qmax-qmin));
r[j]=0.8*P[j]+0.2*Q[j];
}
rmax=max(r);
rmin=min(r);
for(j=0;j<n;j++)
{
R[j]=float(1+(n-1)*(rmin-r[j])/(rmin-rmax));
}
}
void teach::zhi()//定义求教学质量函数
{
int j;
double xmax,xmin,amax,amin;
for(j=0;j<n;j++)
{
x[j]=K[j]-R[j];
}
xmax=max(x);
xmin=min(x);
for(j=0;j<n;j++)
{
X[j]=float(1+(n-1)*(xmax-x[j])/(xmax-xmin));
a[j]=0.8*X[j]+0.2*R[j];
}
amax=max(a);
amin=min(a);
for(j=0;j<n;j++)
{
A[j]=float(1+(n-1)*(amin-a[j])/(amin-amax));
}
}
void teach::zong()//定义求综合教学质量函数
{
for(int i=0;i<n;i++)
{
tea[i].num=t[i];
tea[i].zhi=A[i];
}
for(int j=0;j<m;j++)
{
float sum=0;
int count=0;
for(i=0;i<n;i++)
{
if (tea[i].num==(j+1))
{
sum=sum+tea[i].zhi;
count++;
}
}
T[j]=sum/count;
}
}
void teach::tread()//定义读数据函数
{
int j;
ifstream fin("e:\\read.txt");
if(!fin)
{
cout<<"Cannot open the file.\n";
}
for(j=0;j<n;j++)fin>>t[j];
for(j=0;j<n;j++)fin>>f[j];
for(j=0;j<n;j++)fin>>g[j];
for(j=0;j<n;j++)fin>>p[j];
for(j=0;j<n;j++)fin>>q[j];
fin.close();
}
void teach::twrite()//定义写数据函数
{
int i,small,k;
float swap;
ofstream fout("e:\\write.txt");
if(!fout)
{
cout<<"Cannot open the file.\n";
}
fout<<setw(10)<<"班号"<<setw(10)<<"高考";
fout<<setw(10)<<"摸底考"<<setw(10)<<"通过率";
fout<<setw(10)<<"积点分"<<setw(10)<<"初态";
fout<<setw(10)<<"末态"<<setw(10)<<"质量"<<endl;
for(int j=0;j<n;j++)
{
fout<<setw(10)<<j+1<<setw(10)<<f[j];
fout<<setw(10)<<g[j]<<setw(10)<<p[j];
fout<<setw(10)<<q[j]<<setw(10)<<K[j];
fout<<setw(10)<<R[j]<<setw(10)<<A[j];
fout<<endl;
}
fout<<setw(10)<<"教师号"<<setw(10)<<"质量"<<endl;
for(j=0;j<m;j++)fout<<setw(10)<<j+1<<setw(10)<<T[j]<<endl;
fout<<setw(10)<<"教师号"<<setw(10)<<"质量"<<endl;
for(i=0;i<m;i++) //用结构体
{
stu[i].score =T[i];
stu[i].num =i+1;
}
for(i=0;i<m-1;i++)
{
small=i;
for(j=i+1;j<m;j++)
{
if(stu[j].score<stu[small].score)
small=j;
}
if(small!=i)
{
swap=stu[i].score;
stu[i].score=stu[small].score;
stu[small].score=swap;
k=stu[i].num;
stu[i].num=stu[small].num;
stu[small].num=k;
}
}
for(i=0;i<m;i++)
{
fout<<setw(10)<<stu[i].num<<setw(10)<<stu[i].score<<endl;
}
fout.close();
}
//************************主函数**********************
void main()
{
teach cet;
cet.tread();
cet.chutai();
cet.motai();
cet.zhi();
cet.zong();
cet.twrite();
}