个人博客:www.huangrd.top,欢迎访问学习更多知识。
西安建筑科技大学c++实验代码
一、数组
编写一个程序,将数字从键盘读入int[ ]类型的数组中。你可以假设数组中最多有50个元素。你的程序最多允许输入50个数字。输出为一个两列的列表。第一列列出了不同的数组元素;第二列是每个元素的出现次数。这个列表应该按照第一列元素从大到小的顺序排序。
对于数组
-12 3 -12 4 1 1 -12 1 -1 1 2 3 4 2 3 -12
输出应该如下所示:
N Count
4 2
3 3
2 2
1 4
-1 1
-12 4
要求写程序注释。
#include <iostream>
using namespace std;
void sortArray(int left,int right,int a[])//快速排序
{
if (left >= right) //递归边界条件
{
return;
}
int i, j, base, temp;
i = left;
j = right;
base = a[left];
while (i < j)
{
while (a[j] <= base && i < j)
{
j--;
}
while (a[i] >= base && i < j)
{
i++;
}
if (i < j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[i];
a[i] = base;
sortArray(left, i - 1, a);
sortArray(i + 1, right, a);
}
void compareArray(int a[], int len)//进行比较
{
int slowP = 0;//定义快慢指针
int fastP = 1;
int j = 1;
cout << "N Count" << endl;
while (fastP <= len)
{
if (a[slowP] == a[fastP])//若a[slowP] == a[fastP](快指针等于慢指针),用j来计数,使其++,再利用两个指针++来判断下一个
{
j++;
slowP++;
fastP++;
}
else//若两个指针的值不相同,则输出慢指针,此时慢指针的值真是重复出现的值,并对j的值进行初始化。
{
cout << a[slowP] << " " << j << endl;
slowP++;
fastP++;
j = 1;
}
}
}
int main()
{
int a[50] = {
0 };
int num = 1;
int i = 0;
while(i<16)
{
cin >> num;
a[i] = num;
i++;
}
sortArray(0,i-1,a);//利用冒泡排序排序数组
compareArray(a, i);//根据题目要求,调用函数输出
system("pause");
return 0;
}
二、面向对象
一、 实验内容
1、创建一个名为Pizza的类,用它来存储单个比萨饼的信息。这个类应包含以下内容:
几个私有变量,分别用来存储比萨的尺寸(小,中,大)、奶酪配料数量、意大利腊香肠配料数量和火腿配料数量。
一个(或多个)构造函数,用于设置所有变量的数值。
几个公有函数,用于获取和设置变量的数值。
一个名为calcCost () 的公有函数,用于返回一个表示比萨饼价格的double值。
比萨饼价格由以下内容决定:
小:10美元+每份配料2美元
中:12美元+每份配料2美元
大:14美元+每份配料2美元
编写测试代码来生成几个比萨饼信息并输出对这些披萨的价格。例如,一个大比萨饼外加一份奶酪配料、一份意大利腊香肠配料及两份火腿配料的总价格应为22美元
要求写程序注释。
2、对程序1进行扩充,需要你创建一个PizzaOrder类,这个类允许一个订单里最多存储三个披萨饼的信息。每个存储进来的披萨饼信息都应该是一个披萨饼对象。除了合适的变量和构造函数外,还要有以下的函数:
public int getNumPizzas()—返回订单中的披萨的个数。
public Pizza* getPizza1()—返回订单中的第一个披萨,如果pizza1未设置就返回null。
public Pizza* getPizza2()— 返回订单中第二个披萨,如果pizza2未设置就返回null。
public Pizza* getPizza3()— 返回订单中第三个披萨,如果pizza3未设置就返回null。
对于带有另一个PizzaOrder对象并为其比萨创建一个独立的复制构造函数。
使用旧订单作为新订单的起始点可能很有用。
编写一个main函数来测试这个类。如果订单中有两个或者三个披萨饼,则会用到setPizza2和setPizza3函数。下面的代码示例对函数进行了说明。注意代码不完整。作为程序的一部分,你必须补充完整。例如:
Pizza pizza1 = // 这一行代码创建一个大披萨饼,一份奶酪,一份火腿
Pizza pizza2 = // 这一行代码创建一个中披萨饼,两份奶酪,两份意大利腊香肠。
PizzaOrder order1 = // 这一行代码创建一个订单
order1.setNumPizzas(2); // 订单中有两个披萨
order1.setPizza1(pizza1); // 设置第一个披萨
order1.setPizza2(pizza2); // 设置第二个披萨
double total = order1.calcTotal(); // 计算订单的总价格:18+20 = 38
要求写程序注释。
#include <iostream>
#include <string>
using namespace std;
class Pizza
{
public:
Pizza(