为了账号安全,请及时绑定邮箱和手机立即绑定

c语言编程找错

c语言编程找错

C
慕前端6184863 2017-12-09 16:49:37
#include<stdio.h>#define N 3int 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还可以简便的修改程序,但是输出的结果不对。。。
查看完整描述

2 回答

已采纳
?
慕用4063026

TA贡献195条经验 获得超115个赞

#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


查看完整回答
1 反对 回复 2017-12-13
?
东风冷雪

TA贡献33条经验 获得超7个赞

#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/untitled2

99

-88

569

22

47

-58

The sort number is:

  -88  -58   22   47   99  569


Process finished with exit code 0


查看完整回答
反对 回复 2017-12-13
  • 2 回答
  • 0 关注
  • 1138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信