C语言向文件写入内容并读取显示6,c语言 文件写入和读取(示例代码)

#include#include#include

#define N 10

struct student{ /*学生信息结构*/

char no[9]; /*学号*/

char name[10]; /*姓名*/

char sex[3]; /*性别*/

int score[4]; /*成绩和总分*/};int menu(); /*菜单*/

void readsi(struct student stud[],int *n); /*读取数据*/

void printsi(struct student *pstud,int n); /*输出文件内容*/

void ssort(struct student *pstud, int n); /*按总分的降序排序函数*/

void xsort(struct student *pstud, int n);/*按学号的升序排序函数*/

void tjave(struct student *pstud, int n);/*统计各门功课的平均分函数*/

void tjrs(struct student *pstud,int n);/*统计男女同学的人数函数*/

void namesort(struct student *pstud,int n);/*按姓名升序排序*/

void math_excellent(struct student *pstud,int n);/*数学考试成绩优秀(>=90)*/

void all_excellent(struct student *pstud,int n);/*每门考试成绩优秀(>=90)或者总分》=270*/

void main() /*主函数*/{structstudent stud[N];int code, n=0;

readsi(stud,&n);

printf("\n 按, 进入菜单:");

scanf("%*c"); /*暂停*/

while(1)

{

code=menu(); /*调用主控菜单*/

switch(code)

{case 0: exit(1);case 1: printsi(stud,n);

printf("\n 按, 进入菜单:");

scanf("%*c");break;case 2: ssort(stud,n);break;case 3: xsort(stud,n);break;case 4: tjave(stud,n);break;case 5: tjrs(stud,n);break;case 6: namesort(stud,n);break;case 7: math_excellent(stud,n);break;case 8: all_excellent(stud,n);break;

} scanf("%*c");

}

}int menu() /*主控菜单函数*/{intcode;

printf("菜 单\n");

printf("*****************************************************\n");

printf("0. 退出 1. 显示学生信息 \n");

printf("2. 按总分排序 3. 按学号排序\n");

printf("4. 统计各门功课平均分 5. 统计男女同学人数\n");

printf("6. 按姓名排序 7. 数学考试成绩优秀人数\n");

printf("8. 考试成绩优秀人数 \n");

printf("*****************************************************\n");

printf("请按序号选择:\n");

scanf("%d",&code);returncode;

}void readsi(struct student stud[],int *n) /*读数据函数*/ //int *n;n需要返回

{

FILE*fp;inti;//if((fp=fopen("studf.txt","r"))==NULL)

if((fp=fopen("C:/Users/minmin/Desktop/studf.txt","r"))==NULL)//文件存放在指定路径,把路径写上就可以了

{

printf("Cannot open file!\n");

exit(1);

}for(i=0;!feof(fp);i++)

{

(*n)++;

fscanf(fp,"%s %s %s %d %d %d %d", stud[i].no,stud[i].name,stud[i].sex,&stud[i].score[0], &stud[i].score[1], &stud[i].score[2], &stud[i].score[3]);

stud[i].score[3]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];

}

fclose(fp);

}void printsi(struct student *pstud, int n) /*输出数据函数*/{inti;

printf("学号 姓名 性别 数学 英语 C 总分\n");

printf("******************************************************\n");for(i=0;i

{

printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,

pstud[i].score[0], pstud[i].score[1], pstud[i].score[2], pstud[i].score[3]);

}

}void ssort(struct student *pstud,int n) /*按总分的降序排序函数*/{structstudent temp;inti,j,min;for(i=0;i

{

min=i; /*找最小值元素的下标*/

for(j=i+1;jpstud[min].score[3]) min=j;if(min!=i) /*交换*/{

temp=pstud[i]; pstud[i]=pstud[min]; pstud[min]=temp;

}

}

}void xsort(struct student *pstud,int n) /*按学号的升序排序函数*/{structstudent temp;inti, j;for(i=0;i

{for(j=i+1;j

{if(strcmp(pstud[i].no,pstud[j].no)>0)

{

temp=pstud[i];

pstud[i]=pstud[j];

pstud[j]=temp;

}

}

}

}void tjave(struct student *pstud, int n) /*统计各门功课的平均分函数*/{float avemath=0,aveeng=0,avec=0,avesum=0;inti;for(i=0;i

{

avemath+=pstud[i].score[0];

aveeng+=pstud[i].score[1];

avec+=pstud[i].score[2];

avesum+=pstud[i].score[3];

}

avemath/=n; aveeng/=n; avec/=n; avesum/=n;

printf("共有%d个同学,各门功课及总分的平均分为:\n",n);

printf("数学 英语 C 总分\n");

printf("%5.2f %5.2f %5.2f %5.2f\n",avemath,aveeng,avec,avesum);

}void tjrs(struct student *pstud,int n) /*统计男女同学的人数函数*/{int i, nummen=0, numwomen=0;for(i=0;i

{if(strcmp(pstud[i].sex,"男")==0) nummen++;else numwomen++;

}

printf("共有%d个同学: \n",n);

printf("其中男同学有%d个,女同学有%d个\n",nummen,numwomen);

}void namesort(struct student *pstud,int n)/*按姓名升序排序*/{structstudent temp;inti, j;for(i=0;i

{for(j=i+1;j

{if(strcmp(pstud[i].name,pstud[j].name)>0)

{

temp=pstud[i];

pstud[i]=pstud[j];

pstud[j]=temp;

}

}

}

}void math_excellent(struct student *pstud,int n)/*数学考试成绩优秀(>=90)*/{int i, num = 0;for(i=0;i

{if(pstud[i].score[0]>=90)

{

num++;

printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,

pstud[i].score[0], pstud[i].score[1], pstud[i].score[2], pstud[i].score[3]);

}

}

printf("数学优秀的人数为:%d\n",num);

}void all_excellent(struct student *pstud,int n)/*每门考试成绩优秀(>=90)或者总分》=270*/{int i, num = 0;for(i=0;i

{if(((pstud[i].score[0]>=90)&&(pstud[i].score[1]>=90)&&(pstud[i].score[2]>=90))||(pstud[i].score[3]>=270))

{

num++;

printf("%-8s %-8s %-2s %4d %4d %4d %4d\n", pstud[i].no,pstud[i].name,pstud[i].sex,

pstud[i].score[0], pstud[i].score[1], pstud[i].score[2], pstud[i].score[3]);

}

}

printf("优秀的人数为:%d\n",num);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值