求C++一个综合训练的代码!急
C语言综合训练是为了提高学生综合使用本学期我们所学的C语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用C语言设计一个大型程序,并提供相关的设计文档和源程序,从网站提交。
二、C语言综合训练程序设计要求
已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放:
1001 stuname1 89
1002 stuname2 78
1003 stuname3 60
......
1100 stuname100 87
请按照如下要求编写程序:
a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
b. 将文本文件的内容读入到结构体数组中;
c. 显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
d. 显示平均成绩、高于、低于和等于平均成绩的人数;
e. 显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;
f. 将以上显示的信息存放到stuout.txt文件中;
三、C语言综合训练设计报告要求
a. 结合教材第二章的内容,写出本次综合训练的分析文档;
b. 文档要求以WORD排版,语言简练,条理清楚;
c. 测试过程中遇到的主要问题及采取的解决措施;
d. 最后写出本次设计的个人总结;
e. 文档以“设计报告.DOC”名字保存。
答案:#include "iostream"
using namespace std;
struct Student
{
int xuehao;
char name[20];
int chengji;
};
int Open(struct Student Stu[100])
{
FILE *fp;
char ch;
int temp = 0, i = 0, j = 0;
fopen_s(&fp, "stuin.txt", "r");
Stu[i].xuehao = 0;
Stu[i].chengji = 0;
while (fread(&ch, sizeof (char), 1, fp) != 0)
{
if (ch != ' ' && ch != '\n')
{
if (temp == 0)
{
Stu[i].xuehao = Stu[i].xuehao * 10 + ch - '0';
}
else if (temp == 1)
{
Stu[i].name[j] = ch;
j++;
}
else if (temp == 2)
{
Stu[i].chengji = Stu[i].chengji * 10 + ch - '0';
}
}
else
{
temp++;
if (temp == 2)
{
Stu[i].name[j] = '\0';
j = 0;
}
else if (temp == 3)
{
temp = 0;
i++;
Stu[i].xuehao = 0;
Stu[i].chengji = 0;
}
}
}
fclose(fp);
return i;
}
void Show(struct Student Stu[100], int num)
{
int temp = 0;
int k = 0;
for (int i = 0; i < num; i++)
{
if (Stu[i].chengji > temp)
{
temp = Stu[i].chengji;
}
}
for (int i = 0; i < num; i++)
{
if (Stu[i].chengji == temp)
{
k++;
}
}
cout << "成绩最高的有 " << k << " 人" << endl;
for (int i = 0; i < num; i++)
{
if (Stu[i].chengji == temp)
{
cout << Stu[i].xuehao << "\t" << Stu[i].name << "\t" << Stu[i].chengji << endl;
}
}
}
void Showmid(struct Student Stu[100], int num)
{
int temp = 0, high = 0, low = 0, equal = 0;
for (int i = 0; i < num; i++)
{
temp += Stu[i].chengji;
}
temp /= num;
for (int i = 0; i < num; i++)
{
if (Stu[i].chengji == temp)
{
equal++;
}
else if (Stu[i].chengji < temp)
{
low++;
}
else if (Stu[i].chengji > temp)
{
high++;
}
}
cout << "平均成绩: " << temp << endl;
cout << "有 " << high << " 人高于平均成绩" << endl;
cout << "有 " << equal << " 人等于平均成绩" << endl;
cout << "有 " << low << " 人低于平均成绩" << endl;
}
void Showpercent(struct Student Stu[100], int num)
{
float youxiu = 0, lianghao = 0, zhongdeng = 0, jige = 0, bujige = 0;
for (int i = 0; i < num; i++)
{
if (Stu[i].chengji >= 90)
{
youxiu++;
}
else if (Stu[i].chengji >= 80)
{
lianghao++;
}
else if (Stu[i].chengji >= 70)
{
zhongdeng++;
}
else if (Stu[i].chengji >= 60)
{
jige++;
}
else
{
bujige++;
}
}
cout << "一共有 " << num << " 个学生" << endl;
cout << "优秀(90~100)的有 " << youxiu << " 人\t占 " << youxiu / num * 100 << " %" << endl;
cout << "良好(80~89)的有 " << lianghao << " 人\t占 " << lianghao / num * 100 << " %" << endl;
cout << "中等(70~79)的有 " << zhongdeng << " 人\t占 " << zhongdeng / num * 100 << " %" << endl;
cout << "及格(60~69)的有 " << jige << " 人\t占 " << jige / num * 100 << " %" << endl;
cout << "不及格(0~59)的有 " << bujige << " 人\t占 " << bujige / num * 100 << " %" << endl;
}
int main()
{
struct Student Stu[100];
int num;
num = Open(Stu);
Show(Stu, num + 1);
Showmid(Stu, num + 1);
Showpercent(Stu, num + 1);
return 0;
}
没写输出到文件的,那个要求最后才看到,已经输出到屏幕了,修改一下用字符串保存了再输入就行了,你说的要的急,就先提交上来了。。。
上一个:能不能帮我分析一个题目c++的题目
下一个:C++修改txt文件里数据 历史最高分悬赏