编译没问题,运行有1、 新增学生信息时为什么不论总分多少排名总会在最后,输出时总分、排名不会输出? 截图2、 不能索阅信息 截图23、 不能修改信息 截图3123程序太长,发不完的评论续上#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");
}
目前暂无任何回答
- 0 回答
- 1 关注
- 1714 浏览
添加回答
举报
0/150
提交
取消