| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1110 人关注过本帖
标题:求高手不吝指教,谢谢!!!
取消只看楼主 加入收藏
lovecwu
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2012-9-3
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
求高手不吝指教,谢谢!!!
题:随机输入10个整数,用C编程将其从大到小依次输出。
     我编程如下,思想为:从第一个数开始,将其与后面的每个数比较,求出最大值,若最大值不是第一个数,则将最大值与第一个数互换位置;然后又从第二个数开始,将第二个数与后面的每个数比较,求出最大值,若最大值不是第二个数,则将此最大值与第二个数互换位置;依此类推,直至最后一位。但按如下程序运行,输出结果却不正确。求解!!!
#include<stdio.h>
void main()
{
 long a[10],max,mid;
 int b,c;
 printf("\nplease input ten numbers:\n");
 for(b=0;b<10;b++)
 scanf("%d",&a[b]);
 for(c=0;c<10;c++)
 {
  max=a[c];
  for(b=c+1;b<10;b++)
  {
   if(max<a[b])
   max=a[b];
  }
  if(max!=a[c])
  {
   mid=a[c];
   a[c]=max;
   a[b]=mid;
  }
 }
  for(c=0;c<10;c++)
  printf("\n%d",a[c]);
}
搜索更多相关主题的帖子: 最大值 numbers include 编程 
2012-09-03 02:14
lovecwu
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2012-9-3
收藏
得分:0 
回复 2楼 netlin
感谢指教,但按您的程序运行后仍然得不到正确结果。感谢
2012-09-03 13:26
lovecwu
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2012-9-3
收藏
得分:0 
回复 2楼 netlin
感谢您的指教,但按您修改后的程序运行仍得不到正确结果,我仔细查看程序后发现了其中的另一个问题如下。总之非常感谢!
#include<stdio.h>
void main()
{
long a[10],max,mid;
int b,b2,c;
printf("\nplease input ten numbers:\n");
for(b=0;b<10;b++)
scanf("%d",&a[b]);      //此处必须改为scanf("%ld",&a[b]);因为定义时数组a[10]为long型。
for(c=0;c<10;c++)         
{                        
  max=a[c];               
  for(b=c+1;b<10;b++)
  {
   if(max<a[b]){
       b2=b;
       max=a[b];
    }
  }
  if(max!=a[c])
  {
   mid=a[c];
   a[c]=max;
   a[b2]=mid;
  }
}
  for(c=0;c<10;c++)
  printf("\n%d",a[c]);   //此处需改为printf("\n%ld",a[c]);  但此处不改的话也是OK的
}
2012-09-04 00:36
lovecwu
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2012-9-3
收藏
得分:0 
回复 5楼 micholasmalo
谢谢,但您的程序有点小错误,如下:
#include<stdio.h>
void main()
{
long a[10],max;
int b,c;
printf("\nplease input ten numbers:\n");
for(b=0;b<10;b++)
scanf("%d",&a[b]);            //必须改为scanf("%ld",&a[b]);            
for(c=0;c<9;c++)
for(b=0;b<9-c;b++)
if(a[b]>a[b+1])              //题目是从大到小输出,所以改为if(a[b]<a[b+1])              
{
max=a[b];
a[b]=a[b+1];
a[b+1]=max;
}
  for(c=0;c<10;c++)
  printf("\n%ld",a[c]);
}
用的是冒泡法~~~
2012-09-04 13:01
快速回复:求高手不吝指教,谢谢!!!
数据加载中...
 
   



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

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