| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3386 人关注过本帖
标题:关于n个学生m门成绩的一个问题
取消只看楼主 加入收藏
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
结帖率:92.31%
收藏
已结贴  问题点数:10 回复次数:7 
关于n个学生m门成绩的一个问题
#include<stdio.h>
#define N 10
#define M 3
int main()
      {
         int i,j;
          int a[N][M];
          for(i=0;i<N;i++)
               for(j=0;j<M;j++)
                  scanf("%d",a[i][j]);
          int max=a[0][0];
           for(j=0;j<M;j++)
         {
            for(i=0;i<N;i++)
            {
                  if(a[j][i]>max)
                 max=a[j][i];
             }
          printf("第%d门课的最高分为%d\n",j++,i++);
          }
         return 0;
     }
这个是小弟写的,调试都没问题,但是在输入30组数据后,无法显示结果,奇怪,求大侠支招
搜索更多相关主题的帖子: max include return 
2012-07-31 18:51
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
要通过添加调试代码来确定的?小弟不是很明白哈,另外,我发现上面那个逻辑还是出现错误,修改过来后输出的的结果如下,请帮看下,好无奈
 for(j=0;j<M;j++)
         {
            for(i=0;i<N;i++)
            {
                 max=a[0][j];
                 if(a[i][j]>=max)
                 max=a[i][j];

             }
          printf("最高分为a[%d][%d]=%d\n",i,j,max);
          }
         return 0;
tony兄帮忙检查下这个逻辑,输出来结果总是不对,但分析逻辑我觉得没错啊
2012-07-31 21:06
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
我是这样想的 for(j=0;j<M;j++)
         {
            for(i=0;i<N;i++)
            {
                 max=a[0][j];
                 if(a[i][j]>=max)
                 max=a[i][j];

             }
          printf("最高分为a[%d][%d]=%d\n",i,j,max);
          }
         return 0;
j=0的时候,表示第一门功课,赋予max=a[0][0],再进行循环,比较N个学生在第一门功课的最高分,在i=9<10的时候输出这个最高分对应的功课号和学号.....写出来时上面的写法吧....
2012-07-31 22:06
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
第7楼将j=0,j=1,j=3的3列数据进行排序,由大至小进行排列,则每列的最大值为a[0][j],这样可以,我赋予每列的第一个是最大值,再将每列后面的值即a[i][j]与a[0][j]比较大小,大的赋予max,这样行得通吧
2012-07-31 22:14
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
#include<stdio.h>
#define N 10
#define M 3
int main()
      {
         int i,j,max;
          int a[N][M];
          for(i=0;i<N;i++)
               for(j=0;j<M;j++)
                  scanf("%d",&a[i][j]);
           
         for(j=0;j<M;j++)
         {
           max=a[0][j];     //初始值应该赋在这里,昨天弄错了
            for(i=1;i<N;i++)
            {
                 if(a[i][j]>max)
                 max=a[i][j];
              else
                  max=max;
             }
             printf("max=a[%d][%d]=%d\n",i,j,max);
           }
         return 0;
     }  
程序运行后总是输不出i值,不管最大值在那个,i始终=10,上面不是限定了i最大为9吗,好无奈,j对应的每列最大值可以完美输出了。
2012-08-01 09:38
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
明白了,这里的i输出的是最后一个i++,就如下这段代码
int main()
{
    int i;
    for(i=0;i<10;i++)
    {}
    printf("%d\n",i);
return 0;
}
是不是各位
2012-08-01 09:45
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
那这里比较出来的最大值得i值怎么输出呢??
2012-08-01 09:46
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
OK,搞定,谢谢tony兄,加一句  max=a[i][j];
                    k=i;
即可
2012-08-01 10:54
快速回复:关于n个学生m门成绩的一个问题
数据加载中...
 
   



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

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