当前位置: 代码迷 >> C语言 >> 将三个整数从大到小输出(指针方法 麻烦高手给点思路!谢谢 呵呵)
  详细解决方案

将三个整数从大到小输出(指针方法 麻烦高手给点思路!谢谢 呵呵)

热度:152   发布时间:2008-05-25 09:42:50.0
指针我也是用得不怎么熟
写了一个又长又臭的代码,马马虎虎还是能够执行楼主的要求
----------------解决方案--------------------------------------------------------
各位   我修改了一下    代码如下   利用 指针  函数   数组   和冒泡排序的方法   
能够完成题目的要求




#include<stdio.h>
int swap(int *m,int *n)
{
    int temp;
    temp=*m;
    *m=*n;
    *n=temp;
}
main()
{
    int a[3],i,j;
    printf("Please enter three numbers:\n");
    for(i=0;i<3;i++)
        scanf("%d",&a[i]);
    for(i=0;i<3;i++)
        for(j=i+1;j<3;j++)
            if(a[j]>a[i])
                swap(&a[j],&a[i]);
            for(i=0;i<3;i++)
                printf("%d,",a[i]);
}
----------------解决方案--------------------------------------------------------
swap函数有错,int 类型却没有值返回

另外 a,b不应该取m,n的地址~~
----------------解决方案--------------------------------------------------------
这个题用指针有几种方法
----------------解决方案--------------------------------------------------------
还可以这样,用个中间变量来交换a[i]和a[j] 元素下标
#include<stdio.h>
int swap(int *m,int *n)
{
        int temp;
        temp=*m;
        *m=*n;
        *n=temp;
}
main()
{
        int a[3],i,j,k;
        printf("Please enter three numbers:\n");
        for(i=0;i<3;i++)
                scanf("%d",&a[i]);
        for(i=0;i<3;i++)
              { k=i;
               for(j=i+1;j<3;j++)
                        if(a[j]>a[k])
                           k=j;
                                swap(&a[i],&a[k]); }
                        for(i=0;i<3;i++)
                                printf("%d,",a[i]);
getch();}
----------------解决方案--------------------------------------------------------
  相关解决方案