c++实验

个人博客: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(
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值