| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 534 人关注过本帖
标题:纠错,实在不明白哪里有错
只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏
已结贴  问题点数:5 回复次数:5 
纠错,实在不明白哪里有错
#include<stdio.h>
main()
{
 int i,j,k,t,a[10];
 for(i=0;i<10;i++)
 {
     scanf("%d",&a[i]);
 }
 for(i=0;i<10;i++)
 {
     k=i;
     for(j=i+1;j<10;j++)
      if(a[j]>a[i])
      k=j;
      if(i!=k)
      {      
          t=a[i];
          a[i]=a[k];
          a[k]=t;
      }
     
}
     
 for(i=0;i<10;i++)
 {
   printf("%d",a[i]);
 }
 }
2012-02-02 00:19
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:3 
程序代码:
#include <stdio.h>
main()
{ int i,j,k,t,a[10];
  for(i=0;i<10;i++)
   scanf("%d",&a[i]);
  for(i=0;i<10;i++)
   { k=i;
     for(j=i+1;j<10;j++)
      if(a[j]>a[k])   /*no:a[j]>a[i]*/
      k=j;
      if(i!=k)
      { t=a[i];
        a[i]=a[k];
        a[k]=t;
       }
     }

 for(i=0;i<10;i++)
  printf("%d",a[i]);

 getch();
} 
其实只有一个地方错了,我已经给你标示出来了,我重新布局了下,明了点;
PS:if(a[j]>a[i]) k=j;这里只会拿a[i]与后面的数比较,找出比a[i]大的数,
     而你题意是要你找出最大的数,所有这里错了,改为if(a[j]>a[k]) k=j;
     当后面的数比a[k]大时,逐个替换,直到找到最大的数;仔细再理解下,
     应该能弄明白的!!!
2012-02-02 01:51
lh1992deren
Rank: 1
等 级:新手上路
帖 子:3
专家分:6
注 册:2012-2-2
收藏
得分:1 
你也是看谭教授的书吧。貌似指针那一章有个这样的例子。可以说你照抄都抄错了!
2012-02-02 08:05
alexkh
Rank: 2
等 级:论坛游民
帖 子:37
专家分:66
注 册:2011-12-8
收藏
得分:1 
for(j=i+1;j<10;j++)
      if(a[j]>a[i])
      k=j;

重点是在这里。
你的目的是i和i之后的数字比较,把最大的数字替换为i。但是看这个代码,他的意思是把i和之后的数字比较,如果i小于之后的数字,就把i与之后的数字替换,但这个数字并不一定是最大的,只是大于i就满足条件了,比如这个数组。{1,5,3,4,2},这样运行程序之后,k会是最后一个2,因为他也大于i,满足了条件。
说的比较混乱,抱歉。
2012-02-02 08:46
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 3楼 lh1992deren
我看的是C程序100个经典案例
2012-02-02 15:19
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 2楼 a476644693
非常感谢
2012-02-02 15:22
快速回复:纠错,实在不明白哪里有错
数据加载中...
 
   



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

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