首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求大牛帮忙写个程序,小弟感激不尽!小弟我也参考参考

2012-05-01 
求大牛帮忙写个程序,小弟感激不尽!我也参考参考某计算机班有学生若干名,假设期末考试的时候考5门课,每个学

求大牛帮忙写个程序,小弟感激不尽!我也参考参考
某计算机班有学生若干名,假设期末考试的时候考5门课,每个学生的成绩按学生的姓名(假设用英文字母标识)存入计算机,请编写程序实现如下功能:
 (1)求每个学生的总分和平均分;
 (2)给出按总分高低排出的名次(总分相同时,名次也相同);
 (3)统计各门课程成绩在85分以上学生的百分比;
 (4)输入一个学生的姓名时,显示该学生的总分和平均分。 


[解决办法]
学生的成绩是从窗口录入,还是从文件读?
[解决办法]
求写代码,基本上没戏
[解决办法]
楼主自己改下,用窗口输入吧

C/C++ code
#include<stdio.h>#include<stdlib.h>#define MAX_STUDENT 100struct student{ char name[50]; float s1; float s2; float s3; float s4; float s5; float average; float total; int rank;};struct student stu[MAX_STUDENT];int cmp(const void *a, const void *b){ return (int)((*(struct student*)b).total) - (int)((*(struct student*)a).total);}int main(){    int i, snum, gt85_count1, gt85_count2, gt85_count3, gt85_count4, gt85_count5, gt85_countaverage; FILE*infile; char s[256]; snum=0; gt85_count1 = gt85_count2 = gt85_count3 = gt85_count4 = gt85_count5 = gt85_countaverage = 0; infile=(FILE*)fopen("data.txt", "r+"); if(infile==NULL) {  printf("Open file error or it does not exist!\n");  exit(0); } while(fgets(s, 256, infile)) {  sscanf(s, "%s%f%f%f%f%f", &stu[snum].name, &stu[snum].s1, &stu[snum].s2,     &stu[snum].s3, &stu[snum].s4, &stu[snum].s5);  stu[snum].total = stu[snum].s1 + stu[snum].s2 + stu[snum].s3 + stu[snum].s4 + stu[snum].s5;  stu[snum].average = stu[snum].total/5;  if(stu[snum].s1>=85.0)gt85_count1++;  if(stu[snum].s2>=85.0)gt85_count2++;  if(stu[snum].s3>=85.0)gt85_count3++;  if(stu[snum].s4>=85.0)gt85_count4++;  if(stu[snum].s5>=85.0)gt85_count5++;  if(stu[snum].average>=85.0)gt85_countaverage++;  snum++; } qsort(stu, snum, sizeof(struct student), cmp); for(i=0;i<snum;i++) {  stu[i].rank=i+1; } printf("student             rank      average   total\n"); for(i=0;i<snum;i++) {  printf("%-20s%5d%10.1f%10.1f\n", stu[i].name, stu[i].rank, stu[i].average, stu[i].total); } printf("\ncourse1>=85(%%):%.2f\tcourse2>=85(%%):%.2f\tcourse3>=85(%%):%.2f\n\course4>=85(%%):%.2f\tcourse5>=85(%%):%.2f\taverage>=85(%%):%.2f\n", gt85_count1*100.0/snum, gt85_count2*100.0/snum, gt85_count3*100.0/snum,   gt85_count4*100.0/snum, gt85_count5*100.0/snum, gt85_countaverage*100.0/snum); return 0;}输入文件data.txt格式如下:aaa 70.0 80.0  90.0 100 85b 70 70 70 70 70c 75 65 55 85 86e 85 75 65 95 100f 85 95 100 65 62g 99 99 99 99 99 

热点排行