| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:麻烦各位帮我改进下程序?
只看楼主 加入收藏
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
结帖率:90.63%
收藏
已结贴  问题点数:20 回复次数:6 
麻烦各位帮我改进下程序?
程序代码:
//  用结构体数组输入学生的学号、姓名、5门课程成绩
//  然后计算每个学生的平均成绩,将平均成绩最高的记录输出
#include "stdio.h"
#include "math.h"
#define N  3
#define M  5
struct  STUDENT         /*   学生信息结构体  */
{    char  no[10] ;
     char  name[12] ;
     float score[6] ;   /*   第6个元素保存平均成绩  */
};

void  input_record( struct  STUDENT array[], int n)
/*  输入函数,完成数据的输入  */
{   int  i, j ;
    for (i=0; i<n; i++)
    {    printf("\n请输入学生的学号: ") ;
         scanf("%s",array[i].no) ;
         printf("\n请输入学生的姓名: ") ;
         scanf("%s",array[i].name) ;
         printf("\n请输入该学生的成绩: \n") ;
         for (j=0 ;j<M; j++)
         {   printf("\n课程: %d  ",j+1);
             scanf("%f", &array[i].score[j]) ;
         }
    }
}
void  output_record( struct  STUDENT array[], int n)
/*  输出函数,输出数据  */
{   int  i, j ;
    printf(" 学  号      姓  名    课程-1   课程-2   课程-3   课程-4   课程-5 \n\n") ;
    for (i=0; i<n; i++)
    {   printf("%-12s", array[i].no) ;
        printf("%-12s", array[i].name) ;
        for (j=0 ;j<M; j++)
            printf("%-9.2f", array[i].score[j]) ;
        printf("\n\n");
    }
}
void main()
{    struct  STUDENT stu[N];
     int n ,p ,t ,num ;
     input_record( stu, N) ;  /*  调用函数输入数据  */
     printf("\n\n") ;
     output_record( stu, N) ;  /*  调用函数输出数据  */
     printf("\n\n") ;
     for(p=0 ;p<N ;p++)
     {   float aver=0.0 ;
         for( t=0; t<M ;t++)
             aver=aver+stu[p].score[t] ;
         stu[p].score[M]=aver/M ;
     }   /*  计算每个学生的平均成绩  */
   
     num=0 ;
     for(p=1 ;p<N ;p++)
         if (stu[num].score[M]<stu[p].score[M])  num=p ;
              /*  找平均成绩最高的元素  */
         printf("\n平均成绩最高的元素下标%d\n ",num) ;
         printf("%-12s", stu[num].no) ;
         printf("%-12s", stu[num].name) ;
         for (t=0 ;t<=M; t++)
             printf("%-8.2f", stu[num].score[t]) ;
         printf("\n");
}
//问题,当有最高平均成绩相同时,这程序明显错误,求改进,给点建议
要注意什么?什么思想?
搜索更多相关主题的帖子: 课程 结构体 
2013-01-07 08:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
if (stu[num].score[M]<=stu[p].score[M])  num=p ;

DO IT YOURSELF !
2013-01-07 08:35
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 2楼 wp231957
不行,也只有原来的结果

新手发言,请多指教!
2013-01-07 08:51
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:5 
程序代码:
//  用结构体数组输入学生的学号、姓名、5门课程成绩

 //  然后计算每个学生的平均成绩,将平均成绩最高的记录输出
 #include "stdio.h"

 #include "math.h"

 #define N  3

 #define M  5

 struct  STUDENT         /*   学生信息结构体  */

 {    char  no[10] ;
      char  name[12] ;
      float score[6] ;   /*   第6个元素保存平均成绩  */

 };

void  input_record( struct  STUDENT array[], int n)

 /*  输入函数,完成数据的输入  */

 {   int  i, j ;
     for (i=0; i<n; i++)
     {    printf("\n请输入学生的学号: ") ;
          scanf("%s",array[i].no) ;
          printf("\n请输入学生的姓名: ") ;
          scanf("%s",array[i].name) ;
          printf("\n请输入该学生的成绩: \n") ;
          for (j=0 ;j<M; j++)
          {   printf("\n课程: %d  ",j+1);
              scanf("%f", &array[i].score[j]) ;
          }
     }

 }

 void  output_record( struct  STUDENT array[], int n)

 /*  输出函数,输出数据  */

 {   int  i, j ;
     printf(" 学  号      姓  名    课程-1   课程-2   课程-3   课程-4   课程-5 \n\n") ;
     for (i=0; i<n; i++)
     {   printf("%-12s", array[i].no) ;
         printf("%-12s", array[i].name) ;
         for (j=0 ;j<M; j++)
             printf("%-9.2f", array[i].score[j]) ;
         printf("\n\n");
     }

 }

 void main()

 {    struct  STUDENT stu[N];
      int p ,t ,num,i ;
      input_record( stu, N) ;  /*  调用函数输入数据  */
      printf("\n\n") ;
      output_record( stu, N) ;  /*  调用函数输出数据  */
      printf("\n\n") ;
      for(p=0 ;p<N ;p++)
      {   float aver=0.0 ;
          for( t=0; t<M ;t++)
              aver=aver+stu[p].score[t] ;
          stu[p].score[M]=aver/M ;
      }   /*  计算每个学生的平均成绩  */
  
      num=0 ;
      for(p=1 ;p<N ;p++)
          if (stu[num].score[M]<stu[p].score[M])  num=p ;
               /*  找平均成绩最高的元素  */
      /******这里*******/
      for(i=num;i<N;i++)  /*上面循环结束后,已找到最高分,但最高分不一定是最后一个元素,
                          如果后面还有元素,那么肯定和最高分分数相同。*/
        {
            printf("\n平均成绩最高的元素下标%d\n ",i) ;
            printf("%-12s", stu[i].no) ;
            printf("%-12s", stu[i].name) ;
            for (t=0 ;t<=M; t++)
                printf("%-8.2f", stu[i].score[t]) ;
            printf("\n");
        }

 }


 //问题,当有最高平均成绩相同时,这程序明显错误,求改进,给点建议
 /*********KO**********/
2013-01-07 09:05
simple_txd
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2013-1-7
收藏
得分:5 
void main()
{    struct  STUDENT stu[N];
     int n ,p ,t ,num ;
     input_record( stu, N) ;  /*  调用函数输入数据  */
     printf("\n\n") ;
     output_record( stu, N) ;  /*  调用函数输出数据  */
     printf("\n\n") ;
     for(p=0 ;p<N ;p++)
     {   float aver=0.0 ;
         for( t=0; t<M ;t++)
             aver=aver+stu[p].score[t] ;
         stu[p].score[M]=aver/M ;
     }   /*  计算每个学生的平均成绩  */
   
     num=0 ;
     int temp ,i;
     for(p=1 ;p<N ;p++)
         
         if (stu[num].score[M]<stu[p].score[M])  
             {
              num=p ;
             }
         temp = stu[num].score[M];
         for(i = 0 ; i<N; i ++)
         {
            if(stu[i].score[M] == temp)
          /*  找平均成绩最高的元素  */
         printf("\n max aver graed:%d\n ",i) ;
         printf("%-12s", stu[i].no) ;
         printf("%-12s", stu[i].name) ;
         for (t=0 ;t<=M; t++)
             printf("%-8.2f", stu[i].score[t]) ;
         printf("\n");
      }
}
2013-01-07 21:54
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 4楼 a4811
运行错误,你输入不同的也全部打印出来的

[ 本帖最后由 chen1204019 于 2013-1-7 22:45 编辑 ]

新手发言,请多指教!
2013-01-07 22:44
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 6楼 chen1204019
你不是说当最高分成绩相同时,你的程序只显示一个最高分的数据。我改进之后,可以显示出所有最高分的数据,运行没啥错误啊。
2013-01-08 08:24
快速回复:麻烦各位帮我改进下程序?
数据加载中...
 
   



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

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