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

来源:互联网 发布:上海黑马程序员地址 编辑:程序博客网 时间:2024/06/06 02:36


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;//while ((c = getchar()) != '\n')   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";/*修改*/}








0 0
原创粉丝点击