C 语言 键盘输入一组数据,两种方式排序输出。

1. 自定义一个函数,将三个数字按照由大到小或者有小到大的顺序排列并且输出。

 要求:在main函数中完成三个数字的输入,调用自定义的函数选择排序方式,并完成三个数字的排列和输出

 2. 自定义一个函数,将一组从键盘接收到的数字按照由大到小或者有小到大的顺序排列并且输出。

 要求:在main函数中完成一组数字的输入,将数字存到一个一维数组中,调用自定义的函数,选择排序方式,并完成数字的排序和输出

(第一题的升级版)

 1:

#include <stdio.h>

void sort(int a[]);

 int main(int argc, const char * argv[])

{

  int i,a[3];//  三个数排序冒泡法排序

    printf("请输入三个数字:\n");

    for (i=0; i<=2; i++) {

        scanf("%d",&a[i]);

    }

    sort(a);

    for (i=0; i<=2; i++) {

        printf("%d ",a[i]);

    }

 return 0;

}

void sort(int a[]){    //排序算法

    int i,j,t,n;

    printf("请选择排序方式:1代表由大到小,2代表由小到大:\n");

    scanf("%d",&n);

    if (n==1) {

        for (i=0; i<=1; i++) {

            for (j=i+1; j<=2; j++) {

                if (a[i]<a[j]) {

                    t=a[i];

                    a[i]=a[j];

                    a[j]=t;

                }

            }

        }

    }

    if (n==2) {

        for (i=0; i<=1; i++) {

            for (j=i+1; j<=2; j++) {

                if (a[i]>a[j]) {

                    t=a[i];

                    a[i]=a[j];

                    a[j]=t;

                }

            }

        }

    }

}

 2: 

#include <stdio.h>

void sort1(int a[] ,int count);

 int main(int argc, const char * argv[])

{

 int i,a[20],count=0;//   多个数排序

    char c;

    printf("请输入数字:\n");

    scanf("%d",&a[0]);      //先输入一个数字存进去

    for (i=1; (c=getchar())!='\n'; i++) {//getchar不识别数字,先读取第一个空格,从第一个数字后面的第一个空格开始读取

        scanf("%d",&a[i]);

        count++;

    }

    sort1(a,count+1);

    for (i=0; i<=count; i++) {

        printf("%d ",a[i]);

    }

 return 0;

}

void sort1(int a[] ,int count){    //排序算法冒泡法

    int i,j,t,x;

    printf("请选择排序方式:1代表由大到小,2代表由小到大:\n");

    scanf("%d",&x);

    if (x==1) {

        for (i=0; i<=count-2; i++) {

            for (j=i+1; j<=count-1; j++) {

                if (a[j]>a[i]) {       

                    t=a[i];

                    a[i]=a[j];

                    a[j]=t;

                }

            }

        }

        

    }

    if (x==2) {

        for (i=0; i<=count-2; i++) {

            for (j=i+1; j<=count-1; j++) {

                if (a[j]<a[i]) {  

                    t=a[i];

                  a[i]=a[j];

                    a[j]=t;

                }

            }

        }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值