| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 600 人关注过本帖
标题:一个c程序的一点小问题,欢迎指点
只看楼主 加入收藏
shiningwater
Rank: 1
等 级:新手上路
帖 子:51
专家分:5
注 册:2010-3-25
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:4 
一个c程序的一点小问题,欢迎指点
下面这个程序要是输出一个数组的鞍点(即一个数在所在行中最大且在所在列中最小)
  程序编译没有错,就是运行的时候结果有误,得到的鞍点所在的行(i的值)不对
nclude<stdio.h>
void main()
{
   int a[4][5],i,j,maxj,max,min;
   printf("请输入数组:\n");
   for(i=0;i<4;i++)
    for(j=0;j<5;j++)
     scanf("%d",&a[i][j]);
   for(i=0;i<4;i++)
   {max=a[i][0];
    for(j=0;j<5;j++)
       {
      if(a[i][j]>max)max=a[i][j];
   maxj=j;
    }
    for(i=0;i<4;i++)
    {min=a[0][maxj];
    if(a[i][maxj]<min])min=a[i][maxj];}
    if(max==min)printf("鞍点是:a[%d][%d]=%d",i,maxj,max);
    break;
   }
       if(max!=min)
     printf("无鞍点!");
}

提问者: shiningwater - 一级
搜索更多相关主题的帖子: 欢迎 
2010-03-26 12:43
suixingyilu
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2010-3-24
收藏
得分:0 
你这样试试
int a[4][5],i,j,maxj,max,min;
   printf("请输入数组:\n");
   for(i=0;i<4;i++)
    for(j=0;j<5;j++)
     scanf("%d",&a[i][j]);
   for(i=0;i<4;i++)
   {
       max=a[i][0];
    for(j=0;j<5;j++)      
      if(a[i][j]>max)
      {
          max=a[i][j];
        maxj=j;
      }
   
    for(i=0;i<4;i++)
    {min=a[0][maxj];
    if(a[i][maxj]<min)min=a[i][maxj];}
    if(max==min)
    printf("鞍点是:a[%d][%d]=%d",i,maxj,max);
    else
    printf("无鞍点!");
   }
2010-03-26 13:19
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:0 
#include "stdio.h"
main()
{
   int a[4][5],i,j,maxj,max,min;
   printf("请输入数组:\n");
   for(i=0;i<4;i++)
     {
      for(j=0;j<5;j++)
      scanf("%d",&a[i][j]);  
     }
   for(i=0;i<4;i++)
     {
        max=a[i][0];
    for(j=0;j<5;j++)

       if(a[i][j]>max){max=a[i][j];maxj=j;} /* maxj是通过if判断语句了以后才取地址位置.所以if后面要加括号。*/
     }
   for(i=0;i<4;i++)
     {
       min=a[0][maxj];
       if(a[i][maxj]<min)min=a[i][maxj];
       if(max==min)printf("鞍点是:a[%d][%d]=%d",i,maxj,max);/*  break; 不用加,如果max==min就输出。否者就是不等于.直接加else就好了。*/
         else  printf("无鞍点!");
     }
   return 0;
}

[ 本帖最后由 xy4919961 于 2010-3-26 14:44 编辑 ]

QQ群:96348241
2010-03-26 14:41
wuzhanghao88
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:146
注 册:2009-10-25
收藏
得分:20 
#include<stdio.h>
void main()
{
   int a[4][5],i,j,k,maxj,max,min;
   printf("请输入数组:\n");
   for(i=0;i<4;i++)
   {for(j=0;j<5;j++)
     scanf("%d",&a[i][j]);
    printf("/n");
   }
   for(i=0;i<4;i++)
   {   max=a[i][0];
       for(j=0;j<5;j++)
       {
           if(a[i][j]>max)max=a[i][j];
            maxj=j;
       }
       for(k=0;k<4;k++)
       {  min=a[i][maxj];
          if(a[k][maxj]<min)
          min=a[k][maxj];
       }
    if(max==min)
    {  
        printf("鞍点是:a[%d][%d]=%d",i,maxj,max);
       break;
    }
   }
       if(max!=min)
     printf("无鞍点!");
}
你的程序不完整,只是找了第一行而已, if(a[i][maxj]<min])min=a[i][maxj];}是一些简单的错误,要多注意!细心一点!
2010-03-26 15:43
赤那
Rank: 3Rank: 3
来 自:广东
等 级:论坛游侠
威 望:1
帖 子:127
专家分:178
注 册:2010-3-1
收藏
得分:0 
#include<stdio.h>
void main()
{
   int a[4][5],i,j,maxj,max,min;
   printf("请输入数组:\n");
   for(i=0;i<4;i++)
    for(j=0;j<5;j++)
     scanf("%d",&a[i][j]);
   for(i=0;i<4;i++)
   {max=a[i][0];
    for(j=0;j<5;j++)
       {
      if(a[i][j]>max)max=a[i][j];
   maxj=j;
    }
    for(i=0;i<4;i++)
    {min=a[0][maxj];
    if(a[i][maxj]<min)min=a[i][maxj];}
    if(max==min)printf("鞍点是:a[%d][%d]=%d",i,maxj,max);
    break;
   }
       if(max!=min)
     printf("无鞍点!");
}
2010-03-26 17:46
快速回复:一个c程序的一点小问题,欢迎指点
数据加载中...
 
   



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

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