C++语言题目4
//超市每天卖出的货物假如有egg,apple,pear三种,销售账目存储在了字典里,如下:
//account = [{"egg":[5.00, 3, "s"],
//"apple":[2.50, 5, "s"],
//"pear":[4.50, 2, "s"]},
//{"egg":[6.00, 3, "s"],
//"apple":[3.00, 15, "q"],
//"pear":[6.50, 2, "s"]},
//{"egg":[5.50, 5, "s"],
//"apple":[3.50, 5, "s"],
//"pear":[5.00, 6, "q"]},
//{"egg":[5.00, 3, "s"],
//"apple":[2.50, 6, "s"],
//"pear":[5.50, 2, "q"]},
//{"egg":[5.50, 8, "q"],
//"apple":[3.50, 5, "s"],
//"pear":[5.50, 3, "s"]}]
//每天的账目是列表中的一个元素,包括一个字典,字典的键是货物名称,字典的值的第一个元素是单价,
//第二个元素是数目,第三个元素,如果是s表示该账目没有任何疑问,如果是q表示该账目可能有错误。
//我们要做的是事情是统计每种货物,没有任何疑问的账目的销售总额。也就是对标志位为"s"的账目,
//按照货物名称,计算销售总额。(自己可根据使用的编程语言,确定存储结构,最后结果在屏幕打印
//egg、apple和pear分别的没有任何疑问的帐目的销售总额就可以。)
#include"iostream"
#include"string"
using namespace std;
class Account
{
private:
string name;
double price;
float number;
char flag;
public:
Account(string goodsname, double goodsprice, float goodsnumber, char goodsflag)
{
name = goodsname;
price = goodsprice;
number = goodsnumber;
flag = goodsflag;
}
double getTotalPrice()
{
return price*number;
}
string getName()
{
return name;
}
char getFlag()
{
return flag;
}
};
int main()
{
Account accounts[15] = {
Account("egg",5.00,3,'s'),
Account("apple",2.50,5,'s'),
Account("pear",4.50,2,'s'),
Account("egg",6.00,3,'s'),
Account("apple",3.00,15,'q'),
Account("pear",6.50,2,'s'),
Account("egg",5.50,5,'s'),
Account("apple",3.50,5,'s'),
Account("pear",5.00,6,'q'),
Account("egg",5.00,3,'s'),
Account("apple",2.50,6,'s'),
Account("pear",5.50,2,'q'),
Account("egg",5.50,8,'q'),
Account("apple",3.50,5,'s'),
Account("pear",5.50,3,'s')};
string names[3] = {"egg", "apple", "pear"};
int i=0;
int j;
double count=0;
for(i=0; i<3; i++)
{
count = 0;
for(j=0; j<15; j++)
{
if((accounts[j].getName() == names[i]) && (accounts[j].getFlag() == 's'))
{
count = count + accounts[j].getTotalPrice();
}
}
cout<<names[i]<<"的总价是:"<<count<<endl;
}
return 1;
}
C++语言题目3
//采用面向对象的方法实现一个stack类,操作包括进栈,出栈,取栈顶元素,显示整个栈;
//(只要内存够用,可以无限次进栈)
#include"iostream"
using namespace std;
class Node{
private:
int x;
Node* next;
public:
Node(int data)
{
x = data;
}
void setNext(Node* p)
{
next = p;
}
Node* getNext()
{
return next;
}
int setData(int number)
{
x = number;
}
int getData()
{
return x;
}
~Node(){}
};
class Stack
{
private:
Node *nodelast;
public:
Stack()
{
nodelast = new Node(0);
nodelast->setNext(NULL);
}
void pushData(int x)
{
Node *p = new Node(x);
p->setNext(nodelast->getNext());
nodelast->setNext(p);
nodelast->setData(nodelast->getData()+1);
}
int popData()
{
int value;
int error = 0;
Node *p = nodelast->getNext();
Node *q = p;
if((p != NULL))
{
value = q->getData();
p = p->getNext();
nodelast->setNext(p);
nodelast->setData(nodelast->getData()-1);
delete q;
return value;
}
else
{
throw error;
}
}
int getTopData()
{
int value;
int error = 0;
Node *p = nodelast->getNext();
if((p != NULL))
{
value = p->getData();
return value;
}
else
{
throw error;
}
}
void showStack()
{
int i;
Node *p = nodelast;
cout<<"Top ";
for(i=0; i< nodelast->getData(); i++)
{
p = p->getNext();
cout<< p->getData()<<" ";
}
cout<<"End"<<endl;
}
};
int main()
{
int value;
Stack s;
try
{
cout<<"出栈:"<<endl;
s.popData();
}
catch(int)
{
cout<<"栈为空!"<<endl;
}
cout<<"入栈1,3,2:"<<endl;
s.pushData(1);
s.pushData(3);
s.pushData(2);
s.showStack();
try
{
value = s.popData();
cout<<"出栈:"<<value<<endl;
s.showStack();
value = s.getTopData();
cout<<"当前栈顶元素:"<<value<<endl;
s.showStack();
}
catch(int)
{
cout<<"栈为空!"<<endl;
}
cout<<"入栈3,4,5:"<<endl;
s.pushData(3);
s.pushData(4);
s.pushData(5);
s.showStack();
return 1;
}
C++语言题目2
//某软件需要把运行过程中的一些日志信息(发生时间,类型,内容)进行记录,
//采用面向对象思想,实现了一个日志类Log, Log类中有saveLog方法存储日志
//信息,现在假设该软件支持日志信息的多种存储方式,例如可以将日志信息
//存储进文本文件,也可以放入某数据库中,Log类的设计尽量满足面向对象的
//开-闭原则(支持对新的存储方式的扩展,但Log类的代码不修改),请设计并实现。
#include"iostream"
#include"string"
using namespace std;
class Log{
public:
virtual void saveLog() = 0;
};
class LogSaveToFile:public Log
{
private:
string content;
public:
LogSaveToFile(string logcontent)
{
content = logcontent;
}
void saveLog()
{
cout<<"这是日志内容:"<<content<<endl;
cout<<"已经把日志写到文本文件。"<<endl;
}
};
class LogSaveToSQLServer:public Log
{
private:
string content;
public:
LogSaveToSQLServer(string logcontent)
{
content = logcontent;
}
void saveLog()
{
cout<<"这是日志内容:"<<content<<endl;
cout<<"已经把日志写到SQL Server。"<<endl;
}
};
int main()
{
cout<<"1、把日志写到文本文件:"<<endl;
LogSaveToFile lstf("abc");
lstf.saveLog();
cout<<"2、把日志写到SQL Server:"<<endl;
LogSaveToSQLServer ltss("abc");
ltss.saveLog();
return 1;
}
C++语言题目1
//为二元方程式ax**2+bx+c=0设计一个名为QuadraticEquation的类,这个类包括
//1、代表三个系数的私有域数据a、b、c
//2、一个参数为a、b、c的构造方法
//3、a、b、c的三个get方法
//4、一个名为getDiscriminant()的方法返回判别式结果:b**2-4ac
//5、一个名为getRoot1()和getRoot2()的方法返回等式的两个根
//这两个方法在判别式为非负数的时候返回计算结果,如果判别式为负数,这两个方法返回0.
//实现该类,编写一个测试程序,任给a、b、c的值创建一个QuadraticEquation对象,
//显示判别式结果。如果判别式为正数,输出该方程的两个根;如果判别式为0,输出一个根;
//如果判别式为负数,输出“该方程无根”。
#include"iostream"
#include"cmath"
using namespace std;
class QuadraticEquation
{
private:
double a;
double b;
double c;
public:
QuadraticEquation(double tempa, double tempb, double tempc)
{
a = tempa;
b = tempb;
c = tempc;
}
double geta()
{
return a;
}
double getb()
{
return b;
}
double getc()
{
return c;
}
double getDiscriminant()
{
return getb()*getb()-4*geta()*getc();
}
double getRoot1()
{
if(getDiscriminant()>=0)
{
return (-getb()+sqrt(getDiscriminant()))/(2*geta());
}
else
{
return 0;
}
}
double getRoot2()
{
if(getDiscriminant()>=0)
{
return (-getb()-sqrt(getDiscriminant()))/(2*geta());
}
else
{
return 0;
}
}
};
int main()
{
QuadraticEquation q(1,-8,15);
cout<<"方程系数a为:"<<q.geta()<<endl;
cout<<"方程系数b为:"<<q.getb()<<endl;
cout<<"方程系数c为:"<<q.getc()<<endl;
cout<<"判别式结果为:"<<q.getDiscriminant()<<endl;
if(q.getDiscriminant()>0)
{
cout<<"方程的根为:x1="<<q.getRoot1()<<",x2="<<q.getRoot2()<<endl;
}
else if(q.getDiscriminant()==0)
{
cout<<"方程的根为:x1=x2="<<q.getRoot1()<<endl;
}
else
{
cout<<"该方程无根"<<endl;
}
return 0;
}