为什么输出不了计算出的结果,只能输出两行文字
代码如下:
#include
#include
#define N 3
typedef struct
{
int id;//学号
char name[20];//姓名
char subject[20];//考试科目
float perf;//平时成绩
float mid;//期中成绩
float final;//期末成绩
float total;//总评
char level[10];//等级
}STU;
void input(STU [],int);//输入学生信息
void clac(STU[],int);//计算总评和等级
int fail(STU[],STU[],int);//计算不及格学生人数
void sort(STU[],int);//排序
void show(STU[],STU[],int,int);//输出学生信息
void input(STU s[],int n){//输入学生信息
for(int i=0;i
printf("请输入学生信息:\n");
scanf("%d%s%s%f%f%f",&s[i].id,&s[i].name,&s[i].subject,&s[i].perf,&s[i].mid,&s[i].final);
}
}
void clac(STU s[],int n){//计算总评和成绩
for(int i=0;i
s[i].total=0.2*s[i].perf+0.2*s[i].mid+0.6*s[i].final;
if(s[i].total>=90){
strcpy(s[i].level,"优秀");
}
else if(s[i].total>=80&&s[i].total
strcpy(s[i].level,"良好");
}
else if(s[i].total>=70&&s[i].total
strcpy(s[i].level,"中等");
}
else if(s[i].total>=60&&s[i].total<70){
strcpy(s[i].level,"及格");
}
else{
strcpy(s[i].level,"不及格");
}
}
}
int fail(STU s[],STU t[],int n){//计算不及格人数
int i,k=0;
for(i=0;i<n;i++){
if(s[i].total<60){
t[k++]=s[i];
}
}
return k;
}
void sort(STU s[],int n){//排序
int i,j;
STU temp;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(s[j].total<s[j+1].total){
temp=s[j+1];
s[j+1]=s[j];
s[j]=temp;
}
}
}
}
void show(STU s[],STU t[],int n,int m){
int i;
printf("学生成绩排名情况\n");
printf("------------------\n");
printf("姓名 学号 考试科目 平时成绩 期中成绩 期末成绩 总评 成绩等级\n");
for(i=0;i<n;i++){
printf("%10s%5d%20s%5.1f%5.1f%5.1f%5.1f%5.1f%10s\n",s[i].name,s[i].id,s[i].subject,s[i].perf,s[i].mid,s[i].final,s[i].total,s[i].level);
}
printf("不及格学生情况\n");
printf("------------------\n");
printf("姓名 学号 考试科目 平时成绩 期中成绩 期末成绩 总评 成绩等级\n");
for(i=0;i<m;i++){
printf("%10s%5d%20s%5.1f%5.1f%5.1f%5.1f%5.1f%10s\n",t[i].name,t[i].id,t[i].subject,t[i].perf,t[i].mid,t[i].final,t[i].total,t[i].level);
}
}
int main(){
STU ccc[N],cwy[N];
int k;
input(ccc,N);
clac(ccc,N);
k=fail(ccc,cwy,N);
sort(ccc,N);
show(ccc,cwy,N,k);
return 0;
}

C语言结构体输出问题,输出不了结果
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-