| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:[求助]在求助C语言一到题目!!
只看楼主 加入收藏
yaohua6165
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-8-20
收藏
 问题点数:0 回复次数:9 
[求助]在求助C语言一到题目!!

还是很简单的问题,本人刚学,不知道什么算法,只知道最简单的互换方法,题目是: 3个数排序,由大到小输出.
#include <stdio.h>
void main()
{
int x,y,z,temp;

printf("输入3个数字:\n");
scanf("%d%d%d",&x,&y,&z);
if(x<y)
temp=x;
x=y;
y=temp;
if(x<z)
temp=x;
x=z;
z=temp;
if(y<z)
temp=y;
y=z;
z=temp;

printf("%d%d%d",x,y,z);

}
答案肯定不对,但是我不知道我的思路错在哪,是否还有更简单的算法,望各位大哥指点啊,谢了啊!!!

搜索更多相关主题的帖子: C语言 
2006-11-04 19:19
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

弄错了,看下面的

[此贴子已经被作者于2006-11-4 19:41:56编辑过]


这个社会太复杂。。。
2006-11-04 19:38
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用yaohua6165在2006-11-4 19:19:45的发言:

还是很简单的问题,本人刚学,不知道什么算法,只知道最简单的互换方法,题目是: 3个数排序,由大到小输出.
#include <stdio.h>
void main()
{
int x,y,z,temp;

printf("输入3个数字:\n");
scanf("%d%d%d",&x,&y,&z);
if(x<y)
{ temp=x;
x=y;
y=temp;}
if(x<z)
{ temp=x;
x=z;
z=temp;}
if(y<z)
{ temp=y;
y=z;
z=temp;}

printf("%d%d%d",x,y,z);

}
答案肯定不对,但是我不知道我的思路错在哪,是否还有更简单的算法,望各位大哥指点啊,谢了啊!!!

少了些大括号。。。
main()
{int a[4],i,j,t;
for(i=1;i<=3;i++)
scanf("%d",&a[i]);
for(i=1;i<3;i++)
for(j=1;j<=3-i;j++)
if(a[j]<a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("the sorted numbers are :\n");
for(i=1;i<=3;i++)
printf("%d ",a[i]);
getch();
}
这是冒泡排序


这个社会太复杂。。。
2006-11-04 19:41
baxia
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-3-10
收藏
得分:0 

对啊 少了点东西

2006-11-04 19:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用yaohua6165在2006-11-4 19:19:45的发言:

还是很简单的问题,本人刚学,不知道什么算法,只知道最简单的互换方法,题目是: 3个数排序,由大到小输出.
#include <stdio.h>
void main()
{
int x,y,z,temp;

printf("输入3个数字:\n");
scanf("%d%d%d",&x,&y,&z);
if(x<y)
temp=x,x=y,y=temp;//逗号表达式
if(x<z)
temp=x,x=z,z=temp;
if(y<z)
temp=y,y=z,z=temp;

printf("%d%d%d",x,y,z);

}
答案肯定不对,但是我不知道我的思路错在哪,是否还有更简单的算法,望各位大哥指点啊,谢了啊!!!

注意点风格就不会这样了,一般在写条件,循环,等复合语句时最好用大括号括起来,不管程序段是否只有一条语句.


倚天照海花无数,流水高山心自知。
2006-11-04 19:52
zzsy04et138
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2006-10-18
收藏
得分:0 

呵呵,还有就是注意下输出时的空格, printf("%d %d %d",x,y,z); 小问题哦~~~


2006-11-04 21:11
baxia
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-3-10
收藏
得分:0 
楼上说的对,有个空格就好看多了。程序没问题
2006-11-04 21:39
Ruibi
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-9-13
收藏
得分:0 
先定义一个交换顺序的函数,只要满足条件,就调用该函数即可~!
定义交换函数如下:
void swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}

然后在主函数中使用:

void main()
{
int a,b,c;
printf("请输入a,b,c的值:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)swap(&a,&b);
if(a>c)swap(&a,&c);
if(b>c)swap(&b,&c);
printf("三个数从大到小排序如下:\n");
printf("%d %d %d \n",a,b,c);
}
2006-11-04 23:15
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zzsy04et138在2006-11-4 21:11:38的发言:

呵呵,还有就是注意下输出时的空格, printf("%d %d %d",x,y,z); 小问题哦~~~

不觉得这是好的.以后你会体会到的.


倚天照海花无数,流水高山心自知。
2006-11-04 23:52
zxd198778
Rank: 1
等 级:新手上路
帖 子:99
专家分:0
注 册:2006-7-30
收藏
得分:0 
我要对版主提个问题,
if(x<y)
temp=x,x=y,y=temp;//逗号表达式
if(x<z)
temp=x,x=z,z=temp;
if(y<z)
temp=y,y=z,z=temp;
不用逗号用分号一样的可以把
if(x<y)
{temp=x;x=y;y=temp;}
应该一样可以把

我一个不懂世事的人,希望能在这里学到我想学的一些东西。
2006-11-04 23:59
快速回复:[求助]在求助C语言一到题目!!
数据加载中...
 
   



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

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