69,373
社区成员
发帖
与我相关
我的任务
分享
#include "stdlib.h"
#include "stdio.h"
#include "assert.h"
#define NUMBER_LENGTH 6
#define MAX_NAME_LENGTH 9
#define INIT_STUDENT_COUNT 20
struct StudentInfo
{
char no[NUMBER_LENGTH];
char name[MAX_NAME_LENGTH];
unsigned short usres;
unsigned short midres;
unsigned short finres;
unsigned short relres;
};
void CalcResult(StudentInfo* infos,int count,int* results,int grades)
{
assert(grades == 6);
for(int i = 0;i < count;i++)
{
switch((infos[i].relres) / 10)
{
case 6:
results[1]++;
break;
case 7:
results[2]++;
break;
case 8:
results[3]++;
break;
case 9:
results[4]++;
break;
case 10:
results[5]++;
break;
default:
results[0]++;
break;
}
}
}
int main()
{
StudentInfo* infos = NULL;
char szLine[80];
int count = 0;
int i = 0;
int results[6] = {0};
printf("please input the student count:\n");
scanf("%d",&count);
infos = (StudentInfo*)malloc(sizeof(StudentInfo) * count);
printf("please input the student info:\n");
printf("eg 10001 张三 92 85 91\n");
while(i < count)
{
scanf("%s %s %u %u %u",infos[i].no,infos[i].name,&infos[i].usres,&infos[i].midres,&infos[i].finres);
infos[i].relres = infos[i].usres * 0.2 + infos[i].midres * 0.3 + infos[i].finres * 0.5;
fflush(stdin);
i++;
}
CalcResult(infos,count,results,6);
printf("< 60 : %d %%%f\n",results[0], results[0] * 100.0 / count );
printf("60 ~ 70 : %d %%%f\n",results[1], results[1] * 100.0 / count);
printf("70 ~ 80 : %d %%%f\n",results[2], results[2] * 100.0 / count);
printf("80 ~ 90 : %d %%%f\n",results[3], results[3] * 100.0 / count);
printf("90 ~ 100 : %d %%%f\n",results[4], results[4] * 100.0 / count);
printf("100 : %d %%%f\n",results[5], results[5] * 100.0 / count);
}