求助关于scanf函数问题
#include <stdio.h>int main()
{
float a,b;
printf("请输入华氏度;");
scanf("%d", &a);
b = (a - 32) * 5 / 9;
printf("转换为摄氏度是;%.2f", b);
return 0;
}
为什么这里的scanf("%d", &a);要改成scanf("%f", &a);不然输入很小的整数得到的答案都是-17.78 %d不是读取一个十进制整数吗为什么会这样
本帖最后由 sunrise085 于 2020-9-5 15:20 编辑
你定义的a是float类型的数据,为什么要读取一个int类型数据给a?
那是有问题的,最终a=0 sunrise085 发表于 2020-9-5 15:19
你定义的a是float类型的数据,为什么要读取一个int类型数据给a?
那是有问题的,最终a=0
#include <stdio.h>
int main()
{
int a;
float b;
printf("请输入华氏度;");
scanf("%d", &a);
b = (a - 32) * 5 / 9;
printf("转换为摄氏度是;%.2f", b);
return 0;
}
那我这样修改的话为什么我输入45 正常输出的应该是7.22 但是 现在输出的结果是7.00 我输入44 得到的结果为6.00 zhangjunxian 发表于 2020-9-5 15:34
那我这样修改的话为什么我输入45 正常输出的应该是7.22 但是 现在输出的结果是7.00 我输入44 得到的结 ...
int类型的数据进行加减乘数结果只能是int类型的数据
b = (a - 32) * 5 / 9;
这一行是先进行右边的运算得到一个int类型的数据,然后再强制类型转换为浮点数赋值给b sunrise085 发表于 2020-9-5 15:41
int类型的数据进行加减乘数结果只能是int类型的数据
b = (a - 32) * 5 / 9;
这一行是先进行右边的运算 ...
谢谢 sunrise085 发表于 2020-9-5 15:41
int类型的数据进行加减乘数结果只能是int类型的数据
b = (a - 32) * 5 / 9;
这一行是先进行右边的运算 ...
#include <stdio.h>
int main()
{
double a,b;
printf("请输入华氏度;");
scanf("%f", &a);
b = (a - 32) * 5 / 9;
printf("转换为摄氏度是;%.2f", b);
return 0;
}
那为什么我定义 a b 为double 类型 得到的结果和 int 是一样的 呢 还是得到 a = 0 zhangjunxian 发表于 2020-9-5 16:15
那为什么我定义 a b 为double 类型 得到的结果和 int 是一样的 呢 还是得到 a = 0
{:5_104:}{:5_104:}
你还是好好学习一下基础吧
搞清楚有哪些数据类型,什么数据类型的格式化字符是什么
double类型的格式化字符是%f吗? sunrise085 发表于 2020-9-5 16:35
你还是好好学习一下基础吧
搞清楚有哪些数据类型,什么数据类型的格式化字符是什么 ...
{:5_109:}嗯
页:
[1]