编译没问题,运行有
1、 新增学生信息时为什么不论总分多少排名总会在最后,输出时总分、排名不会输出? 截图
2、 不能索阅信息 截图2
3、 不能修改信息 截图3
程序太长,发不完的评论续上
#include "stdio.h" #include "string.h" #include "math.h" #include "stdlib.h" int size=0; struct STU {long int num; /*学号*/ char name[20]; /*姓名*/ int Chi; /*语文成绩*/ int Math; /*数学成绩*/ int sum; /*总分*/ int mc; /*名次*/ }; struct STU s[100]; void Input() {int n=0; FILE *fp; fp=fopen("F:\\1.txt","r"); while(fscanf(fp,"%ld %s %d %d\n",&s[n].num,s[n].name,&s[n].Chi,&s[n].Math)!=EOF) { n=n+1; } size=n; } void Disp() /*显示*/ {int i; printf("\t\t - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\t\t - 学生成绩情况 -\n"); printf("\t\t - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\t\t - 学号\t姓名\t语文\t数学\t总分\t名次 -\n"); printf("\t\t - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); for(i=0;i<size;i++) printf("\t\t - %ld\t%s\t%d\t%d\t%d\t%d -\n",s[i].num,s[i].name,s[i].Chi,s[i].Math,s[i].sum,s[i].mc); printf("\t\t - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\n");printf("\n"); } void Count() /*计算*/ {int i; for(i=0;i<size;i++) s[i].sum=s[i].Chi+s[i].Math; Disp(); } void Sort() /*排序*/ {int i,j,z; Count(); /*每个人先按照下标排名,然后相邻2位比较总分,总分小的后移,算size-1次*/ for(i=0;i<size;i++) s[i].mc=i+1; for(j=1;j<size;j++) for(i=size-1;i>=0;i--) {if(s[i].sum<=s[i+1].sum) {z=s[i].mc; s[i].mc=s[i+1].mc; s[i+1].mc=z; } } Disp(); } void Append() /*添加*/ { int j,f,k,i; add: printf("\t\t - - -* * * * * * * * *- - -\n"); printf("\t\t - 是否新增一个学生的信息?-\n"); printf("\t\t - 1.是 -\n"); printf("\t\t - 2.否,并退出 -\n"); printf("\t\t - 请输入数字: -\n"); printf("\t\t - - -* * * * * * * * *- - -\n"); scanf("%d",&j); printf("\n"); if(j==1) { zengjia: printf("\t\t - - -* * * * * * * * * * * * * * * * *- - -\n"); /*判断该学生信息是否已经存在*/ printf("\t\t - 请输入学生的信息(无需总分和名次): -\n"); printf("\t\t - - -* * * * * * * * * * * * * * * * *- - -\n"); printf("\n"); scanf("%ld%s%d%d",&s[size].num,&s[size].name,&s[size].Chi,&s[size].Math); k=s[size].num; for(i=0;i<size;i++) if(k==s[i].num) {printf("\t\t 已存在该学生信息\n");printf("\n");printf("\n");goto add;} size++; Sort(); printf("\n"); printf("\t\t 学号\t姓名\t语文\t数学\t总分\t名次\n"); printf("\t\t - - - - - - - - - - - - - - - - - - - - - - - -0\n"); printf("\t\t %ld\t%s\t%d\t%d\n",s[size-1].num,s[size-1].name,s[size-1].Chi,s[size-1].Math,s[size-1].sum,s[size-1].mc); printf("\n");printf("\n"); jixu: printf("\t\t - - - * * * * * * * * * * * * - - -\n"); /*判断是否继续操作*/ printf("\t\t - 是否继续增加一个学生的信息? -\n"); printf("\t\t - 1.是 -\n"); printf("\t\t - 2.否,并退出 -\n"); printf("\t\t - 请输入数字: -\n"); printf("\t\t - - - * * * * * * * * * * * * - - -\n"); scanf("%d",&f); printf("\n"); if(f==1) {printf("\n");printf("\n");goto zengjia;} else if(f==2) goto end; else {printf("\t\t 无效数字,请重新输入。\n");printf("\n");printf("\n");goto jixu;} } else if(j!=2&&j!=1) {printf("\t\t 无效数字,请重新输入。");printf("\n");printf("\n");goto add;} end: printf("\n");printf("\n");printf("\n");printf("\n");printf("\n"); }
慕田峪6141110
慕的地6079101
慕粉1721311984
BanJim3313278
相关分类