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; }