您的位置:首页 > 编程语言 > C语言/C++

自学C++之自定义数据类型与自定义类之数组使用4例

2014-05-06 16:04 344 查看

2014年05月26日→星座:双子座

二〇一四年四月廿八

甲午〖马〗,己巳月,丁酉日,戊申时

今属:火;五行:木火土金;缺:水。

纳音五行:沙中金。

药王菩萨圣诞纪念日

都是百度知道的答复.

之一:

1、 用数组和自定义函数求某班的及格人数和及格人的平均分(用全局变量)。

2、 用结构描述一个学生的信息,包含:学号、姓名、成绩。从键盘输入一批学生(人数自定)的数据,统计不及格的人数,并将不及格人员的信息输出。

struct 学生信息类{ int 学号; string 姓名; int 成绩; };
void 学生信息处理(学生信息类 班级信息[], int 人数)
{
	float 平均分数(0.0); int 计数(0);
	do
	{
		平均分数 += 班级信息[计数].成绩;
		计数++;
	} while (人数 > 计数);
	cout << "平均分数:" << 平均分数 / 人数 << endl;
	计数 = 0;
	do
	{
		if (班级信息[计数].成绩 < 60)
			cout << "不及格姓名:" << 班级信息[计数].姓名 << endl;
		计数++;
	} while (人数 > 计数);
};

设计完成可后优化:也可依据输出信息是否有特定次序而定是否使用一个循环去完成。

void 学生信息处理(学生信息类 班级信息[], int 人数)
{
	float 平均分数(0.0); int 计数(0);
	do
	{
		if (班级信息[计数].成绩 < 60)
			cout << "不及格姓名:" << 班级信息[计数].姓名 << endl;
		平均分数 += 班级信息[计数].成绩;
		计数++;
	} while (人数 > 计数);
	cout << "平均分数:" << 平均分数 / 人数 << endl;
};


主函数

int _tmain(int argc, _TCHAR* argv[])
{
起始:

	
	int 成绩(0), 学号(0), 人数(0), 计数(0);
	string 姓名("");/*C/C++最好养成初始化习惯*/
	学生信息类 班级信息[180]{ { 0 } };/*初始化第一个元素int为0,之下初始化全部在需要时参考,可以不写使用默认初始化int为负值*/
 do
 {
  班级信息[计数] = { { 0 } };
  计数++;
 } while (计数 < 180);
	cout << "请输入统计人数:";
	cin >> 人数;
	cout << "请输入学生信息:" << endl;
 计数 = 0;/*被使用后另一个使用前清零,否则影响程序正确运行,除了下例需要连续性外*/
	do
	{
		cin >> 学号 >> 姓名 >> 成绩;
		班级信息[计数] = { 学号, 姓名, 成绩 };
		计数++;
	} while (人数 > 计数);
	学生信息处理(班级信息, 人数);
}




之二:来自百度知道的提问.

struct 菜单数据{ string 菜名; int 价格; };
class 电话食物
{
public:
	void 显示定餐列表(int 数量, string 顾客[], int 菜品[], 菜单数据 菜单[]);
	void 显示食物列表(菜单数据 菜单[]);
	电话食物() : 列(0), 表(0){}
private:
	int 列, 表;
};
void 电话食物::显示食物列表(菜单数据 信息[])
{
	int 计数(1);
	cout << "荤菜类:" << endl;
	do
	{
		printf("%2d.", 计数);
		cout << 信息[计数 - 1].菜名 << " ";
		if (计数 % 3 == 0)cout << endl;
		计数++;
	} while (计数 <= 18);
	cout << "素菜类:" << endl;
	do
	{
		printf("%2d.", 计数);
		cout << 信息[计数 - 1].菜名 << " ";
		if (计数 % 3 == 0)cout << endl;
		计数++;
	} while (计数 <= 30);
	cout << "汤  类:" << endl;
	do
	{
		printf("%2d.", 计数);
		cout << 信息[计数 - 1].菜名 << " ";
		计数++;
	} while (计数 <= 34);
	cout << endl << "面食类:" << endl;
	do
	{
		printf("%2d.", 计数);
		cout << 信息[计数 - 1].菜名 << " ";
		计数++;
	} while (计数 <= 38);
	cout << endl << endl;
	printf("%2d.", 计数);
	cout << 信息[计数 - 1].菜名;
};
void 电话食物::显示定餐列表(int 预订数量, string 顾客信息[], int 菜品信息[], 菜单数据 菜单[])
{
	int 合计(0);
	cout << "您定餐的信息如下:" << endl;
	do
	{
		--预订数量;
		合计 += 菜单[菜品信息[预订数量]].价格;
		cout << 菜单[菜品信息[预订数量]].菜名<< endl;
	} while (预订数量 > 0);
	cout << "总价:" << 合计 << "元。" << endl;
	cout << "您的姓名:" << 顾客信息[0] << endl;
	cout << "您的电话:" << 顾客信息[1] << endl;
	cout << "用餐人数:" << 顾客信息[2] << endl;
	cout << "就餐时间:" << 顾客信息[3] << endl;
	cout << "感谢您惠顾☆☆☆☆☆☆餐馆!" << endl;
};


主函数

int _tmain(int argc, _TCHAR* argv[])
{
 电话食物 我的食物{};
 菜单数据 菜单信息[39] =
 {
  { "清 蒸 鱼 - 10元", 10 }, { "剁椒鱼头 - 10元", 10 }, { "红烧带鱼 - 10元", 10 }, { "清蒸鲈鱼 - 10元", 10 }, { "红烧鲫鱼 - 10元", 10 }, { "红烧鲤鱼 - 10元", 10 },
  { "可乐鸡翅 - 30元", 30 }, { "宫保鸡丁 - 30元", 30 }, { "红烧鸡翅 - 30元", 30 }, { "泡椒凤爪 - 30元", 30 }, { "红烧鸡块 - 30元", 30 }, { "香菇炖鸡 - 30元", 30 },
  { "油焖大虾 - 40元", 40 }, { "清炒虾仁 - 40元", 40 }, { "红烧排骨 - 40元", 40 }, { "蒸 排 骨 - 40元", 40 }, { "排    骨 - 40元", 40 }, { "蒜香排骨 - 40元", 40 },
  { "麻辣豆腐 - 10元", 10 }, { "凉拌豆腐 - 10元", 10 }, { "酸辣土豆 - 10元", 10 }, { "凉拌土豆 - 10元", 10 }, { "蔬菜沙拉 - 10元", 10 }, { "煸豆松仁 - 10元", 10 },
  { "玉米干煸 - 10元", 10 }, { "四 季 豆 - 10元", 10 }, { "清炒山药 - 10元", 10 }, { "蚝油生菜 - 10元", 10 }, { "拔丝苹果 - 10元", 10 }, { "拔丝地瓜 - 10元", 10 },
  { "海 带 汤 - 10元", 10 }, { "鲫 鱼 汤 - 10元", 10 }, { "鱼 头 汤 - 10元", 10 }, { "乌 鸡 汤 - 10元", 10 },
  { "炸 酱 面 - 15元", 15 }, { "凉 拌 面 - 15元", 15 }, { "牛 肉 面 - 15元", 15 }, { "刀 削 面 - 15元", 15 },
  { "米饭每碗 - 01元", 1 }
 };
 int 选择(0), 计数(0), 菜品[39]{ 0 }; string 顾客[4]{""};
 cout << "*********欢迎光临☆☆☆☆☆☆餐馆*********" << endl;
 我的食物.显示食物列表(菜单信息);
 cout << endl << endl << "请选择您需要的服务(输入序号即可):" << endl;
 cout << "【1】填写订餐列表  【2】查看订餐情况" << endl;
 cout << "【3】删除订单   【4】在线刷卡" << endl;
 cin >> 选择;
 if (选择 == 1)
 { 
  cout << "请选择您所需要菜品(输入序号),选择完成输入99结束:" << endl;
  do
  {
   cin >> 选择;
   if (选择 == 99)break;
   if (选择 > 39)
   {
    cout << "错误?请重新输入正确的序号!" << endl;
    continue;
   }
   else
   {
    菜品[计数] = 选择;
    计数++;
   }
  } while (选择 <= 39);
 }
  
 cout << "请输入您的姓名:" << endl;
 cin >> 顾客[0];
 cout << "请输入您的电话:" << endl;
 cin >> 顾客[1];
 cout << "请输入您用餐的人数:" << endl;
 cin >> 顾客[2];
 cout << "请输入就餐时间:" << endl;
 cin >> 顾客[3];
 我的食物.显示定餐列表(计数, 顾客, 菜品, 菜单信息);
}




之三:
struct 学生信息类{ string 学号; string 姓名; int 成绩1; int 成绩2; int 成绩3; int 成绩4; int 成绩5; int 成绩6; int 成绩7; int 成绩8; int 成绩9; };
struct 学生信息组类{ string 学号; string 姓名; int 成绩[9]; };
void 学生信息处理(学生信息类 班级信息[], int 人数)
{
	int 计数(0); float 分数(0.0);
	cout << "学号    姓名    801     802     803     804     805     806     807     808     809     总学分" << endl;
	do
	{
		分数 = 班级信息[计数].成绩1 + 班级信息[计数].成绩2 + 班级信息[计数].成绩3 + 班级信息[计数].成绩4 + 班级信息[计数].成绩5 + 班级信息[计数].成绩6 + 班级信息[计数].成绩7 + 班级信息[计数].成绩8 + 班级信息[计数].成绩9;
		cout << 班级信息[计数].学号 << '\t' << 班级信息[计数].姓名 << '\t' << 班级信息[计数].成绩1 << '\t' << 班级信息[计数].成绩2 << '\t' << 班级信息[计数].成绩3 << '\t' << 班级信息[计数].成绩4 << '\t' << 班级信息[计数].成绩5 << '\t' << 班级信息[计数].成绩6 << '\t' << 班级信息[计数].成绩7 << '\t' << 班级信息[计数].成绩8 << '\t' << 班级信息[计数].成绩9 << '\t' << 分数 << endl;
		计数++;
	} while (人数 > 计数);
};

主函数:
学生信息类 信息[2] = {};
	int 成绩[9], 计数(0); string 姓名(""), 学号("");
	do
	{
		cin >> 学号 >> 姓名 >> 成绩[0] >> 成绩[1] >> 成绩[2] >> 成绩[3] >> 成绩[4] >> 成绩[5] >> 成绩[6] >> 成绩[7] >> 成绩[8];
		信息[计数] = { 学号, 姓名, 成绩[0], 成绩[1], 成绩[2], 成绩[3], 成绩[4], 成绩[5], 成绩[6], 成绩[7], 成绩[8] };
	} while (++计数 < 2);
	学生信息处理(信息, 2);

	//学生信息组类 信息组[2] = {};
	//int 成绩组(0), 计数(0); string 姓名(""), 学号("");
	//do
	//{
	//	cin >> 学号 >> 姓名;
	//	信息组[计数] = { 学号, 姓名 };
	//	do
	//	{
	//		cin >> 信息组[计数].成绩[成绩组];
	//	} while (++成绩组 < 9);
	//	成绩组 = 0;
	//} while (++计数 < 2);



另一种写法留给练习了


之四:只用有添加,修改,显示,查找,删除这五个功能就行,学生信息有学号,姓名,年龄,性别,住址,电话就行,不要太复杂了,能注释一下更好,可加分!!
struct 学生个人信息类{ string 学号; string 姓名; int 年龄; string 性别; string 住址; int 电话; };

主函数调用:
学生个人信息类 学生个人信息[1]{};
	std::vector<学生个人信息类>学生个人信息组;
	std::cin >> 学生个人信息[0].学号 >> 学生个人信息[0].姓名 >> 学生个人信息[0].性别 >> 学生个人信息[0].年龄 >> 学生个人信息[0].电话 >> 学生个人信息[0].住址;
	学生个人信息组.push_back(学生个人信息[0]);/*添加*/
	学生个人信息组.push_back(学生个人信息[0]);/*添加*/
	std::vector<学生个人信息类>::iterator i;
	i = 学生个人信息组.end();
	学生个人信息[0].学号 = "002";/*修改*/
	学生个人信息组.insert(i, 学生个人信息[0]);/*插入*/
	std::vector<学生个人信息类>::iterator s = 学生个人信息组.begin();
	学生个人信息组.erase(s);/*删除*/
	int size = 学生个人信息组.size();
	for (int a = 0; a < size;a++)
	if (学生个人信息组.at(a).学号 == "001")
	{
		std::cout << 学生个人信息组.at(a).学号 << '\t' << 学生个人信息组.at(a).姓名 << '\t' << 学生个人信息组.at(a).性别 << '\t' << 学生个人信息组.at(a).年龄 << '\t' << 学生个人信息组.at(a).电话 << '\t' << 学生个人信息组.at(a).住址 << std::endl;/*输出和查找,写一个简单的就不用容器适配器写了*/
		学生个人信息组.at(a).学号 = "004";/*修改*/
	}








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: