| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:是一个结构体的简单问题,初学结构体,结果运行不出来,而且问题出来后,改 ...
只看楼主 加入收藏
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:3 
是一个结构体的简单问题,初学结构体,结果运行不出来,而且问题出来后,改不来,求教!
嗯,是这样的,想编一个简单的问题,用结构体,先输入五个学生的姓名,学号,三门课的成绩。
然后算出三门课的成绩的平均值,排名,从高到低。然后按排好的名次再输出五个学生的姓名,学号,平均分。
系统老是提示i,j值没有定义,但是我实在搞不懂,我已经在每个子函数开头定义过了,所以想问一下大家。


#include<stdio.h>
typedef struct student
{
    long num;
    char name[10];
    int score[3];
} STUDENT;
typedef struct student2
{
    long num;
    char name[10];
    float ave;
}STUDENT2;
  STUDENT stu[5];
  STUDENT2 stu2[5],temp;
 
void input(struct student *);
void calculate(struct student *);
void average(struct student *);
void output(struct student2 * );
 void   main()
{
   
     input(stu);
     calculate(stu);
     average(stu);
     output( stu2);

void input(struct student *stu)
{   
    int i,j;
    for(i=0;i<5;i++)
     {
       printf("请输入学生学号:\n");
       scanf("%d",&stu[i].num);
       printf("请输入学生姓名:\n");
       scanf("%s",&stu[i].name);
       printf("请输入学生三门课成绩:\n");
       for(j=0;j<3;j++)
         {
            scanf("%d",&stu[i].score[j]);
         }
      
     }

}
void average(struct student * stu)
{   
     int i;
     float sum;
     for(i=0;i<5;i++)

      {
          sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
          stu2[i].ave=sum/3;
         
      }
}
void calculate(struct student * stu)
{
      int i,j;

      for(i=0;i<5;i++)
       {
           stu2[i].name=stu[i].name;
           stu2[i].num=stu[i].num;
       }
      for(i=1;i<=4;i++)
          for(j=0;j<5-i;j++)
            {
               if(stu2[j].ave<stu2[j+1].ave)
                {
                    temp=stu2[j];
                    stu2[j]=stu2[j+1];
                    stu2[j+1]=temp;
                 }

            }
}
void output(struct student2 * stu2)
{
       int i;
       for(i=0;i<5;i++)
        {
            printf("%d,  %s,  %f",stu2[i].num,stu2[i].name,stu2[i].ave);
        }
       printf("\n");
}
搜索更多相关主题的帖子: include 结构体 平均值 而且 三门 
2013-06-19 23:17
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:20 
#include<stdio.h>
#include"string.h"
typedef struct student
{
    long num;
    char name[10];
    int score[3];
} STUDENT;
typedef struct student2
{
    long num;
    char name[10];
    double ave;
}STUDENT2;
  STUDENT stu[5];
  STUDENT2 stu2[5],temp;

void input(struct student *);
void calculate(struct student *);
void average(struct student *);
void output(struct student2 * );
void   main()
{
   
     input(stu);
     calculate(stu);
     average(stu);
     output( stu2);
}
void input(struct student *stu)
{   
    int i,j;
    for(i=0;i<5;i++)
     {
       printf("请输入学生学号:\n");
       scanf("%d",&stu[i].num);
       printf("请输入学生姓名:\n");
       scanf("%s",stu[i].name);
       printf("请输入学生三门课成绩:\n");
       for(j=0;j<3;j++)
         {
            scanf("%d",&stu[i].score[j]);
         }
      
     }

}
void average(struct student * stu)
{   
     int i;
     double sum;
     for(i=0;i<5;i++)

      {
          sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
          stu2[i].ave=sum/3;
         
      }
}
void calculate(struct student * stu)
{
      int i,j;

      for(i=0;i<5;i++)
       {
           strcpy(stu2[i].name,stu[i].name);
           stu2[i].num=stu[i].num;
       }
      for(i=1;i<=4;i++)
          for(j=0;j<5-i;j++)
            {
               if(stu2[j].ave<stu2[j+1].ave)
                {
                    temp=stu2[j];
                    stu2[j]=stu2[j+1];
                    stu2[j+1]=temp;
                 }

            }
}
void output(struct student2 * stu2)
{
       int i;
       for(i=0;i<5;i++)
        {
            printf("%d,  %s,  %f",stu2[i].num,stu2[i].name,stu2[i].ave);
        }
       printf("\n");
}

加油加油!
2013-06-19 23:44
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:0 
首先你主函数缺少一个大括号
还有就是最要用double,float在这个软件可能会出错,
还有就是你的字符串不可以直接这样stu2[i].name=stu[i].name;要这样strcpy(stu2[i].name,stu[i].name);
最后在补一个应为用了strcpy,给你补个#include"string.h"
最后,我就得楼主的还可在改进一些。typedef 这个是用来改名,我们要越改越简单,可是楼主好像改完越复杂。

加油加油!
2013-06-19 23:49
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
收藏
得分:0 
回复 3楼 蔡梓锋
哈哈,是的,运行出来了额,不过其实还有个小问题大哥你也没发现呢,就是,我在主函数那里,把计算和输出两个语句顺序搞反了,也就是排序没有排好,就输出来了。
但是,真的很谢谢你,这个小问题我自己就能改出来!运行出来的感觉很爽,呵呵!!!
不多说,20分送上,谢谢您诶!

那年京城大雪,或是天下大雪,我一骑绝尘
2013-06-20 13:20
快速回复:是一个结构体的简单问题,初学结构体,结果运行不出来,而且问题出来后 ...
数据加载中...
 
   



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

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