猿问

c语言编程找错

#include<stdio.h>

#define N 3

int main()

{

    void sort(int *p);

    int i=0,a[N]={0},*p;

    for(i=0;i<N;i++)

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

    p=&a[0];

    sort(p);

    printf("The sort number is:\n");

    for(i=0;i<N;i++)

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

    printf("\n");

    return 0;

}

void sort(int *p)

{

    int i,t,j;

    for(j=0;j<N-1;j++)

        for(i=0;i<N-1-j;i++)

            if(*p>*(p+1))

            {

                t=*p;

                *p=*(p+1);

                *(p+1)=t;

            }

}

对三个整数进行排序,本来不用这么复杂,但是想用不同的方法去做,如果修改N还可以简便的修改程序,但是输出的结果不对。。。

慕前端6184863
浏览 1139回答 2
2回答

慕用4063026

#include<stdio.h> #define N 3 int main() {     void sort(int *p);     int i=0,a[N]={0},*p;     for(i=0;i<N;i++)         scanf("%d",&a[i]);     sort(a);     printf("The sort number is:\n");     for(i=0;i<N;i++)         printf("%5d",a[i]);     printf("\n");     return 0; } void sort(int *p) {     int i,t,j;     for(j=0;j<N-1;j++)         for(i=j+1;i<=N;i++)             if(*(p+i)>*(p+j))   //你写的版本的这里没有对数组第3个元素进行判断             {                  //所以才会造成你哪个只判断第一元素和第二元素                 t=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=t;             } }按照你的改的输入:1 2 3输出:The sort number is:    3    2    1

东风冷雪

#include <stdio.h> #define N 6 //void sort(int *p); int main()     {        void sort(int *p);         int i = 0, a[N] = {0}, *p;         for (i = 0; i < N; i++)            scanf("%d", &a[i]);         p = a;         sort(p);         printf("The sort number is:\n");         for (i = 0; i < N; i++)             printf("%5d", a[i]);         printf("\n");         return 0;     }     void sort(int *p)     {         int i, t, j;         for (j = 0; j < N - 1; j++)             for (i =j+1; i < N; i++)                 if (*(p+j) > *(p + i))                 {                     t = *(p+j);                     *(p+j) = *(p + i);                     *(p + i) = t;                 }     }无语 ,冒泡写的一团糟糕,逻辑都是错的。。。。。/home/dfzxk/CLionProjects/untitled2/cmake-build-debug/untitled299-885692247-58The sort number is:  -88  -58   22   47   99  569Process finished with exit code 0
随时随地看视频慕课网APP
我要回答