注册 登录
编程论坛 数据结构与算法

求大神帮我看看这个问题出在哪里啦

夜空小雄 发布于 2015-06-12 12:52, 2150 次点击
/*有5个学生,每个学生的数据包括学号 姓名 3门课成绩,平均分.
要求:从键盘依次输入5个学生的学号 姓名 3门课成绩,
自动计算3门课成绩的平均分,并将5个学生的数据在屏幕上输出*/
#include<stdio.h>
struct STUDENT
{
    char id[10];
    char name[8];
    int score[3];
    double ave;
}stu[5];
void main()
{
    int num=5,i,j;
    for(i=0;i<num;i++)
    {
        printf("\t请输入第%d学生的数据,i+1");
        printf("\t学号:");
        scanf("%s",stu[i].id);
        printf("\t姓名:");
        scanf("%s",stu[i].name);
        int Tave=0;
        for(j=0;j<3;j++)
        {
            printf("\t第%d门课的成绩:",j+1);
            scanf("%d",&stu[i].score[j]);
            Tave+=stu[i].score[j];
        }stu[i].ave=(double)Tave/3.0;

    }
    printf("\n\t学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
    for(i=0;i<num;i++)
    {
        printf("\t%s\t%s",stu[i].id,stu[i].name);
        for(j=0;j<3;j++)
            printf("\t%d",stu[i].score[j]);
        printf("\t%f\n",stu[i].ave);
    }
}
1 回复
#2
多久变大神2015-06-15 17:45
很多明显错误:
1、scanf("%s",stu[i].id);;&落下了
2、何况学号应该是int型吧!怎么会%s
3、先int Tave=0,再强制转换个人觉得多此一举了,而且定义的位置有错,在C89老编译器里定义式只能放在表达式前即最开头,C99虽然可以放中间这一块,但也是在函数中才行;直接double Tave=0.0;放在第一个表达式前就行

4、最后一行double对应的应该是%lf而非%f(float)
你基础不够扎实,还要看看书
1