满意答案
ert656q
2013.04.27
采纳率:41% 等级:9
已帮助:2268人
\#include #include #include struct student{ char name[15]; char major[15]; int Eng_sco; int cal_sco; int c_sco; int sum; }; int tx_per=0,tx_ave,tx_sum=0; int wl_per=0,wl_ave,wl_sum=0; int wlw_per=0,wlw_ave,wlw_sum=0; int ReadStudentInfo(const char* filename, struct student** pStudents); void Count(struct student pStudents[], int num); int main() { int count; int m; struct student *list; count=ReadStudentInfo("stu.txt", &list); printf("学生信息: \n"); printf("----------------------------------------------------\n"); printf("序号 姓名 专业名称 英语成绩 线性代数成绩 c语言成绩 总成绩\n"); for(m=1;m<=count;m++) { printf("%4d %6s %6s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum); } Count(list, count); printf("\n统计信息 :\n"); printf("----------------------------------------------------\n"); printf("序号 专业名称 学生人数 平均成绩\n"); printf(" 1 通信 %d %d\n",tx_per,tx_ave); printf(" 2 网络 %d %d\n",wl_per,wl_ave); printf(" 3 物联网 %d %d\n",wlw_per,wlw_ave); return 0; } void CutString(char* buf,char*temp,char sp); int ReadStudentInfo(const char* filename, struct student** pStudents) { FILE *fp; char ch; int i=1,j; fp=fopen(filename,"r"); if(fp==NULL) { printf("cann't open the file"); exit(-1); } ch=fgetc(fp); while(ch!=EOF) { if(ch=='\n') { i++; } ch=fgetc(fp); } rewind(fp); *pStudents=(struct student*)malloc(sizeof(** pStudents)*i); char buf[512]={0}; for(j=0;jname,' '); CutString(buf,(*pStudents+j)->major,' '); char e_Score[8],cal_Score[8],c_Score[8]; memset(e_Score,0,8); memset(cal_Score,0,8); memset(c_Score,0,8); CutString(buf,e_Score,' '); (*pStudents+j)->Eng_sco = atoi(e_Score); CutString(buf,cal_Score,' '); (*pStudents+j)->cal_sco = atoi(cal_Score); CutString(buf,c_Score,' '); (*pStudents+j)->c_sco = atoi(c_Score); (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco); } fclose(fp); return i; } void CutString(char* buf,char*temp,char sp) { int len = strlen(buf); for (int i=0;imajor,"通信")) { tx_per++; tx_sum=tx_sum+(pStudents+n-1)->sum; tx_ave=tx_sum/tx_per; } if(!strcmp((pStudents+n-1)->major,"网络")) { wl_per++; wl_sum=wl_sum+(pStudents+n-1)->sum; wl_ave=wl_sum/wl_per; } if(!strcmp((pStudents+n-1)->major,"物联网")) { wlw_per++; wlw_sum=wlw_sum+(pStudents+n-1)->sum; wlw_ave=wlw_sum/wlw_per; } } free(pStudents); }
闲来无事,改了一把, 拿过去跑一把吧
10分享举报