鱼C论坛

 找回密码
 立即注册
查看: 1020|回复: 2

为什么代码错误啊

[复制链接]
发表于 2023-10-7 16:06:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是
输入3个实数a,b,c
,通过交换,将最小的数放到a
,次小的数放到b
,最大的数放到c
后,按由小到大的顺序输出。

输入描述
标准输入,三个无序的实数,以空格间隔。

输出描述
标准输出,输出三个由小到大排好序的实数,以空格间隔。

样例
输入 复制
3 2 1
输出 复制
1 2 3
#include<stdio.h>
int main()
{
    char a,b,c,t;
    scanf("%c%c%c",&a,&b,&c);
    if(a<b){t=a;a=b;b=t;}
    if(a<c){t=a;a=c;c=t;}
    if(b<c){t=b;b=c;c=t;}
    printf("%c %c %c",c,b,a);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-7 16:06:27 | 显示全部楼层
你的代码有几个错误和潜在的问题。首先,在输入部分,应该使用 %lf 而不是 %c 来读取实数。其次,在输出部分,应该使用 %lf 而不是 %c 来打印实数。

另外,你可以直接比较三个实数的大小,然后进行相应的交换,而无需使用字符类型变量来进行交换。

以下是修正后的代码:
#include <stdio.h>int main() {    double a, b, c, temp;    scanf("%lf %lf %lf", &a, &b, &c);    if (a > b) {        temp = a;        a = b;        b = temp;    }    if (a > c) {        temp = a;        a = c;        c = temp;    }    if (b > c) {        temp = b;        b = c;        c = temp;    }    printf("%.2lf %.2lf %.2lf\n", a, b, c);    return 0;}
在这个修正后的代码中,我们使用 %.2lf 来控制输出实数的小数位数为两位。你可以根据需要进行调整。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-7 16:06:47 | 显示全部楼层
代码错误的原因是使用了错误的数据类型和格式化符号。在输入和输出部分,应该使用浮点数的数据类型和格式化符号。

以下是修改后的代码:
#include <stdio.h>

int main()
{
    float a, b, c;
    scanf("%f %f %f", &a, &b, &c);

    if (a > b)
    {
        float temp = a;
        a = b;
        b = temp;
    }
    if (a > c)
    {
        float temp = a;
        a = c;
        c = temp;
    }
    if (b > c)
    {
        float temp = b;
        b = c;
        c = temp;
    }

    printf("%.2f %.2f %.2f", a, b, c);

    return 0;
}

修改后的代码将输入和输出的数据类型改为float,并使用%f作为格式化符号来读取和打印浮点数。同时,还修改了交换数值的逻辑,确保最小的数放在a,次小的数放在b,最大的数放在c。

这样修改后的代码就可以正确地按由小到大的顺序输出三个实数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 23:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表