标题:为什么我输出的第一行数据变成这样
只看楼主
计科专业小白
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2020-3-8
结帖率:100%
 问题点数:0 回复次数:0 
为什么我输出的第一行数据变成这样
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 5
    /*定义结构体类型student*/
struct student
{
    char name[12];                /*姓名*/
    int math;
    int English;
    int c;            /*三门课程成绩*/
    float personal_avg;        /*个人平均成绩*/
    char str6[8];            /*个人等级*/
}stud[SIZE];


/*定义结构体类型student3*/
struct student3
{
    float math_average;        /*高数平均分*/
    float English_average;    /*英语平均分*/
    float c_average;        /*c语言平均分*/
    float class_average;    /*班级平均分*/
    char str7[8];            /*班级等级*/
}stud3[SIZE];
void main()
{    FILE*fp;
    int i ,s;
    
    float a;
    char str1[]="优秀",str2[]="良好",str3[]="中等",str4[]="及格",str5[]="不及格",str6[8],str7[8];

    for(i=0;i<SIZE;i++)                                                    /*输入学生信息*/
    {    printf("请输入第%d个学生的信息:",i+1);
        scanf("%s%d%d%d",stud[i].name,&stud[i].math,&stud[i].English,&stud[i].c );
        
        
            stud[i].personal_avg=(float)(stud[i].c+stud[i].English+stud[i].math)/3.0;    /*强制转换*//*计算个人平均分*/
            


        s=stud[i].personal_avg/10;                                                    /*用switch语句来判断个人平均分的等级*/
        switch(s)
        {
        case 9:strcpy(stud[i].str6,str1);break;                                        /*用一个strcpy函数把等级复制到str6中*/
        case 8:strcpy(stud[i].str6,str2);break;
        case 7:strcpy(stud[i].str6,str3);break;
        case 6:strcpy(stud[i].str6,str4);break;
        default:
            strcpy(stud[i].str6,str5);
        }

        if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","w"))==NULL)            /*打开文件学生成绩.dat*/
            {printf("cannot open file\n");
                return;
                }
        if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)                    /*将结构体数组stud1 姓名和三科成绩 个人平均分和等级 保存到文件中*/
            printf("file write error\n");
    
        fclose(fp);                                                            /*关闭文件*/

    }
    stud3[0].math_average=(stud[0].math+stud[1].math+stud[2].math+stud[3].math+stud[4].math)/SIZE;                    /*计算高数平均成绩*/
    stud3[0].English_average=(stud[0].English+stud[1].English+stud[2].English+stud[3].English+stud[4].English)/SIZE;    /*计算英语平均成绩*/
    stud3[0].c_average=(stud[0].c+stud[1].c+stud[2].c+stud[3].c+stud[4].c)/SIZE;                                        /*计算c语言平均成绩*/
    stud3[0].class_average=(stud3[0].math_average+stud3[0].English_average+stud3[0].c_average)/3.0;                        /*计算班级平均成绩*/    
    
    s=stud3[0].class_average/10;                                                    /*用switch语句来判断班级平均分的等级*/
        switch(s)
        {
        case 9:strcpy(stud3[i].str7,str1);break;                                    /*用一个strcpy函数把等级复制到str7中*/
        case 8:strcpy(stud3[i].str7,str2);break;
        case 7:strcpy(stud3[i].str7,str3);break;
        case 6:strcpy(stud3[i].str7,str4);break;
        default:
            strcpy(stud3[i].str7,str5);
        }


    if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","w"))==NULL)            /*打开文件学生成绩.dat*/
            {printf("cannot open file\n");
                return;
                }
if(fwrite(&stud3,sizeof(struct student3),1,fp)!=1)                    /*将结构体数组stud3 高数平均分 英语平均分 c语言平均分 班级平均分 班级等级 保存到文件中*/
            printf("file write error\n");
    fclose(fp);                                                        /*关闭文件*/



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

    printf("\t学生成绩表\n");
    printf("姓名\t高数\t英语\tc语言\t");
    printf("平均分\t等级");
    printf("\n");
                    
    if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","r"))==NULL)            /*打开文件学生成绩.dat*/
            {printf("cannot open file\n");
                return;
                }
    for(i=0;i<SIZE;i++)
    {fread(&stud[i],sizeof(struct student),1,fp);
    printf("%s\t%d\t%d\t%d\t%.1f\t%s",stud[i].name,stud[i].math,stud[i].English,stud[i].c,stud[i].personal_avg,stud[i].str6);
    printf("\n");
    }
    printf("平均分\t");
    fread(stud3,sizeof(struct student3),1,fp);
    printf("%.1f\t%.1f\t%.1f\t%.1f\t%s",stud3[0].math_average,stud3[0].English_average,stud3[0].c_average,stud3[0].class_average,stud3[0].str7);
                    
    system("pause");
}


[此贴子已经被作者于2020-6-15 18:03编辑过]

搜索更多相关主题的帖子: printf math strcpy 平均分 成绩 printf 平均分 strcpy math 成绩 
2020-06-14 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502121-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.235126 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved