| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:指点下这个程序的错误,大家积极点嘛..嫌分少的话等下我再发一贴加分.
只看楼主 加入收藏
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
结帖率:90.48%
收藏
已结贴  问题点数:20 回复次数:5 
指点下这个程序的错误,大家积极点嘛..嫌分少的话等下我再发一贴加分.
这个是一个求二维数组鞍点的程序(即行最大列最小的那个数)程序如下:
#include <stdio.h>
#define n 5
void main()
{int a[n][n],i,j,k,minj,flag;
 for(i=0;i<n;i++)                    假设输入数组为 1 2 3 4 5
  {for(j=0;j<n;j++)                                 2 4 6 8 10
    scanf("%d",&a[i][j]);}                          3 6 9 12 15
 printf("a[5][5]=");                                4 8 12 16 20   
 for(i=0;i<n;i++)                                   5 10 15 20 25
  {for(j=0;j<n;j++)
    printf("%d ",a[i][j]);
   printf("\n");
    }
  flag=1;
  if(flag)
   { for(i=0;i<n;i++)
      {minj=0;
       for(j=0;j<n;j++)
        if(a[i][j]>a[i][minj]) minj=j;
       for(k=0;k<n;k++)
        { if(a[k][minj]<=a[i][minj]) flag=1;
          else flag=0; }
          }
      }
  if(flag==0) printf("a[n][n] have andian ,it's %d\n",a[i][minj]);
  else printf("a[n][n] don't have  andian \n");
  getch();
}
不管我怎么输入数组 比如说输入数组中的元素,程序运行的结果都是说没有鞍点,希望来指点下。
还有就是论坛怎么老是上不来,是不是我电脑本身的问题? 还是大家都上不来?

[ 本帖最后由 李若斌 于 2009-11-30 10:34 编辑 ]
2009-11-30 09:40
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
最近是有点小问题,不是你电脑的毛病。
2009-11-30 10:33
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 2楼 m456m654
版主老大 帮忙看下这个程序。我实在找不出来错误了。
2009-11-30 10:35
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:15 
程序代码:
//  lz的错主要错在标志变量的使用上,但 if(flag)不等于 while(flag) if只判断一次的。。里面的是逻辑判断,while里面的才是循环条件,用if再改变flag的值是不能退出的。。所以就算存在那个暗点,也会继续计算。。。所以出不来··· 
#include <stdio.h>
#define n 5
void main()
{
    int a[n][n],i,j,k,minj,flag;
    for(i=0;i<n;i++)            
    {
        for(j=0;j<n;j++)                                  
            scanf("%d",&a[i][j]);
    }                          
    printf("a[5][5]=");                                   
    for(i=0;i<n;i++)                                   
    {
        for(j=0;j<n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    flag=1;
    if(flag)
    { 
        for(i=0;i<n && flag;i++)   //  这里加上循环终止标志就好了
        {
            minj=0;
            for(j=0;j<n;j++)
                if(a[i][j]>a[i][minj])
                    minj=j;
            for(k=0;k<n;k++)
            { 
                if(a[k][minj]<=a[i][minj])
                    flag=1;
                else
                    flag=0; 
            }
        }
    }
    if(flag==0)
        printf("a[n][n] have andian ,it's %d\n",a[i-1][minj]);  // 注意,循环后i后加1 ,要输出正确的那个数,应该减1才行
    else 
        printf("a[n][n] don't have  andian \n");
}
2009-11-30 10:46
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:2 
改了一下,可以了···
#include <stdio.h>
#define n 5
void main()
{
    int a[n][n],i,j,k,min,max,flag,ii,iii,jj;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    printf("a[5][5]=\n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    flag=0;

    for(i=0;i<n;i++)
     {
         max=a[i][0];
       for(j=0;j<n;j++)
            if(a[i][j]>=max)
            max=a[i][j],ii=i,jj=j;
        min=a[0][jj];
       for(k=0;k<n;k++)
           if(a[k][jj]<=min)
               min=a[k][jj],iii=k;        
       if(ii==iii)
       {
           flag=1;
           break;
       }         
     }
        if(flag)
            printf("a[n][n] have andian ,it's %d\n",min);
        else
           printf("a[n][n] don't have  andian \n");
}
2009-11-30 10:57
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:3 
写的有点乱,你自己看看吧:
#include <stdio.h>
#define n 5
void main()
{
    int a[n][n],i,j,k,minj,flag,ff=0;
for(i=0;i<n;i++)
  {
      for(j=0;j<n;j++)
    scanf("%d",&a[i][j]);
      }
printf("a[5][5]=");
for(i=0;i<n;i++)
  {
      for(j=0;j<n;j++)
    {
    printf("%d ",a[i][j]);
      if(j==n-1)
   printf("\n");
   }
    }
  flag=1;
  if(flag)
   {
       for(i=0;i<n;i++)
      {
          minj=0;
       for(j=0;j<n;j++)
    if(a[i][j]>a[i][minj])
    minj=j;
       for(k=0;k<n;k++)
    {
        if(k==i)
        continue;
        else
        {
        if(a[k][minj]<a[i][minj])
            {
                flag=1;
                break;
            }
      else flag=0;
      }
       }

  if(flag==0) {
  printf("a[n][n] have andian ,xia biao shi %d hang %d lie;it's %d\n",i,minj,a[i][minj]);
  ff=1;}
  }
  }
  if(ff==0)
  printf("a[n][n] don't have  andian \n");
  getch();
}
2009-11-30 10:59
快速回复:指点下这个程序的错误,大家积极点嘛..嫌分少的话等下我再发一贴加分.
数据加载中...
 
   



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

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