qq_40602393
qq_40602393
2019-07-11 09:30
采纳率: 100%
浏览 684

C语言结构体输出问题,输出不了结果

为什么输出不了计算出的结果,只能输出两行文字
代码如下:
#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;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • qtchen_1988
    qtchen_1988 2019-07-11 11:19
    已采纳
    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("%10s%5d%20s%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);
    写多了一个 %5.1f,应该去掉一个%5.1f。
    
    

    图片说明

    点赞 评论
  • aayyyaayyy
    aayyyaayyy 2019-07-11 10:45

    程序有问题 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);
    }
    }

    点赞 评论
  • qq_43389580
    qq_43389580 2019-07-11 10:54

    你这代码缺失太严重了吧,你对比下源代码重发完整的吧,这个编译都过不了

    点赞 评论
  • dashicaineng

    这个问题很简单,你的for循环不完整,代码写错了,说明你写程序不规范。

    点赞 评论

相关推荐