C 语言教程 在线

1660c-exercise-example5

参考:

#include<stdio.h>
int main()
{
    int i,j,k;
    printf("请输入三个数字:");
    scanf("%d%d%d",&i,&j,&k);
    if(i>j)
    {
    i^=j;
    j^=i;
    i^=j;
    }
   if(i>k) 
   {
       i^=k;
        k^=i;
    i^=k;
   }
   if(j>k)
   {
       j^=k;
       k^=j;
       j^=k;
   }
   printf("%d %d %d\n",i,j,k);
}

1659c-exercise-example5

参考方法:

#include<stdio.h>

int main(){
    int a[4];
    void InsSort(int a[],int n);
    printf("Please enter the num:");
    scanf("%d%d%d",a+1,a+2,a+3);
    InsSort(a,4);
    printf("%d,%d,%d",*(a+1),*(a+2),*(a+3));
}

//直接插入排序,类似打扑克发牌整理扑克,每加入一个数据,就整理有序一次,
//依次比较后移
//数据放置在a[1]之后,a[0]放置标志位,在每趟循环中,也起到防止下标越界作用
void InsSort(int a[],int n){
    int i,j;
    //第一趟从第二个数字开始,认为第一个数字有序
    for(i=2;i<=n;i++){
        //将待插入数据放入a[0]
        a[0]=a[i];
        j=i;
        //a[0]和前一项比较,前一项较大则前一项后移,覆盖后一项……
        while(a[j-1]>a[0]){
            a[j]=a[j-1];
            //前一项已经后移的前提下,a[0]和前一项的前一项比较
            j--;
        }
    a[j]=a[0];
    }
}

1658c-exercise-example5

参考方法:

#include <stdio.h>

int main(int argc, char *argv[]) {
    int a,b,c,p,q,r,s,t;
    printf("请输入三个数字:");
    scanf("%d%d%d",&a,&b,&c);
    p=(a<b)?a:b;
    q=(a>b)?a:b;
    r=(q<c)?q:c;
    s=(q>c)?q:c;//max
    t=(p<c)?p:c;//min
    printf("%d %d %d",t,r,s);
    return 0;
}

1657c-exercise-example5

利用define宏定义交换数据

#include <stdio.h>
#define swap(a,b) {a=a+b;b=a-b;a=a-b;}
int main()
{
    int x,y,z;
    printf("请输入三个数字:");
    scanf("%d %d %d",&x,&y,&z);
    if(x>y)
    {
        swap(x,y);
    }
    if(x>z)
    {
        swap(x,z);
    }
    if(y>z)
    {
        swap(y,z);
    }
    printf("从小到大排序:%d %d %d\n",x,y,z);
    return 0;
}

1656c-exercise-example5

参考方法:

#include<stdio.h>
#define N 3  // N的值可更改,实现N个数的排序

int main()

{
    int i,j,k,temp;
    int shuzu[N];
    for(i=0;i<N;i++)             //选择法排序
    {
        printf("input the %d number:",i+1);
        scanf("%d",&shuzu[i]);
    }

    for (i=0;i<N-1;i++)
    {
        k=i;
        for(j=i+1;j<N;j++)
        {
            if(shuzu[j]<shuzu[k])   //实现数组从小到大排序
                k=j;
        }
        if(k!=i)
        {
            temp=shuzu[k];
            shuzu[k]=shuzu[i];
            shuzu[i]=temp;
        }
    }
    for(i=0;i<N;i++) printf("%d ",shuzu[i]);
}