鱼C论坛

 找回密码
 立即注册
查看: 2564|回复: 4

[已解决]怎么才能即可以输入整数,又可以输入小数,我写的代码只有一半正确率

[复制链接]
发表于 2023-10-28 17:12:32 | 显示全部楼层 |阅读模式

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

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

x
题目是输入3个实数a,b,c
,通过交换,将最小的数放到a
,次小的数放到b
,最大的数放到c
后,按由小到大的顺序输出。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a, b, c, temp;
  5.     scanf("%d%d%d",&a,&b,&c);
  6.     if (a > b)
  7.     {
  8.         temp = a;
  9.         a = b;
  10.         b = temp;
  11.     }
  12.     if (a > c)
  13.     {
  14.         temp = a;
  15.         a = c;
  16.         c = temp;
  17.     }
  18.     if (b > c)
  19.     {
  20.         temp = b;
  21.         b = c;
  22.         c = temp;
  23.     }
  24.     printf("%d ", a);
  25.     printf("%d ", b);
  26.     printf("%d", c);
  27.     return 0;
  28. }
复制代码
最佳答案
2023-10-28 17:13:22
你的代码中使用的是整数类型(int),所以只能输入整数。如果你想输入小数,你应该使用浮点类型(float)或者双精度浮点类型(double)。下面是修改后的代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     double a, b, c, temp;
  5.     scanf("%lf%lf%lf",&a,&b,&c);
  6.     if (a > b)
  7.     {
  8.         temp = a;
  9.         a = b;
  10.         b = temp;
  11.     }
  12.     if (a > c)
  13.     {
  14.         temp = a;
  15.         a = c;
  16.         c = temp;
  17.     }
  18.     if (b > c)
  19.     {
  20.         temp = b;
  21.         b = c;
  22.         c = temp;
  23.     }
  24.     printf("%.2lf ", a);
  25.     printf("%.2lf ", b);
  26.     printf("%.2lf", c);
  27.     return 0;
  28. }
复制代码

在这个修改后的代码中,我使用了double类型来代替int类型,这样就可以输入小数了。同时,我也修改了scanfprintf中的格式说明符,使其可以正确地读取和输出小数。在printf中,%.2lf表示输出的小数将保留两位小数。

注意:在C语言中,%lf用于读取double类型的数据,%f用于读取float类型的数据。在printf函数中,%f%lf都可以用于输出double类型的数据。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-28 17:12:39 | 显示全部楼层
问题出在你的代码中只能输入整数,无法输入小数。要实现既能输入整数又能输入小数,你需要修改scanf函数的格式字符串。

scanf函数的格式字符串"%d"表示读取一个整数,而"%f"表示读取一个浮点数(包括小数)。所以你需要将"%d"替换为"%f",以便可以输入小数。

修改后的代码如下:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     float a, b, c, temp;
  5.     scanf("%f%f%f",&a,&b,&c);
  6.     if (a > b)
  7.     {
  8.         temp = a;
  9.         a = b;
  10.         b = temp;
  11.     }
  12.     if (a > c)
  13.     {
  14.         temp = a;
  15.         a = c;
  16.         c = temp;
  17.     }
  18.     if (b > c)
  19.     {
  20.         temp = b;
  21.         b = c;
  22.         c = temp;
  23.     }
  24.     printf("%f ", a);
  25.     printf("%f ", b);
  26.     printf("%f", c);
  27.     return 0;
  28. }
复制代码


这样修改后,你就可以输入整数和小数,并且按照由小到大的顺序输出了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-10-28 17:13:22 | 显示全部楼层    本楼为最佳答案   
你的代码中使用的是整数类型(int),所以只能输入整数。如果你想输入小数,你应该使用浮点类型(float)或者双精度浮点类型(double)。下面是修改后的代码:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     double a, b, c, temp;
  5.     scanf("%lf%lf%lf",&a,&b,&c);
  6.     if (a > b)
  7.     {
  8.         temp = a;
  9.         a = b;
  10.         b = temp;
  11.     }
  12.     if (a > c)
  13.     {
  14.         temp = a;
  15.         a = c;
  16.         c = temp;
  17.     }
  18.     if (b > c)
  19.     {
  20.         temp = b;
  21.         b = c;
  22.         c = temp;
  23.     }
  24.     printf("%.2lf ", a);
  25.     printf("%.2lf ", b);
  26.     printf("%.2lf", c);
  27.     return 0;
  28. }
复制代码

在这个修改后的代码中,我使用了double类型来代替int类型,这样就可以输入小数了。同时,我也修改了scanfprintf中的格式说明符,使其可以正确地读取和输出小数。在printf中,%.2lf表示输出的小数将保留两位小数。

注意:在C语言中,%lf用于读取double类型的数据,%f用于读取float类型的数据。在printf函数中,%f%lf都可以用于输出double类型的数据。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-28 17:15:02 | 显示全部楼层
isdkz 发表于 2023-10-28 17:12
问题出在你的代码中只能输入整数,无法输入小数。要实现既能输入整数又能输入小数,你需要修改scanf函数的 ...

不对,当输入整数时,输出也要为整数,输入实数时,只能保留一位小数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-28 17:16:36 | 显示全部楼层
陶远航 发表于 2023-10-28 17:13
你的代码中使用的是整数类型(int),所以只能输入整数。如果你想输入小数,你应该使用浮点类型(float)或 ...

不行,输入整数时,输出有小数点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 06:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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