| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:学生成绩管理问题,求高人指点,只学到函数那一章,所以请用循环和数组做
取消只看楼主 加入收藏
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
 问题点数:0 回复次数:5 
学生成绩管理问题,求高人指点,只学到函数那一章,所以请用循环和数组做
题目要求如下,由键盘输入n(n不大于1000)个学生的m(m不大于10)门课程的成绩,
要求(1)将学生按总分由高到低排序,
按格式要求输出排序后的结果(一行一个学生信息);(2)输出每一门成绩的平均分,保留一位小数。
如图

[键盘输入]
5 3                          代表5个学生,3门课
90 70 75                 第一个学生三门课成绩
89 67 78
87 65 98
97 86 77
88 96 82
[正确输出]
88 96 82
97 86 77
87 65 98
90 70 75
89 67 78
90.2 76.8 82


小弟的代码如下,求指导,对新人来说有点难度,我地很多同学基本不会做,非常感谢大神,衷心感谢
#include <stdio.h>
int main()
{
    int i,j,k,n,m;
    double t,ave,a[1000][10],b[1000],c[10];
    scanf("%d %d\n",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {scanf("%f\n",&a[i][j]);
        b[i]+=a[i][j];
        }
      for(i=0;i<n-1;i++)
      {
        k=i;
        for(j=i+1;j<n;j++)
            if(b[j]>b[k]) k=j;
      }
      if(k!=i)  {
      t=b[i];b[i]=b[k];b[k]=t;}
    }
   for(i=0;i<n;i++)
       for(j=0;j<m;j++)
           printf("%f\n",a[i][j]);
   for(j=0;j<m;j++)
   {
     for(i=0;i<n;i++)
         c[j]=a[i][j];
     ave=c[j]/n;
     printf("%1f ",ave);
   }
  return 0;
}
搜索更多相关主题的帖子: 三门 
2012-12-10 22:51
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
得分:0 
回复 2楼 wp231957
第一个大的for是输出由高到低的成绩,第二个大for是输出平均分啊,真是我自己写的,已经尽力了,所以才说真的不会做······请谅解
2012-12-11 11:47
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
得分:0 
回复 4楼 daniel_
我在第一行就写出来了啊,要求没看到吗?要按总成绩由高到低啊,大家都没看到要求吗?是我网络的问题?
2012-12-11 21:50
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
得分:0 
回复 5楼 wp231957
哦哦,谢谢,细节东西有点乱了,幸好已经做出来了,感谢了
2012-12-11 21:51
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
得分:0 
回复 6楼 上苍之手
首先,不管你的程序是否正确,都要感谢你的回答,题目我已经做出来了,但我会试一下你的程序,目测是没问题的,明天运行一下,感谢
2012-12-11 21:54
luliangjun
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2012-10-27
收藏
得分:0 
小弟自己已经做出来了,谢谢各位
#include <stdio.h>
int main( )
{
  int m,n,i,j,k;
  float score[1000][10],sum_score[1000]={0},t;
  float temp[100];
  float score_aver[10];
  float sum=0;
  while(scanf("%d",&n)!=1||(n<0||n>1000))
  {
    continue;
  while(getchar()!='\n');
  }
  while(scanf("%d",&m)!=1||(m<0||m>10))
  {
     continue;
  while(getchar()!='\n');
  }
 for(i=0;i<n;i++)
     for(j=0;j<m;j++)
          scanf("%f",&score[i][j]);
 for(i=0;i<n;i++)  
     for(j=0;j<m;j++)
          sum_score[i]+=score[i][j];
 for(i=0;i<n-1;i++)
     {  k=i;
         for(j=i+1;j<n;j++)
         if(sum_score[k]<sum_score[j])
           k=j;
         if(k!=i){
         t=sum_score[i];
         sum_score[i]=sum_score[k];
         sum_score[k]=t;
         for(j=0;j<m;j++)
         {
         t=score[k][j];
         score[k][j]=score[i][j];
         score[i][j]=t;
         }
         }
     }
  for(i=0;i<n;i++)
  {
     for(j=0;j<m;j++)
      printf("%.0f ",score[i][j]);
     printf("\n");
  }
  
  for(i=0;i<m;i++)
  {
     sum=0;
       for(j=0;j<n;j++)  
        sum+=score[j][i];
       score_aver[i]=sum/n;
  }
  for(i=0;i<m;i++)
      printf("%.1f ",score_aver[i]);
  return 0;
}
2012-12-11 21:55
快速回复:学生成绩管理问题,求高人指点,只学到函数那一章,所以请用循环和数组 ...
数据加载中...
 
   



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

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