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