求一个c++小程序源代码,要求200行以上,给100分,能用再加100
#include "stdafx.h"
#include
#include/*fabs()*/
#include/*exit(),srand(),rand()*/
#include/*vector*/
#include/*string*/
#include/*time()*/
using namespace std;
const double Precision=1e-10;/*比较的精度*/
const double M=24;/*凑数结果*/
const int N1=13,N2=4;/*4个从1到13的数*/
const int C1=5,C2=10,C3=15,C4=20;/*盘数*/
class Gamer;/*玩家的信息*/
class Four;/*把满足条件的四个数及其符号储存起来*/
ostream& operator<<(ostream& out,const Four &obj);/*输出Four类的对象*/
double count(double a1,int b,double a2,bool& abnormal);/*计算在运算符b(b==1时,代表+;...)的作用下,数字a1与a2的运算结果*/
bool judge(double a1,int b1,double a2,int b2,double a3,int b3,double a4,int& code);/*判断是否能凑成M*/
bool judge1(double a1,int b1,double a2,int b2,double a3,int b3,double a4);/*((a1@a2)@a3)@a4*/
bool judge2(double a1,int b1,double a2,int b2,double a3,int b3,double a4);/*(a1@(a2@a3))@a4*/
bool judge3(double a1,int b1,double a2,int b2,double a3,int b3,double a4);/*(a1@a2)@(a3@a4)*/
bool judge4(double a1,int b1,double a2,int b2,double a3,int b3,double a4);/*a1@((a2@a3)@a4)*/
bool judge5(double a1,int b1,double a2,int b2,double a3,int b3,double a4);/*a1@(a2@(a3@a4))*/
void print(ostream& out,int b);//打印算符
void GameOn();
class Gamer
{
private:
int score;/*得分*/
int bout;/*盘数*/
string name;/*姓名*/
public:
Gamer(string n,int b=C1);/*设置玩家姓名,初始化分数*/
int getScore() const;
void setScore(char c);/*对玩家分数进行加减操作*/
void print() const;/*打印玩家信息*/
};
Gamer::Gamer(string n,int b)
{
name=n;
bout=b;
score=bout;/*初始分数等于盘数*/
}
int Gamer::getScore() const
{
return score;
}
void Gamer::setScore(char c)
{
switch(c)/*c='+'或'-'*/
{
case '+':score++;break;/*回答正确,加分*/
case '-':score--;break;/*回答错误,减分*/
default:cout<<"参数错误!!!"<<endl;
}
}
void Gamer::print() const
{
cout<<"玩家"<<name<<"的得分情况:"<<endl;
cout<<"盘数:"<<bout<<""<<"初始分:"<<bout<<""<<"最后得分:"<<score<<endl;
}
class Four
{
private:
int Sign[3];/*储存运算符*/
int Q[N2];/*储存原始顺序,即未排序前的顺序,是输出函数的依据*/
int method;/*方法的代号,记下由这四个数字得到24的一种方法(有可能有多种得到24的方法,但只选最先找到的那种方法)*/
public:
Four(int a=0,int b=0,int c=0,int d=0,int m=0,int s1=0,int s2=0,int s3=0);/*构造函数,初始化成员数据*/
void reSet(int a,int b,int c,int d,int m,int s1,int s2,int s3);
friend ostream& operator<<(ostream& out,const Four &obj);/*友元函数*/
};
Four::Four(int a,int b,int c,int d,int m,int s1,int s2,int s3)
{
Q[0]=a;
Q[1]=b;
Q[2]=c;
Q[3]=d;
method=m;
Sign[0]=s1;
Sign[1]=s2;
Sign[2]=s3;
}
void Four::reSet(int a,int b,int c,int d,int m,int s1,int s2,int s3)
{
Q[0]=a;
Q[1]=b;
Q[2]=c;
Q[3]=d;
method=m;
Sign[0]=s1;
Sign[1]=s2;
Sign[2]=s3;
}
ostream& operator<<(ostream& out,const Four &obj)
{
switch(obj.method)
{
case 1:/*((a1@a2)@a3)@a4*/
{
out<<"(("<<obj.Q[0];
print(out,obj.Sign[0]);
out<<obj.Q[1]<<")";
print(out,obj.Sign[1]);
out<<obj.Q[2]<<")";
print(out,obj.Sign[2]);
out<<obj.Q[3];
break;
}
case 2:/*(a1@(a2@a3))@a4*/
{
out<<"("<<obj.Q[0];
print(out,obj.Sign[0]);
out<<"("<<obj.Q[1];
print(out,obj.Sign[1]);
out<<obj.Q[2]<<"))";
print(out,obj.Sign[2]);
out<<obj.Q[3];
break;
}
case 3:/*(a1@a2)@(a3@a4)*/
{
out<<"("<<obj.Q[0];
print(out,obj.Sign[0]);
out<<obj.Q[1]<<")";
print(out,obj.Sign[1]);
out<<"("<<obj.Q[2];
print(out,obj.Sign[2]);
out<<obj.Q[3]<<")";
break;
}
case 4:/*a1@((a2@a3)@a4)*/
{
out<<obj.Q[0];
print(out,obj.Sign[0]);
out<<"(("<<obj.Q[1];
print(out,obj.Sign[1]);
out<<obj.Q[2]<<")";
print(out,obj.Sign[2]);
out<<obj.Q[3]<<")";
break;
}
case 5:/*a1@(a2@(a3@a4))*/
{
out<<obj.Q[0];
print(out,obj.Sign[0]);
out<<"("<<obj.Q[1];
print(out,obj.Sign[1]);
out<<"("<<obj.Q[2];
print(out,obj.Sign[2]);
out<<obj.Q[3]<<"))";
break;
}
default:out<<"方法代码参数错误!!!";
}
out<<"="<<M;
return out;
}
double count(double a1,int b,double a2,bool& abnormal)/*最基本的运算单元*/
{
switch(b)
{
case 1:return a1+a2;
case 2:return a1-a2;
case 3:return a1*a2;
case 4:
{
if(a2==0)
{
abnormal=true;/*被除数为0,出错了*/
return 0;
}
else
return a1/a2;
}
default:cout<<"代数运算符标志(参数b)错误!!!"<<endl;exit(1);
}
}
bool judge(double a1,int b1,double a2,int b2,double a3,int b3,double a4,int& code)/*判断,统等各种可能*/
{
if(judge1(a1,b1,a2,b2,a3,b3,a4)==true)
{
code=1;/*利用引用,获取方法信息*/
return true;/*找到一种即退出*/
}
if(judge2(a1,b1,a2,b2,a3,b3,a4)==true)
{
code=2;
return true;
}
if(judge3(a1,b1,a2,b2,a3,b3,a4)==true)
{
code=3;
return true;
}
if(judge4(a1,b1,a2,b2,a3,b3,a4)==true)
{
code=4;
return true;
}
if(judge5(a1,b1,a2,b2,a3,b3,a4)==true)
{
code=5;
return true;
}
return false;
}
bool judge1(double a1,int b1,double a2,int b2,double a3,int b3,double a4)/*((a1@a2)@a3)@a4*/
{
bool abnormal=false;/*接收出错信息,若abnormal==true,一票否决*/
double result;
result=count(a1,b1,a2,abnormal);/*按括号的位置,决定运算顺序*/
result=count(result,b2,a3,abnormal);
result=count(result,b3,a4,abnormal);
if(abnormal==false&&fabs(result-M)<Precision)/*不要用result==M作条件,因为二者为浮点型*/
return true;
else
return false;
}
bool judge2(double a1,int b1,double a2,int b2,double a3,int b3,double a4)/*(a1@(a2@a3))@a4*/
{
bool abnormal=false;
double result;
result=count(a2,b2,a3,abnormal);
result=count(a1,b1,result,abnormal);
result=count(result,b3,a4,abnormal);
if(abnormal==false&&fabs(result-M)<Precision)
return true;
else
return false;
}
bool judge3(double a1,int b1,double a2,int b2,double a3,int b3,double a4)/*(a1@a2)@(a3@a4)*/
{
bool abnormal=false;
double result1,result2;
result1=count(a1,b1,a2,abnormal);
result2=count(a3,b3,a4,abnormal);
result2=count(result1,b2,result2,abnormal);
if(abnormal==false&&fabs(result2-M)<Precision)
return true;
else
return false;;
}
bool judge4(double a1,int b1,double a2,int b2,double a3,int b3,double a4)/*a1@((a2@a3)@a4)*/
{
bool abnormal=false;
double result;
result=count(a2,b2,a3,abnormal);
result=count(result,b3,a4,abnormal);
result=count(a1,b1,result,abnormal);
if(abnormal==false&&fabs(result-M)<Precision)
return true;
else
return false;
}
bool judge5(double a1,int b1,double a2,int b2,double a3,int b3,double a4)/*a1@(a2@(a3@a4))*/
{
bool abnormal=false;
double result;
result=count(a3,b3,a4,abnormal);
result=count(a2,b2,result,abnormal);
result=count(a1,b1,result,abnormal);
if(abnormal==false&&fabs(result-M)<Precision)
return true;
else
return false;
}
void print(ostream& out,int b)
{
switch(b)/*b=1,2,3,4*/
{
case 1:out<<"+";break;
case 2:out<<"-";break;
case 3:out<<"*";break;
case 4:out<<"/";break;
default:cerr<<"算符参数错误!"<<endl;
}
}
void GameOn()
{
string name;/*玩家姓名*/
cout<<"请输入玩家姓名:";
cin>>name;
int frequence=0;/*已玩的盘数*/
int Max=C1;/*总盘数*/
char request='A';/*盘数设置信息*/
cout<<"选择游戏盘数:A."<<C1<<" B."<<C2<<" C."<<C3<<" D."<<C4<<":";
cin>>request;
Four temp;
switch(request)
{
case 'A':
case 'a':Max=5;break;
case 'B':
case 'b':Max=10;break;
case 'C':
case 'c':Max=15;break;
case 'D':
case 'd':Max=20;break;
default:cout<<"输入选项不存在!设为默认值:A.5"<<endl;Max=5;
}
Gamer gamer(name,Max);/*设置玩家信息*/
int i,j,k,l,i1,j1,k1;/*计数器*/
int code=0;/*方法标记*/
int itag,jtag,ktag,ltag;/*在一定运算下的各数标记*/
double P[N2];/*储存组合*/
int tag=0;/*跳出循环及是否有解的标志*/
char answer1='N';/*玩家的答案*/
bool answer2=false;/*玩家的答案(answer1的逻辑化)*/
while(frequence<Max)
{
cout<<"当前盘数/总盘数:"<<frequence+1<<"/"<<Max<<" 当前积分/初始积分:"<<gamer.getScore()<<"/"<<Max<<endl;/*当前盘数与总盘数*/
srand((unsigned)time(NULL));/*随机数种子*/
for(i=0;i<N2;i++)
{
P[i]=double(rand()%N1+1);/*产生1~N1之间的随机数*/
cout<<P[i]<<"";
}
cout<<"此组合是否能能过四则运算及括号得到24?"<<endl;
cout<<"Y.能 N.不能 :";
cin>>answer1;
switch(answer1)
{
case 'Y':
case 'y':answer2=true;break;
case 'N':
case 'n':answer2=false;break;
default:cout<<"输入选项不存在!设为默认值N.不能"<<endl;answer2=false;
}
for(i=0;i<N2;i++)
{
if(tag==1)/*一层一层地跳出,也可以直接用goto语法*/
break;
for(j=0;j<N2;j++)
{
if(tag==1)
break;
for(k=0;k<N2;k++)
{
if(tag==1)
break;
l=(0+N2-1)*N2/2-(i+j+k);/*i+j+k+l=0+1+...+N2*/
if((i!=j)&&(i!=k)&&(j!=k))/*注意条件的写法!!!*/
{
for(i1=1;i1<=N2;i1++)
{
if(tag==1)
break;
for(j1=1;j1<=N2;j1++)
{
if(tag==1)
break;
for(k1=1;k1<=N2;k1++)
{
if(judge(P[i],i1,P[j],j1,P[k],k1,P[l],code)==true)
{
temp.reSet(static_cast(P[i]),static_cast(P[j]),static_cast(P[k]),static_cast(P[l]),code,i1,j1,k1);/*封装数据*/
tag=1;
break;/*跳出*/
}
}
}
}
}
}
}
}
if(tag==0)/*无解*/
{
if(answer2==false)
{
cout<<"正确!此组合不能得到24."<<endl;
gamer.setScore('+');
}
else
{
cout<<"错误!此组合不能得到24!!!"<<endl;
gamer.setScore('-');
}
}
else/*有解*/
{
if(answer2==true)
{
cout<<"正确!此组合能得到24."<<endl;
gamer.setScore('+');
cout<<"比如:"<<temp<<endl;
}
else
{
cout<<"错误!此组合能得到24!!!"<<endl;
gamer.setScore('-');
cout<<"比如:"<<temp<<endl;
}
}
tag=0;/*清零*/
cout<<endl;
frequence++;/*进入下一盘*/
}
gamer.print();/*打印玩家信息*/
}
int _tmain(int argc, _TCHAR* argv[])
{
GameOn();
system("pause");
return 0;
}
看到有人要一个可以添加/删除/查询大巴发车信息,并且要有管理密码的 ,是不是我可以用一个代码得两个分 哈哈, 开微笑的 醉鬼现在写不粗代码
//=================================[说明]=======================================*///学生成绩管理
//文件名:main.cpp
//------!!!!!!---------BOF-[程序代码开始]-------------------
#include<iostream>
#include<string>
using namespace std;
//=============<开始定义结构体>===================================================
struct combox
{
int num;
int mark;
string name;
combox *next;
};
//=============<结束定义结构体>===================================================
//=============<开始定义Commonbox类>==============================================
//-----类体开始------------------------
class Commonbox
{
private:
combox *head;
void Swap(combox *,combox *); //交换两个combox变量的数据域
void Print(combox *); //输出一combox指定的记录
combox *Find(int); //查找条例条件的记录,并返回该记录的指针
public:
Commonbox()
{
head=NULL;
}
int ListCount(); //统计当前链表的记录总数,返回一个整数
void AddItem(int num, string name, int mark); //添加一条记录到表尾
void RemoveItem(int); //删除一条指定的记录
void List(); //列出当前链表中的所有记录
void Sort(); //对当前链表进行排序
void Search(int); //在当前链表查找指定记录并输出
float Average(); //计算平均成绩
};
//-----类体结束------------------------
//-----类成员函数开始----------------------------------
int Commonbox::ListCount() //统计当前链表的记录总数,返回一个整数
{
if (! head)return 0;
combox *p=head;
int n=0;
while (p)
{
n++;
p=p->next;
}
return n;
}
void Commonbox::AddItem(int num, string name, int mark) //添加一条记录到表尾
{
if (! head)
{
head=new combox;
head->mark=mark;
head->num=num;
head->name=name;
head->next=NULL;
return;
}
combox *t=head;
while (t && t->num!=num)
t=t->next;
if (t)
{
cout<<"操作失败:学号为"<<num<<"的记录已经存在!"<<endl;
return;
}
combox *p=head;
while (p->next)p=p->next;
combox *p1=new combox;
p1->num=num;
p1->mark=mark;
p1->name=name;
p1->next=NULL;
p->next=p1;
return;
}
void Commonbox::RemoveItem(int num) //删除一条指定的记录
{
combox *t=Find(num);
if (! t)return;
combox *p=head;
//如果要删除的记录位于表头
if (head==t)
{
head=head->next;
delete p;
cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl;
return;
}
while (p->next!=t)p=p->next;
combox *p1=p->next;
p->next=p1->next;
delete p1;
cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl;
return;
}
void Commonbox::Print(combox *p) //输出一combox指定的记录
{
cout<<p->num<<"\t\t";
cout<<p->name<<"\t\t";
cout<<p->mark<<endl;
return;
}
void Commonbox::List() //列出当前链表中的所有记录
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl;
return;
}
combox *p=head;
cout<<"共有记录:"<<ListCount()<<endl;
cout<<"学号\t\t姓名\t\t分数"<<endl;
while (p)
{
Print(p);
p=p->next;
}
cout <<endl;
return;
}
void Commonbox::Search(int num) //在当前链表查找指定记录并输出
{
cout <<"Searching...."<<endl;
combox *p=Find(num);
if (p)
{
cout<<"学号\t\t姓名\t\t分数"<<endl;
Print(p);
}
cout <<endl;
}
combox *Commonbox::Find(int num)
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl;
return NULL;
}
combox *p=head;
while (p)
{
if (p->num==num)break;
p=p->next;
}
if (! p)
{
cout <<"错误:找不到该记录!\n";
return NULL;
}
return p;
}
void Commonbox::Swap(combox *p1, combox *p2) //交换两个combox变量的数据域
{
combox *temp=new combox;
temp->num=p1->num;
temp->mark=p1->mark;
temp->name=p1->name;
p1->num=p2->num;
p1->mark=p2->mark;
p1->name=p2->name;
p2->num=temp->num;
p2->mark=temp->mark;
p2->name=temp->name;
}
void Commonbox::Sort() //对当前链表进行排序
{
cout <<"Sorting..."<<endl;
if (ListCount()<2) return;
combox *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int n=ListCount(),i,j;
p=head;
for (i=1;i<n;i++)
{
k=p;
p1=p->next;
for (j=0;j<n-i;j++)
{
if (k->num > p1->num)
{
k=p1;
}
p1=p1->next;
}
if (p!=k)Swap(k,p);
p=p->next;
}
cout <<"Complete successfully!"<<endl<<endl;
return;
}
float Commonbox::Average() //计算平均成绩
{
if (ListCount()==0)
{
cout <<"错误:当前的列表为空!"<<endl;
return -1;
}
int sum=0,n=0;
combox *p=head;
while (p)
{
sum += p->mark;
p=p->next;
n++;
}
return float(sum)/n;
}
//-----类成员函数结束----------------------------------
//=============<结束定义Commonbox类>==============================================
Commonbox student; //定义全局变量
int Menu()
{
cout <<"===========[主选单:]==========="<<endl;
int n=1,select=-1;
cout <<n++<<".输入学生成绩;"<<endl<<endl;
cout <<n++<<".按学号排序;"<<endl<<endl;
cout <<n++<<".按学号查找记录;"<<endl<<endl;
cout <<n++<<".删除由学号指定的记录;"<<endl<<endl;
cout <<n++<<".列出所有记录;"<<endl<<endl;
cout <<n++<<".计算平均成绩;"<<endl<<endl;
cout <<"0.退出;"<<endl<<endl;
cout <<"[请选择(输入相应数字)]:";
cin >>select;
return select;
}
char Exit() //返回一个字符患,用于确认退出
{
char s;
cout<<"确定要退出程序吗?[Y/N]:";
cin >>s;
return s;
}
void Input(int *num, string *name, int *mark) //输入学生信息
{
cout <<"请输入 学号 姓名 分数:";
cin >>*num;
if (*num==-1)return;
cin >>*name>>*mark;
return;
}
void AddNew() //增加记录
{
int num=0,mark=0;
string name="";
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;
Input(&num, &name, &mark);
while (num!=-1)
{
student.AddItem(num,name,mark);
Input(&num, &name, &mark);
}
return;
}
void DoFind() //按学号查找
{
int num;
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;
do
{
cout <<"请输入要查找的学生的学号: ";
cin>>num;
if (num==-1)continue;
student.Search(num);
}
while (num!=-1);
return;
}
void DoDelete() //删除记录
{
cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;
int num;
do
{
cout <<"请输入要删除的学生的学号:";
cin>>num;
if (num==-1)continue;
student.RemoveItem(num);
}
while (num!=-1);
return;
}
void ShowAverage() //输出平均数
{
float avr=student.Average();
if (avr>0)
{
cout<<"共有记录:\t"<<student.ListCount()<<endl<<endl;
cout<<"平均成绩:\t"<<avr<<endl<<endl;
}
return;
}
//-------******<主函数开始>******-------
int main()
{
cout<<"Welcome!\n学生成绩管理系统\nVer 1.01\nBy FondBoy\n\n";
int select;
char s;
while (1)
{
select=Menu();
switch (select)
{
case 0: //退出程序
s=Exit();
if (s=='y' || s=='Y')return 0;
break;
case 1: //输入学生成绩
AddNew();
break;
case 2: //按学号排序
student.Sort();
break;
case 3: //按学号查找记录
DoFind();
break;
case 4: //删除由学号指定的记录
DoDelete();
break;
case 5: //列出所有记录
student.List();
break;
case 6: //输出平均成绩
ShowAverage();
break;
default:
cout<<"无效输入!"<<endl;
}
}
return 0;
}
//-------******<主函数结束>******-------
//------!!!!!!---------EOF-[程序代码结束]-------------------
#include<iostream>
#include<string>
#include<vector>
using namespace std;
void ShowWelcome();
char GetChoice();
void JudgeChoice(char);
void Quit();
void Help();
class Worker{
public:
Worker(){};
string name;
int number;
string sex;
int age;
float osalary;
void GetLevel(){
if(osalary<1200){
fsalary=osalary;
level="A";
}else if(osalary<2500){
fsalary=osalary*0.9;
if(fsalary<1200)level="A";
else level="AA";
}else if(osalary<6000){
fsalary=osalary*0.85;
if(fsalary<2500)level="AA";
else level="AAA";
}else {
fsalary=osalary*0.8;
if(fsalary<6000)level="AAA";
else level="AAAA";
}
}
float fsalary;
string level;
string type;
};
class Administrator:public Worker{
public:
Administrator(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="行政长官";
}
};
class Clerk:public Worker{
public:
Clerk(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="职员 ";
}
};
class Ceo:public Worker{
public:
Ceo(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="执行官 ";
}
};
class Chairman:public Worker{
public:
Chairman(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="董事长 ";
}
};
class Accountant:public Worker{
public:
Accountant(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="会计 ";
}
};
class Student:public Worker{
public:
Student(string nam,int numbe,char se,float osalar,char typ,int ag){
name=nam;
number=numbe;
if(se=='m')sex="M";
else sex="F";
osalary=osalar;
age=ag;
type="实习生 ";
}
};
////////////////////////////////////////////////////////////////////////////////
Worker*ad;
Worker*cm;
Worker*ce;
Worker*ac;
Worker*cl;
Worker*st;
vector<Worker*> company; //company用于盛放以上几种从父类继承来的不同职业类型
void Input();
void Display();
void Delete();
void Count();
void Clear();
void Search();
int main(){
ShowWelcome();
while(true){
char number=GetChoice();
JudgeChoice(number);
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void ShowWelcome(){
cout<<"================================================================================"<<endl;
cout<<" ** Welcome to the company salary system **"<<endl;
cout<<endl;
cout<<" ** 欢迎来到公司工资管理系统 **"<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
cout<<" * 1.input(输入数据) * 5.search(查找单例) "<<endl;
cout<<endl;
cout<<" * 2.delete(删除数据) * 6.display(显示全部) "<<endl;
cout<<endl;
cout<<" * 3.count(统计总数) * 7.help(帮助说明) "<<endl;
cout<<endl;
cout<<" * 4.clear(数据清空) * 8.quit(退出系统) "<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
}
char GetChoice(){
char t;
cout<<"Please choose(选择一个操作) : ";
cin>>t;
cout<<endl;
if(t<'1'||t>'8')return '7';
else return t;
}
void JudgeChoice(char number){
switch(number){
case '1':
Input();
break;
case '2':
Delete();
break;
case '3':
Count();
break;
case '4':
Clear();
break;
case '5':
Search();
break;
case '6':
Display();
break;
case '7':
Help();
break;
case '8':
Quit();
break;
default:
cout<<"sorry : system error (对不起:系统出错)"<<endl;
Quit();
}
}
void Quit(){
cout<<endl;
cout<<"==========================Thank you for using==================================="<<endl;
exit(0);
}
void Help(){
cout<<endl;
cout<<"------------------------------帮助文档: ----------------------------------------"<<endl;
cout<<endl;
cout<<" 请务必选择正确的操作;最终工资是税后工资; 工资少于1200元(D类)无需缴税,"<<endl;
cout<<" 1200-2500元(C类)需缴税10%,2500-6000元(B类)需缴税15%,超过6000元(A类)需"<<endl;
cout<<" 缴税20%;此系统非常简单,并不与文件联系保存数据,只提供简单的功能操作示意。"<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
cout<<" * 1.input(输入数据) * 5.search(查找单例) "<<endl;
cout<<endl;
cout<<" * 2.delete(删除数据) * 6.display(显示全部) "<<endl;
cout<<endl;
cout<<" * 3.count(统计总数) * 7.help(帮助说明) "<<endl;
cout<<endl;
cout<<" * 4.clear(数据清空) * 8.quit(退出系统) "<<endl;
cout<<endl;
cout<<"================================================================================"<<endl;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void Input(){
string name;
int number;
char sex;
float osalary;
char type;
int age;
cout<<" * 行政长官--->'1' * 董事长----->'2' * 执行官------>'3' "<<endl;
cout<<" * 会计------->'4' * 职员------->'5' * 实习生望---->'6' "<<endl;
cout<<endl;
cout<<"choose the type of the worker : ";
while(cin>>type){
if(type>'0'&&type<'7')break;
else {
cout<<"Please input a correct number from 1 to 6 again : ";
}
}
cout<<"name of the worker(姓名) : ";
cin>>name;
cout<<"number of the worker(编号) : ";
cin>>number;
cout<<"age of the worker(年龄) : ";
cin>>age;
cout<<"sex of the worker(male->input:'M' ; female->input:'F' 性别) : ";
cin>>sex;
cout<<"original salary of the worker(原始工资) : ";
cin>>osalary;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
switch(type){
case '1':
ad=new Administrator(name,number,sex,osalary,type,age);
ad->GetLevel();
company.push_back(ad);
break;
case '2':
cm=new Chairman(name,number,sex,osalary,type,age);
cm->GetLevel();
company.push_back(cm);
break;
case '3':
ce=new Ceo(name,number,sex,osalary,type,age);
ce->GetLevel();
company.push_back(ce);
break;
case '4':
ac=new Accountant(name,number,sex,osalary,type,age);
ac->GetLevel();
company.push_back(ac);
break;
case '5':
cl=new Clerk(name,number,sex,osalary,type,age);
cl->GetLevel();
company.push_back(cl);
break;
case '6':
st=new Student(name,number,sex,osalary,type,age);
st->GetLevel();
company.push_back(st);
break;
default:
cout<<"sorry : system error (对不起:系统出错)"<<endl;
Quit();
}
}
void Display(){
if(!company.empty()){
cout<<"number\tposition\tname\tage\tsex\tsalary\tincome\tlevel"<<endl;
for(vector<Worker*>::iterator iter=company.begin();iter!=company.end();++iter){
// (*iter)->GetLevel();//得到税后薪水以及工资等级
if((*iter)!=0){
cout<<(*iter)->number<<'\t'<<(*iter)->type<<'\t'<<(*iter)->name<<'\t'<<(*iter)->age;
cout<<'\t'<<(*iter)->sex<<'\t'<<(*iter)->osalary<<'\t'<<(*iter)->fsalary;
cout<<'\t'<<(*iter)->level<<endl;
}
}
}else cout<<"There is no data about our company ."<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
void Delete(){
int x;
cout<<"Please input the number of worker which you want to delete : ";
cin>>x;
if(!company.empty()){
for(vector<Worker*>::iterator iter=company.begin();iter!=company.end();++iter){
if((*iter)->number==x){
(*iter)=0;
return;
}
}
}
cout<<endl;
cout<<"The number is not correct of there is no such worker. "<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
void Count(){
int count=0;
if(!company.empty()){
for(vector<Worker*>::iterator iter=company.begin();iter!=company.end();++iter){
if((*iter))++count;
}
}
cout<<"The number of the workers in our company is "<<count<<". "<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
void Clear(){
company.clear();
}
void Search(){
int x;
cout<<"Please input the number you want to find :";
cin>>x;
cout<<endl;
if(!company.empty()){
for(vector<Worker*>::iterator iter=company.begin();iter!=company.end();++iter){
if((*iter)->number==x){
cout<<"number\tposition\tname\tage\tsex\tsalary\tincome\tlevel"<<endl;
cout<<(*iter)->number<<'\t'<<(*iter)->type<<'\t'<<(*iter)->name<<'\t'<<(*iter)->age;
cout<<'\t'<<(*iter)->sex<<'\t'<<(*iter)->osalary<<'\t'<<(*iter)->fsalary;
cout<<'\t'<<(*iter)->level<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
return;
}
}
}
cout<<"There is no data related to your number ."<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
}
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 oWXvkDN
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 rycscE4,
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 \BJnJk!%
1.程序分析:采取逆向思维的方法,从后往前推断。 @Ki`g(],P
2.程序源代码: h!d#=.R
main() i&_sbQ^
{ 6GJ?rE E/
int day,x1,x2; -$e\m] }Z
day=9; hfEGkaV._3
x2=1; o^7NZ]m
while(day>0) |W#^L`!G
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ 7Kh+m@q.
x2=x1; + FLzK(
day--; N18Zsdrp
} OsC1('4@
printf("the total is %d\n",x1); ={zYcVI
} N|7._AR2
----------------------------------------------------------------------------- ?+5K2Zk
【程序22】 y#x]?%m
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定 [=LQ,e$r7
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出 \J1Jn~
三队赛手的名单。 0Q>Yoa 11
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, *7-uQKp
则表明此数不是素数,反之是素数。 p&ZD1qa
2.程序源代码: a<vCAFQ
main() =&}dP%3LC)
{ ZYL]|/"J9
char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/ }1(F~6RH
for(i='x';i<='z';i++) D$`yxc
for(j='x';j<='z';j++) U)c,ZxE
{ [kC-g @
if(i!=j) BJ{mX>I(
for(k='x';k<='z';k++) n{UB^-}5
{ if(i!=k&&j!=k) w/Q'T&>b/
{ if(i!='x'&&k!='x'&&k!='z') L TO1LAac
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k); [>6:xGSe9X
} 'f5,%e2#
} r[~K m5
} ]LP&v3
} 4'_uN$${$
----------------------------------------------------------------------------- x2K.5q>
【程序23】 vsES`
题目:打印出如下图案(菱形) QEtZ]p1H@
5$zC,g*#
* j7uiZU;3Rx
*** bCE[oi6hb
****** 2&5"m;<
******** "4L' 2w+
****** BIX%Bu0'f
*** Y+WOU._46I
* 59ro-nA9v
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 xt40hZ$
for循环,第一层控制行,第二层控制列。 mDj:w#q
2.程序源代码: 6)DYQ^4y
main() &AlVJEI+
{ #nn2odR
int i,j,k; SRj|XCd
for(i=0;i<=3;i++) JNk ]$xz
{ eK3J9 ;X
for(j=0;j<=2-i;j++) | \Qr cf
printf(" "); knF *~O :y
for(k=0;k<=2*i;k++) "K~+T\^|k
printf("*"); f'R^MX2
printf("\n"); m"@M~~bh
} $Ne#F+M9x
for(i=0;i<=2;i++) Yc\;`C
{ :E'38~
for(j=0;j<=i;j++) oREZ^pE@
printf(" "); H}JH339
for(k=0;k<=4-2*i;k++) &87D.Yy^
printf("*"); cdzMao
printf("\n"); 'J]V"Z)
} vNi7=3
} j}S
----------------------------------------------------------------------------- Jp_{PR:&
【程序24】 0(-'L\<>x
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 }q27M
1.程序分析:请抓住分子与分母的变化规律。 b)'Ew27
2.程序源代码: u`K+0^)T`
main() Bn47O~
{ [0F+t,`
int n,t,number=20; /gXli)
float a=2,b=1,s=0; :]e:-JbT4z
for(n=1;n<=number;n++) 5GT,:0
{ <k}>eGn
s=s+a/b; t`H^! b
t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/ ]#))#-&1
} #`v`e"
printf("sum is %9.6f\n",s); =@V4V}?
} esbxx##\
----------------------------------------------------------------------------- NzNAhlXj3
【程序25】 Yy>%dL
题目:求1+2!+3!+...+20!的和 qs 52)$
1.程序分析:此程序只是把累加变成了累乘。 #qm<4]9 1
2.程序源代码: u\&oiwSIP
main() QRw3 06
{ x-CY G?-x
float n,s=0,t=1; fx%'7/+
for(n=1;n<=20;n++) M1Od%nz3
{ H*EQ%BLW^,
t*=n; `k _5Pz\
s+=t; [WX+/pm7>
} =EsKFt"
printf("1+2!+3!...+20!=%e\n",s); KW^s~j
} f1hi\p0q
----------------------------------------------------------------------------- l yO_rZT
【程序26】 I?s)^'
题目:利用递归方法求5!。 X f!Bsp#\g
1.程序分析:递归公式:fn=fn_1*4! _Vj O [hx
2.程序源代码: 9! gmS?f
#include "stdio.h" o9q%=/@,
main() n*@^c$&P
{ C<6u}czA
int i; 5j{o0&=_$
int fact(); cJj0`@0f
for(i=0;i<5;i++) T!(I\wz;Bo
printf("\40:%d!=%d\n",i,fact(i)); $7O[|:Yv
} Xdq2.:\
int fact(j) V*U"OJ%
int j; Rj+}L ~"
{ CH`4FR.-
int sum; +=$]fjE?
if(j==0) JWlH(-U4|
sum=1; 8[(c'rl|)|
else E J q=MP
sum=j*fact(j-1); {nm#aA%,
return sum; x #BUIi
} ;9=9D{-4+
NAx( Qi3
----------------------------------------------------------------------------- b;9v.MZ4>g
【程序27】 08yTTt76t
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 K34ca-~
1.程序分析: FspI[g UN,
2.程序源代码: *=~ 9?
#include "stdio.h" j=PQoEtU'<
main() H8P il H
{ B/i,QBPF]
int i=5; W\N-~9UA
void palin(int n); &tLg}7?iB
printf("\40:"); fnL!@WF
palin(i); K )KE0/ n
printf("\n"); Uc<B)7{'
} yr[iAi"
void palin(n) s-*8=
int n; pFGdm3pV
{ W{=>c/
char next; VskyRxfdW3
if(n<=1) 3M+hjc.
{ rM=Q.By+\
next=getchar(); 9i,QCA
printf("\n\0:"); +3]@0VM26;
putchar(next); 0-l @U{
} TcO@q ]+S
else (+CB)nV0IA
{ Z&JW}''n|F
next=getchar(); x4.-7%VV%
palin(n-1); <3Co/.VQd
putchar(next); w/h?, L|
} c}g^wLa
} <y-KW WE
1wE~dpnx
----------------------------------------------------------------------------- 'u_'y
【程序28】 S7E:&E&
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 niqiDT/
3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 4=*VXM/
问第一个人,他说是10岁。请问第五个人多大? C1)TEkc"C
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道 'JKFEUzM
第四人的岁数,依次类推,推到第一人(10岁),再往回推。 ,F6i5128{
2.程序源代码: 2+sNt6B2
age(n) G/N'8Q)
int n; RUYw D tC
{ Tx`;y|
int c; xh_6@}D2J
if(n==1) c=10; VISNmz2P
else c=age(n-1)+2; M:Xswwq
return(c); A4Q8^^byY
} h1FM)n[E7
main() <,HdX,5
{ printf("%d",age(5)); z"=#<C
} I/pavh
----------------------------------------------------------------------------- qZ6P(5X
【程序29】 zRL[.O9
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 .!l#z|/x
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) ^r}^-
2.程序源代码: .v/s9'lB
main( ) daGGgSbh
{ %fJ*Ql4M
long a,b,c,d,e,x; [-{L@
scanf("%ld",&x); R1 hb-
a=x/10000;/*分解出万位*/ Ke~a
b=x%10000/1000;/*分解出千位*/ -KCm#!
c=x%1000/100;/*分解出百位*/ H}dsd=yO
d=x%100/10;/*分解出十位*/ `.#e4 FBW
e=x%10;/*分解出个位*/ *&% kkbA
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); Y \& 4`v'
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); r2M._}bF
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); O5{>k
else if (d!=0) printf("there are 2, %ld %ld\n",e,d); bJx{mq
else if (e!=0) printf(" there are 1,%ld\n",e); >]&LbUW+
} 600-e;p
s@jzu
----------------------------------------------------------------------------- k8GcHqNHx
【程序30】 j_o6+R k
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 ?Q]&d!U Cs
1.程序分析:同29例 DSM,dO'
2.程序源代码: n-#?6`>a
main( ) oi::/W|A+
{ S5-}u)XnH
long ge,shi,qian,wan,x; )z=`,\&p:
scanf("%ld",&x); ]mn(lK
wan=x/10000; 2(\~z@g
qian=x%10000/1000; lw\OsB$
shi=x%100/10; 0N;Pb(%7UU
ge=x%10; (=j]fnH?
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ OU]!2[7c
printf("this number is a huiwen\n"); j;=+5PY
else l=Jbuc
printf("this number is not a huiwen\n"); vh"zYl`
}
一个C语言小程序的源代码分成了两个部分,怎么运行?
前者叫头文件,后者叫源文件。在运行源文件之前必须把需要用到的头文件包括进去。例如经常写的#include<stdio.h>,include就是包括的意思;所以你在运行sample.c之前也得想写其他头文件一样写上#include<sample.h>.只是常用到的头文件都已被写入VC库里了,所以也叫库文件。
求C语言小程序源代码,300行左右
#define ENTER 0x1c0d \/* 回车键值*\/int a[8][8]={0},key,score1,score2;\/*具体分数以及按键与存放棋子的变量*\/char playone[3],playtwo[3];\/*两个人的得分转换成字符串输出*\/void playtoplay(void);\/*人人对战函数*\/void DrawQp(void);\/*画棋盘函数*\/void SetPlayColor(int x);\/*设置棋子...
c语言能写出什么样有意思的小程序?
让机箱唱歌(不是音响哦,也不是耳麦) 原理就是调用Beep函数,控制时长。以下代码在vc++ 2008编译通过 \/\/ beep.cpp : 定义控制台应用程序的入口点。\/\/#include "stdafx.h"include "windows.h"define ONE_BEEP 600 define HALF_BEEP 300#define NOTE_1 440 define NOTE_2 495 defin...
求一个c语言小程序源代码 可以运行不要太长的,十行二十行都行。 要...
include <stdio.h>\/\/包含标准输入输出流头文件 void print();\/\/申明一个函数 int main(int argc, char* argv[]){ int number = 1000;\/\/申明一个整型变量并赋值为1000 printf("这是一个控制台程序number 的值为 %d\\n", number);\/\/打印一句话,其中%d将被number的值代替 print();\/\/调用pr...
求助啊,谁有有趣的c语言小程序,并且要有源代码!!
学习“推箱子”C语言编码:include <stdio.h> include <conio.h> include<stdlib.h> include<windows.h> int m =0; \/\/m代表第几关 struct maps{short a[9][11]; };struct maps map[5]={ 0,0,0,0,0,0,0,0,0,0,0, \/\/共5关,每关9行 0,1,1,1,1,1,1,1,0,0,0,0,...
求一个C语言小程序(五子棋)源代码
小程序台球 五子棋程序源代码 五子棋源代码c语言 winform五子棋源代码 其他类似问题 2016-05-28 谁能给一个c语言五子棋程序源代码要可以运行的 2015-07-25 求一个C语言编写的五子棋代码 2011-01-11 如何用C语言做一个五子棋程序?要有源代码。 2015-06-27 C语言设计出的鼠标操作的五子棋源代码 1 ...
怎么编写C语言程序,如:Helloworld的?
1、点击确定即可,创建出一个helloworld.c的小程序,然后我们就可以编写我们的Hello World小程序了。此时就需要我们的VC++ 6.0来编译此程序,编译无错误才运行此程序,编译按钮和运行按钮如下图的红色箭头处:2、或者可以点击组建工具栏下的编译菜单项,然后再点击执行菜单项,也有快捷键,按Ctrl+F7编译...
用C语言编写一个简单的图书管理小程序
源代码如下:include<iostream> include<iomanip> include<string> include<fstream> include<stdio.h> using namespace std;const int maxb=10000; \/\/最多的图书 class book\/\/图书类 { int tag; \/\/删除标记1:已删0:未删 int number; \/\/isbn书号 char name[20]; ...
求几个简单的C语言小程序
\/\/求a和b最大公约数程序1:int yue(int a,int b){ int k=1;int t=a>b?b:a;\/\/a大取b,否则取a for(int i=1;i<=t;i++){ if((a%i==0)&&(b%i==0)) k=i;else continue;} return k;\/\/返回最大公约数 } \/\/求a和b的最小公倍数,参数c传递的是a和b的最大公约数 int...
一个C语言小程序,源代码和输出结果如下。遇到了printf输出问题。程 ...
问题在于那句scanf("%d\\n",&n);应该是scanf("%d",&n);不要\\n \\n在scanf中不表示等待换行符,而是读取并放弃连续的空白字符 可参考以下文章 http:\/\/blog.csdn.net\/bobo0421\/article\/details\/4546955
步姚誉舒: //将Hello World 打印到屏幕上#include using namespace std; int main() { coutreturn 0; }
浮山县17376874584: 急求C++小程序 - ?
步姚誉舒: 请看下面程序:#include#include void xopy();void prime();void sort(int*,int);void printstar(int);void main(){ char c='1'; while(c!='5'){ cou...
浮山县17376874584: 求一个简单的c++小程序.谢谢 - ?
步姚誉舒: #include <iostream>#include <stdlib.h> using namespace std; int main(int argc, char *argv[]) {int m,n,i; cin>>n>>m; while(n--) {i=m; while(i--) cout<<"*"; cout<<endl; } return 0; }
浮山县17376874584: 求一个自己做的c或者c++小程序,20行左右的.要有较详细的注释.交c++作业~ - ?
步姚誉舒: 帮别人解答的一个题目,供楼主选用 题目:某图初始状态为一个三角形,此后每一时间步内都以上一时间步内新增加的边为一边再构造一个新的三角形(参见下图),请设计程序计算如此经历20步(T=20),此时图中有多少条边,多少个点....
浮山县17376874584: 求c++程序代码20分 高手快来 - ?
步姚誉舒: struct { string english; string chinaese; }dicWords; class Dic { public: void dic(); void ~dic(); void ViewEnglish(); void ViewChinaese(); void AddDic(string &chadic,string &engdic); string TransTo(string &dic); private: typedef map dicmap; typedef map::iterator dicite; }
浮山县17376874584: 求个c++的程序,求20的阶乘,用putchar输出 - ?
步姚誉舒: #include#include#include using namespace std; int main() { unsigned long long ans=1; for(int i=1;ians*=i; cout}20!虽然超过了long long int的范围,但可以用unsigned long long,并不需要用字符串写高精度.如果要高精度的模板也可以发.
浮山县17376874584: 跪求C++小程序源代码 - ?
步姚誉舒: //stack.h #ifndef HEADER_STACK #define HEADER_STACK class Stack {int a[10];int *p; public:Stack();void pop(int e);void push();void putout(); }; #endif //stack.cpp #include"stack.h" #includeusing namespace std; void Stack::pop(int e)...
浮山县17376874584: 跪求一个用C++语言编写的程序源代码?要求是制作一个通讯录! - ?
步姚誉舒: 以下是C++语言编写的通讯录源代码!#include using namespace std;#include class person { public: char name[10],sex[4],tel[11],add[20],postnum[10],e_mail[20],QQ[11],kind[10];//kind 类别:朋友,同学... public: person() {} void input() { cout cin>>...
浮山县17376874584: 一个c++简单程序的源代码?
步姚誉舒: #include <iostream.h> int main() { int a; cin>>a; cout<<a; return 0; } 上面是一个很简单的程序,希望你能够从中有所领悟.加油啊!
浮山县17376874584: 求一简单C++程序代码 谢谢 - ?
步姚誉舒: #include <iostream> using namespace std; int main(){ int a; cout<<("你好!"); cout<<("请输入a."); cin>>a; cout<<("祝你天天快乐!"); int b; cin>>b; cout<<("再见!"); return 0; }