2401_83259626 2024-03-23 14:19 采纳率: 0%
浏览 3

数字的大小排序,有问题

img


求问为什么输入值不显示?(显示结果为0)
求这个代码还有简单的方法写吗?

  • 写回答

5条回答 默认 最新

  • Kwan的解忧杂货铺 2024-03-23 14:19
    关注

    2401_83259626 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    这段代码存在几个问题:

    1. 在第3行,变量的类型应该是整型int,而不是float。应该修改为:int a, b, c, t;

    2. 在第4行,输出语句末尾的分号应该去掉。应该修改为:printf("请输入3个数:");

    3. 在第5行,使用scanf函数读取输入时,输入的格式应该与变量的类型相匹配。由于变量类型是整型int,应该使用"%d"作为格式化字符串。应该修改为:scanf("%d, %d, %d", &a, &b, &c);

    4. 在第17行,输出语句中的格式化字符串应该使用"%d"代替"%f",因为变量的类型是整型int,而不是浮点型float。应该修改为:printf("%d %d %d\n", a, b, c);

    另外,这段代码用了一个冒泡排序的方法来对3个数进行从大到小的排序。虽然这种方法是一种常见的排序算法,但对于只有3个数的情况来说,可以使用更简单直接的方法。

    解决方案:

    1. 在输入3个数后,可以直接通过比较大小将它们排列。即判断a、b、c之间的大小关系,将最大的数放在a的位置,最小的数放在c的位置,中间的数放在b的位置。

    2. 另一种简单的方法是使用数组存储这3个数,然后使用sort函数对数组进行排序。

    下面是修改后的代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        int a, b, c, temp;
        printf("请输入3个数:");
        scanf("%d, %d, %d", &a, &b, &c);
    
        // 方法1:比较大小交换位置
        if (b > a) {
            temp = a;
            a = b;
            b = temp;
        }
        if (c > a) {
            temp = a;
            a = c;
            c = temp;
        }
        if (c > b) {
            temp = b;
            b = c;
            c = temp;
        }
        printf("3个数由大到小的排序为:%d %d %d\n", a, b, c);
    
        // 方法2:使用数组和sort函数排序
        int arr[3] = {a, b, c};
        qsort(arr, 3, sizeof(int), compare);
        printf("3个数由大到小的排序为:%d %d %d\n", arr[2], arr[1], arr[0]);
    
        return 0;
    }
    

    注意:在使用第二种方法时,需要添加一个compare函数用于比较两个数的大小。可以将其放在代码的末尾,如下所示:

    int compare(const void* a, const void* b) {
        return (*(int*)b - *(int*)a);
    }
    

    这样就可以通过对数组进行排序实现从大到小的排列输出。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日

悬赏问题

  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了