C语言输入学生专业,关于c语言从文件中读取学生信息,处理并打印

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

ert656q

2013.04.27

02ae427d08e371d7e90d5b995e828d6d.png

采纳率: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分享举报

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值