C++输出文本文件些行的内容并进行计算统计
菜鸟一只~想用C++解决一个问题,问题是这样的:有一个文本文件,比如a.txt,里面有各个班学生的成绩,文件结构如下:班级1学号1数学成绩1英语成绩1语文成绩1学号2数学...
菜鸟一只~想用C++解决一个问题,问题是这样的:
有一个文本文件,比如a.txt,里面有各个班学生的成绩,文件结构如下:
班级1
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
班级2
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
班级n
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
问题1:比如我输入1,程序就把班级1的所有学生的成绩输出到屏幕上,并分别统计每科成绩的平均值,但如果有成绩=100的不纳入统计范围。
问题2:查询指定班级指定学生的成绩并输出到屏幕上。 展开
有一个文本文件,比如a.txt,里面有各个班学生的成绩,文件结构如下:
班级1
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
班级2
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
班级n
学号1 数学成绩1 英语成绩1 语文成绩1
学号2 数学成绩2 英语成绩2 语文成绩2
学号3 数学成绩3 英语成绩3 语文成绩3
.....
问题1:比如我输入1,程序就把班级1的所有学生的成绩输出到屏幕上,并分别统计每科成绩的平均值,但如果有成绩=100的不纳入统计范围。
问题2:查询指定班级指定学生的成绩并输出到屏幕上。 展开
1个回答
展开全部
很简单的
你能给我个 a.txt文件么
里面要有内容和成绩哦
还有 100分不纳入统计 ?
是说算平均分时 不计算在内么?
你能给我个 a.txt文件么
里面要有内容和成绩哦
还有 100分不纳入统计 ?
是说算平均分时 不计算在内么?
更多追问追答
追问
麻烦给个邮箱嘛,我发给你,是的,100分算平均分时不计算在内。
追答
1227812201 扣扣邮箱
写好了 你看下效果
我的a.txt内容如下:
班级1
1 44 55 66
2 77 88 100
3 66 33 88
班级2
1 54 75 86
2 47 78 99
3 86 63 78
班级3
1 87 65 76
2 87 45 67
3 42 66 56
//下面是运行结果
输入要查班级
1
1 44 55 66
2 77 88 100
3 66 33 88
班级1 aver:
62.3333 58.6667 77
Press any key to continue
//接下来是代码
#include
#include
#include
#include
using namespace std;
struct stud
{
int stdid;
int math;
int English;
int Chinese;
}st[100];
int main()
{
int mathsum=0,mathCT=0,englishCT=0,englishsum=0,chineseCT=0,chinesesum=0;
char num[5]="\0",sel[10]="班级",line[100]="\0";
ifstream myin("a.txt");
cout>num;
strcat(sel,num);
while (!myin.eof())
{
myin.getline(line,99);
if (strcmp(line,sel)==0)
{
int i=0;
while (1)
{
myin.getline(line,99);
if (strlen(line)>7)
{
sscanf(line,"%d %d %d %d",&st[i].stdid,&st[i].math,&st[i].English,&st[i].Chinese);
cout<<st[i].stdid<<"\t"<<st[i].math<<"\t"<<st[i].English<<"\t"<<st[i].Chinese<<endl;
if (st[i].math!=100)
{
mathsum+=st[i].math;
mathCT++;
}
if (st[i].English!=100)
{
englishsum+=st[i].English;
englishCT++;
}
if (st[i].Chinese!=100)
{
chinesesum+=st[i].Chinese;
chineseCT++;
}
i++;
}else
break;
}
cout<<sel<<" aver:\r\n\t"<<setw(2)<<(float)mathsum/mathCT<<"\t"<<setw(2)<<(float)englishsum/englishCT<<"\t"<<setw(2)<<(float)chinesesum/chineseCT<<endl;
break;
}
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询