旺仔烧麦 发表于 2021-2-16 11:27:31

【谭浩强课后习题】求输入的整数按从小到大排序

编译正确,运行程序出现乱码垃圾值
求大佬解答菜鸟疑问,谢谢大哥{:5_92:}
#include<stdio.h>
int main(void)
{
        int a,b,c,d,e;
        printf("请输入4个数:");
        scanf("%d,%d,%d,%d",&a,&b,&c,&d);
        printf("%d,%d,%d,%d\n",a,b,c,d);
        if(a>b)
        {
                e=b;
                b=a;
                a=e;
        }
        if(a>c)
        {
                e=c;
                c=a;
                a=e;
        }
        if(a>d)
        {
                e=d;
                d=a;
                a=e;
        }
        if(b>c)
        {
                e=c;
                c=b;
                b=e;
        }
        if(b>d)
        {
                e=d;
                d=b;
                b=e;
        }
        if(c>d)
        {
                e=d;
                d=c;
                c=e;
        }
        printf("从小到大排序为:\n");
        printf("%d,%d,%d,%d\n",a,b,c,d);
        return 0;
}

孤岛recwert 发表于 2021-2-16 11:53:11

直接冒泡排序不好吗?{:10_248:}
#include<stdio.h>
int main()
{
        int n, a, i, j, t;
        printf("请输入4个数:");
        for(i=0;i<4;i++)
        {
                scanf("%d",&a);
        }
        for(j=0;j<3;j++)
        {
                for(i=0;i<3-j;i++)
                        if(a>a)
                        {
                                t=a;
                                a=a;
                                a=t;
                        }
        }
       printf("从小到大排序为:\n");
        for(i=0;i<3;i++)
        {
                printf("%d,",a);
        }
        printf("%d\n",a);
        return 0;
}

jackz007 发表于 2021-2-16 11:56:48

本帖最后由 jackz007 于 2021-2-16 12:07 编辑

#include<stdio.h>
int main(void)
{
      int d , i , j , t                           ;
      printf("请输入4个数:")                        ;
      for(i = 0 ; i < 4 ; i ++) scanf("%d" , & d) ;
      printf("%d" , d)                            ;
      for(i = 1 ; i < 4 ; i ++) printf(",%d" , d) ;
      for(i = 0 ; i < 3 ; i ++) {
                for(j = i + 1 ; j < 4 ; j ++) {
                        if(d > d) {
                              t = d               ;
                              d = d            ;
                              d = t               ;
                        }
                }
      }
      printf("\n%d" , d)                        ;
      for(i = 1 ;i < 4; i ++) printf(",%d" , d)   ;
}

一叶枫残 发表于 2021-2-16 18:14:36

程序是没错的,我猜你的输入格式应该错了
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
输入格式要与scanf里面的%d,%d,%d,%d对齐,例如5,6,4,3
数字中间的逗号不能漏(还要注意是英文的逗号还是中文下的逗号,因为中文和英文下的逗号是不同的),否则输出会乱码

client_2233 发表于 2021-2-16 19:26:20

你的代码没有问题,这是我把你的复制下来的。你应该是楼上所说的,输入问题

张邦焱 发表于 2021-2-16 23:50:52

scanf_s("%d%d%d%d", &a, &b, &c, &d);改成这样就可以了

张邦焱 发表于 2021-2-16 23:51:53

scanf("%d%d%d%d", &a, &b, &c, &d);这样就行了

旺仔烧麦 发表于 2021-2-17 09:48:30

一叶枫残 发表于 2021-2-16 18:14
程序是没错的,我猜你的输入格式应该错了
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
输入格式要与scanf里面的%d ...

file:///C:/Users/lvreny/Desktop/QQ%E6%88%AA%E5%9B%BE20210217094647.png
谢谢你,但是我去掉逗号才运行成功了,所以有逗号到底有关系吗

一叶枫残 发表于 2021-2-17 16:12:13

旺仔烧麦 发表于 2021-2-17 09:48
谢谢你,但是我去掉逗号才运行成功了,所以有逗号到底有关系吗

都说输入格式要与scanf对齐,看了我那个解释还不懂自己去百度(很基本的东西)。。。

旺仔烧麦 发表于 2021-2-19 09:31:48

一叶枫残 发表于 2021-2-17 16:12
都说输入格式要与scanf对齐,看了我那个解释还不懂自己去百度(很基本的东西)。。。

我懂你的意思了,抱歉

旺仔烧麦 发表于 2021-2-19 09:32:17

client_2233 发表于 2021-2-16 19:26
你的代码没有问题,这是我把你的复制下来的。你应该是楼上所说的,输入问题

谢谢你,麻烦了,我懂了
页: [1]
查看完整版本: 【谭浩强课后习题】求输入的整数按从小到大排序