| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3386 人关注过本帖
标题:关于n个学生m门成绩的一个问题
只看楼主 加入收藏
流氓小强
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-7-31
收藏
得分:0 
嗯,行的,快行动用C写出来吧。呵呵。
2012-07-31 22:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
嗯,这样自己探究一下,每个方案都进行调试,直到把事情彻底解决。每个问题都是这样做,学习就能进步。关键是“用心”,不需贪多,任何一个案例都示范了大部分编程常见的问题,耐心去钻就是了,这就是人们常说的“坚持”的真正意思。

探究程序的每一行是怎么执行的,数据是怎么流动的,在头脑中想像出一个完整的动态程序运动过程。编程就是这么回事,首先把解决问题的方案在脑中整理清晰,用编程代码来贯彻这个意图,而不是让代码带着自己乱走——必须让程序严格按自己意图行事,绝对不能失控,这是铁的原则。

授人以渔,不授人以鱼。
2012-07-31 22:28
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:2 
帮顶 大家都来学习 ~~

梅尚程荀
马谭杨奚







                                                       
2012-07-31 22:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分: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;


你看看内层循环,每次迭代,都令max=a[0][j],但你留意到没有,在下面,你使用的都是a[i][j],为什么偏偏与a[0][j]有差异?跟踪一下,这个循环,每迭代一次,就printf()出max和a[i][j]、a[0][j]看看,程序在一个循环中到底干了什么,是否符合意图?如果你懂单步跟踪,那最好了,可以清晰地看到程序“指针”在代码中是如果运动的。

[ 本帖最后由 TonyDeng 于 2012-7-31 22:39 编辑 ]

授人以渔,不授人以鱼。
2012-07-31 22:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
老大 提醒的对啊
睡觉了呢 晚安啊

梅尚程荀
马谭杨奚







                                                       
2012-07-31 22:46
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
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
17楼,是的。
18楼,用一个中间变量把最大值的i存起来,在循环结束后用。

授人以渔,不授人以鱼。
2012-08-01 10:40
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.016961 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved