| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1467 人关注过本帖
标题:为什么不能将 k=i 和 k=j 换成两个 k=两个常数?
取消只看楼主 加入收藏
licai123
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-8-6
结帖率:100%
收藏
 问题点数:0 回复次数:2 
为什么不能将 k=i 和 k=j 换成两个 k=两个常数?
/*将输入的10个数按升序排列*/

#include<stdio.h>
int main()
{
 int a[10],temp;
 int i,j,k;
 for(i=0;i<10;i++)
  scanf("%d",&a[i]);
 for(i=0;i<9;i++)
 {
  k=i;             //疑惑1:可不可以将改成k=100;
  for(j=i+1;j<10;j++)
   if(a[j]>a[k])
    k=j;       //疑惑二:可不可以改为k=99;

  if(i!=k)   
  {
   temp=a[k];
   a[k]=a[i];
   a[i]=temp;
  }
 }
 for(i=0;i<10;i++)
  printf("降序排列为:%d\n",a[i]);
 return 0;
}
2014-08-12 17:52
licai123
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-8-6
收藏
得分:0 
当然,如果k=100,我就会把
if(i!=k)   
   {
    temp=a[k];
    a[k]=a[i];
    a[i]=temp;
   }
改成if(k!=100)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}但是这样下来结果还是显示数组a损坏!
2014-08-12 19:16
licai123
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 5 楼 You0
/*将输入的10个数按降序排列*/

#include<stdio.h>
int main()
{
 int a[10],temp;
 int i,j,k;
 for(i=0;i<10;i++)
  scanf("%d",&a[i]);
 for(i=0;i<9;i++)
 {
  k=100;             //疑惑1:可不可以将改成k=100;
  for(j=i+1;j<10;j++)
   if(a[j]>a[k])
    k=99;       //疑惑二:可不可以改为k=99;

  if(k!=100)    //这个是如果未执行k=99后
  {
   temp=a[i];
   a[i]=a[j];
   a[j]=temp;
  }
 }
 for(i=0;i<10;i++)
  printf("降序排列为:%d\n",a[i]);
 return 0;
}

这个是按我原来的意思修改后的程序,但是行不通啊
2014-08-12 21:14
快速回复:为什么不能将 k=i 和 k=j 换成两个 k=两个常数?
数据加载中...
 
   



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

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