| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1133 人关注过本帖
标题:两次打印的结果为什么不一样???
取消只看楼主 加入收藏
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
结帖率:90.91%
收藏
已结贴  问题点数:15 回复次数:4 
两次打印的结果为什么不一样???
/*四个学生五门课,输出最高成绩以及它属于第几个学生第几门课*/
# include <stdio.h>
int row,column;/*设置全局变量,row表示最高成绩的学生序号,column表示最高成绩属于第几门课*/
void main ()
{
  float max(float a[4][5]);                                                                   /*定义函数max*/
  float cj[4][5]={{61,73,85.5,87,90},{72,84,66,88,78},{75,87,93.5,81,96},{65,85,64,76,71}};   /*cj表示成绩*/
  printf("%.2f\n%d,%d\n",max(cj),row,column);                                                 /*问题!!!*/
  printf("%d,%d\n",row,column);                                                               /*正常!!!*/
}
float max(float a[4][5])
{
  int i,j;
  float t=0;
  for (i=0;i<4;i++)
      for (j=0;j<5;j++)
          if (a[i][j]>t)
          {
            t=a[i][j];row=i+1;column=j+1;
          }  
          return (t);
}
/*****************************************************************************************************
求助各路神仙,为什么输出的结果row和column不一样,是什么原因?
*****************************************************************************************************/
搜索更多相关主题的帖子: max include 
2013-03-23 22:35
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
收藏
得分:0 
回复 3楼 不玩虚的
求教一下,bebug如何使用,百度过了,觉得如果能举一个例子说明一下如何使用更清晰,谢谢老师。
2013-03-24 08:38
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
收藏
得分:0 
回复 5楼 smile_line
你好,我之前定义的float数组变量是用来存放成绩,定义的int全局变量row和column分别用来存放的学生序号和学生的第几门课的。请你再看下我的代码,谢谢。
2013-03-24 08:42
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
收藏
得分:0 
回复 6楼 qiankai
你好,请看下这个,按道理说这两个row,column打印的结果应该是一样的,可是结果不一样是什么原因呢?
 printf("%.2f\n%d,%d\n",max(cj),row,column);                                                 /*问题!!!*/
  printf("%d,%d\n",row,column);                                                               /*正常!!!*/
2013-03-24 08:43
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
收藏
得分:0 
哈哈,我自己想清楚了,本问题已解决。之所以出现那个情况,是因为,在这个输出
printf("%.2f\n%d,%d\n",max(cj),row,column);
时,row和column还是输出的初值,因为必须调用完自定义函数后,row和column才是计算出来的结果。
因此如果把程序代码改成这样就是正常了:
/*增加了一个变量sum,这样可以再打印之前调用自定义函数*/

/*四个学生五门课,输出最高成绩以及它属于第几个学生第几门课*/
# include <stdio.h>
int row,column;/*设置全局变量,row表示最高成绩的学生序号,column表示最高成绩属于第几门课*/
void main ()
{
  float max(float a[4][5]);                                                                   /*定义函数max*/
  float cj[4][5]={{61,73,85.5,87,90},{72,84,66,88,78},{75,87,93.5,81,96},{65,85,64,76,71}};   /*cj表示成绩*/
  float sum;                                                                            /*增加变量sum用来存放max(cj),这样可以在打印之前调用自定义函数*/
  sum=max(cj);
  printf("%.2f\n%d,%d\n",sum,row,column);                                                 /*问题!!!*/
  printf("%d,%d\n",row,column);                                                               /*正常!!!*/
}
float max(float a[4][5])
{
  int i,j;
  float t=0;
  for (i=0;i<4;i++)
      for (j=0;j<5;j++)
          if (a[i][j]>t)
          {
            t=a[i][j];row=i+1;column=j+1;
          }  
          return (t);
}
/*****************************************************************************************************
求助各路神仙,为什么输出的结果row和column不一样,是什么原因?
*****************************************************************************************************/


谢谢每位老师的参与!!!
2013-03-24 09:18
快速回复:两次打印的结果为什么不一样???
数据加载中...
 
   



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

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