以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  清心茶舍  (http://www.njcie.com/bbs/list.asp?boardid=21)
----  课后作业——学生平均成绩统计  (http://www.njcie.com/bbs/dispbbs.asp?boardid=21&id=616)

--  作者:admin
--  发布时间:2008/12/4 6:30:24
--  课后作业——学生平均成绩统计

1、基本输入程序
# include <stdio.h>

struct student{
        char number[6];
        char name[10];
        int grade[3];
};

void main()
{
        struct student stus[3];

        int i,j;
        for(i=0;i<3;i++)
        {
                printf("请输入学生学号:\\n");
                scanf("%s",stus[i].number);
                printf("请输入学生姓名:\\n");
                scanf("%s",stus[i].name);
                for(j=0;j<3;j++)
                {
                        printf("请输入第%d门课程的成绩:\\n",j+1);
                        scanf("%d",&stus[i].grade[j]);
                }
        }
        
        for(i=0;i<3;i++)
        {
                printf("第%d个学生的学号是%s,姓名是%s",i+1,stus[i].number,stus[i].name);
        }
}

2、增加对总平均分的统计功能
# include <stdio.h>

struct student{
        char number[6];
        char name[10];
        int grade[3];
};

void main()
{
        struct student stus[3];

        int i,j;
        
        double average;//首先尝试使用int
        
        double total=0;//其次尝试使用int

        for(i=0;i<3;i++)
        {
                printf("请输入学生学号:\\n");
                scanf("%s",stus[i].number);
                printf("请输入学生姓名:\\n");
                scanf("%s",stus[i].name);
                for(j=0;j<3;j++)
                {
                        printf("请输入第%d门课程的成绩:\\n",j+1);
                        scanf("%d",&stus[i].grade[j]);
                }
        };
        
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        total=total+stus[i].grade[j];
                }
        }

        average=total/3/3;
        printf("平均分为%f",average);
}

3、完整的程序
# include <stdio.h>

struct student{
        char number[6];
        char name[10];
        int grade[3];
};

void main()
{
        struct student stus[3];

        int i,j;
        
        double average;//首先尝试使用int
        
        double total=0;//其次尝试使用int

        int maxGrade=0;

        int stuOfMaxGrade=0;

        for(i=0;i<3;i++)
        {
                printf("请输入学生学号:\\n");
                scanf("%s",stus[i].number);
                printf("请输入学生姓名:\\n");
                scanf("%s",stus[i].name);
                for(j=0;j<3;j++)
                {
                        printf("请输入第%d门课程的成绩:\\n",j+1);
                        scanf("%d",&stus[i].grade[j]);
                }
        };
        
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        total=total+stus[i].grade[j];
                }
        }

        average=total/3/3;
        printf("平均分为%f\\n",average);

        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        if(maxGrade<stus[i].grade[j])
                        {
                                maxGrade=stus[i].grade[j];
                                stuOfMaxGrade=i;        
                        }
                }
        }

        total=0;
        for(j=0;j<3;j++)
        {
                total=total+stus[stuOfMaxGrade].grade[j];
        }

        average=total/3;
        printf("最高分数的学生学号是%s,姓名是%s\\n",stus[stuOfMaxGrade].number,stus[stuOfMaxGrade].name);
        for(j=0;j<3;j++)
        {
                printf("第%d门课程的成绩是%d\\n",j+1,stus[stuOfMaxGrade].grade[j]);
        }
        printf("该学生的平均成绩是%f\\n",average);
}

[此贴子已经被作者于2010-12-13 20:06:22编辑过]