c语言编程;对于用户输入的若干个学生某门课的成绩,输出优秀良好,中等,及格和不及格的人数

如题所述

第1个回答  2012-06-05
#include <stdio.h>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
//在C盘建了个TXT文件,C:\\1.txt
//文件要求每行最后是回车键,每个数之间用逗号分隔
//函数功能:读取文本文件,输出符合各要求的学生数。
//作者:niut
//如有高手,本人系初学,请指正。
///////////////////////////////////////////////////////////

struct Category
{
int bjgNum;
int jgNum;
int zdNum;
int lhNum;
int yxNum;
};//表示不及格,及格,中等,良好,优秀的学生数。
int calLength(char* t)
{
int len = 0;
while(t[len] !='\n')
{
len ++;
}
return len;
}//统计文本文件中一行的字符个数。
void main()
{
Category cg ;
cg.bjgNum = 0;
cg.jgNum = 0;
cg.lhNum = 0;
cg.yxNum = 0 ;
cg.zdNum = 0;
FILE *fp = fopen("C:\\1.txt","r");
int len = 0;
char* data = (char*)malloc(sizeof(char)*1024);
char* tem = (char*)malloc(sizeof(char)*1024);
if(tem !=NULL)
{
memset(tem,0x00,1024);
}
while(fgets(data,1024,fp) !=NULL)
{
len =calLength(data);
int i = 0;
int j = 0;
while(i<len)
{
while(data[i] !=',')
{
tem[j]=data[i];
i++;
j++;
if(data[i] =='\n')
break;
}
tem[j]='\0';
i++;
int value =atoi(tem);

if(value<60)
{
cg.bjgNum++;
}
else if(value<70)
{
cg.jgNum++;
}
else if(value <80)
{
cg.zdNum++;
}
else if(value < 90)
{
cg.lhNum++;
}
else
{
cg.yxNum++;
}
j=0;
memset(tem,0x00,len);

}

}
printf("%d,%d,%d,%d,%d\n",cg.bjgNum,cg.jgNum,cg.zdNum,cg.lhNum,cg.yxNum);
system("PAUSE");
}
第2个回答  2012-06-05
???你的题目有点模糊,是要输出一个人一个课程的等级,还是一个班级里某门课程的各个等级的人数??
相似回答