佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1029|回复: 14

一个基本的c程式!!!

[复制链接]
发表于 18-5-2006 11:27 PM | 显示全部楼层 |阅读模式
要user打三个integer,然后这三个号码要从小到大顺序排列!!!
Exampla:Input:3 2 1  Output:1 2 3

#include<stdio.h>
int main()
{
int a,b,c,n1,n2,n3;
printf("Input:");
scanf("%d%d%d",&a,&b,&c);
if(a<b&&a<c)
n1=a;
else if(b<c&&b<a)
n1=b;
else if(c<a&&c<b)
n1=c;

printf("%d%d%d",n1,n2,n3);
return 0;
}

这是我写的,第一最小的号码做到了,但是接下来的号码要怎样做呢?请各位高手们给我一些提示可以吗!!!

楼主的帖子难于解读,版主修饰采用 [√] 禁用 Smilies

[ 本帖最后由 白日梦 于 19-5-2006 09:11 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 19-5-2006 12:37 AM | 显示全部楼层
if(a<b&&a<c)
n1=a;
else if(b<c&&b<a)
n1=b;
else if(c<a&&c<b)
n1=c;


上面你写的,照上面一直用“else if” 比对剩下的排列(大小)便可以了,只须更改 “<”。你上面写的只做了以下比对 3 次:
a b/c b/c
b a/c a/c
c a/b a/b
剩下
b/c a b/c
a/c b a/c
a/b c a/b

b/c b/c a
a/c a/c b
a/b a/b c
回复

使用道具 举报

发表于 19-5-2006 01:58 PM | 显示全部楼层
我有点忘记C了,所以我用了C++写....
你自己改一点吧!

#include<iostream>
using namespace std;
int main()
{
        int num1,num2,num3;
        cout<<"Input\n";
        cin>>num1>>num2>>num3;

        cout<<"Ouput:\n";
        if(num3<=num1&&num3<=num2)
                cout<<num3<<endl;
        else if(num2<num3&&num2<=num1)
                cout<<num2<<endl;
        else
                cout<<num1<<endl;

        if(num2<=num1&&num2>=num3)
                cout<<num2<<endl;
        else if(num3<=num1&&num3>=num2)       
                cout<<num3<<endl;
        else
                cout<<num1<<endl;

        if(num1>=num2&&num1>=num3)
                cout<<num1<<endl;
        else if(num2>=num1&&num2>=num3)
                cout<<num2<<endl;
        else       
                cout<<num3<<endl;

        return 0;
}
回复

使用道具 举报

 楼主| 发表于 19-5-2006 06:27 PM | 显示全部楼层
原帖由 BillyG 于 19-5-2006 12:37 AM 发表


上面你写的,照上面一直用“else if” 比对剩下的排列(大小)便可以了,只须更改 “<”。你上面写的只做了以下比对 3 次:
a b/c b/c
b a/c a/c
c a/b a/b
剩下
b/c a b/c
a/c b a/c
a/b c a/ ...


如果不用这个方法?还有其他方法吗?毕竟这个方法有点笨和长!!如果题目要我们input十个数目的话,那不就要做很多次的比对吗?
回复

使用道具 举报

发表于 19-5-2006 07:28 PM | 显示全部楼层
可以考慮把所有的數字放入 array 裡面
然後做 sort
回复

使用道具 举报

发表于 19-5-2006 07:29 PM | 显示全部楼层
做个简单的bubble sort就好了
回复

使用道具 举报

Follow Us
 楼主| 发表于 19-5-2006 07:30 PM | 显示全部楼层
原帖由 flashang 于 19-5-2006 07:28 PM 发表
可以考慮把所有的數字放入 array 裡面
然後做 sort


问题是我不会用array,还没学到啊!!!只学会if,else,for,while statement吧了!!!
回复

使用道具 举报

发表于 19-5-2006 08:34 PM | 显示全部楼层
原帖由 ahjing 于 19-5-2006 07:30 PM 发表


问题是我不会用array,还没学到啊!!!只学会if,else,for,while statement吧了!!!


用if else 就可以了...
只是coding 比较长罢了..
回复

使用道具 举报


ADVERTISEMENT

发表于 19-5-2006 11:03 PM | 显示全部楼层
用loop也可以做到,这个短很多,ahjing你应该是新纪元的学生
回复

使用道具 举报

发表于 20-5-2006 05:49 AM | 显示全部楼层
原帖由 ahjing 于 19-5-2006 06:27 PM 发表


如果不用这个方法?还有其他方法吗?毕竟这个方法有点笨和长!!如果题目要我们input十个数目的话,那不就要做很多次的比对吗?


有,如 basic 所说用 loop(建议用 while...do 或 do...while) 和 sort。如果输入数目不定的话,便需要用到 array 和把 array 做成 dynamic array。你有学到 array 了吗?
如果不想用 array 便只有用 pointer 了。

用 do/while loop 一直向 user 读取数字和 sort 直到 user 输入停止符号为止。
dnamic array ,只须在每次 user 输入新的数目后重新定义(declare)array size 便可,array 便会随着 loop 一直增大。


注:我学的是 C++ ,C 没学过如果有错请酌情更正。
回复

使用道具 举报

发表于 22-5-2006 11:44 PM | 显示全部楼层
原帖由 basic 于 19-5-2006 11:03 PM 发表
用loop也可以做到,这个短很多,ahjing你应该是新纪元的学生


新纪元的?嘿嘿。。。告诉wan ting姐。。。
回复

使用道具 举报

jeefatt 该用户已被删除
发表于 22-5-2006 11:59 PM | 显示全部楼层
用我的吧 sort
回复

使用道具 举报

发表于 23-5-2006 01:10 AM | 显示全部楼层
原帖由 qiyan 于 22-5-2006 11:44 PM 发表


新纪元的?嘿嘿。。。告诉wan ting姐。。。


hi..hi.. 刘老师还好吗?
回复

使用道具 举报

发表于 23-5-2006 10:24 AM | 显示全部楼层
原帖由 jasonmun 于 23-5-2006 01:10 AM 发表


hi..hi.. 刘老师还好吗?


不知道,很久没见了。呵呵。。
回复

使用道具 举报

发表于 29-5-2006 05:05 PM | 显示全部楼层
c language 有 % 吗?
有就容易很多。

我是 c++ 使用者。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 13-11-2024 11:07 PM , Processed in 0.137876 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表