鱼C论坛

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

为什么代码错误啊

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

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

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

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

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

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

样例
输入 复制
3 2 1
输出 复制
1 2 3
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     char a,b,c,t;
  5.     scanf("%c%c%c",&a,&b,&c);
  6.     if(a<b){t=a;a=b;b=t;}
  7.     if(a<c){t=a;a=c;c=t;}
  8.     if(b<c){t=b;b=c;c=t;}
  9.     printf("%c %c %c",c,b,a);
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

以下是修正后的代码:
  1. #include <stdio.h>
  2. int main() {
  3.     double a, b, c, temp;
  4.     scanf("%lf %lf %lf", &a, &b, &c);
  5.     if (a > b) {
  6.         temp = a;
  7.         a = b;
  8.         b = temp;
  9.     }
  10.     if (a > c) {
  11.         temp = a;
  12.         a = c;
  13.         c = temp;
  14.     }
  15.     if (b > c) {
  16.         temp = b;
  17.         b = c;
  18.         c = temp;
  19.     }
  20.     printf("%.2lf %.2lf %.2lf\n", a, b, c);
  21.     return 0;
  22. }
复制代码

在这个修正后的代码中,我们使用 %.2lf 来控制输出实数的小数位数为两位。你可以根据需要进行调整。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

以下是修改后的代码:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     float a, b, c;
  5.     scanf("%f %f %f", &a, &b, &c);

  6.     if (a > b)
  7.     {
  8.         float temp = a;
  9.         a = b;
  10.         b = temp;
  11.     }
  12.     if (a > c)
  13.     {
  14.         float temp = a;
  15.         a = c;
  16.         c = temp;
  17.     }
  18.     if (b > c)
  19.     {
  20.         float temp = b;
  21.         b = c;
  22.         c = temp;
  23.     }

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

  25.     return 0;
  26. }
复制代码


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

这样修改后的代码就可以正确地按由小到大的顺序输出三个实数了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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