无法获得正确的结果[关闭]

问题描述 投票:0回答:1

在本实验中,系统要求您声明两个整数类型的变量:userNum和x。用户应使用scanf语句存储输入内容。然后要求您将userNum的值除以x的三倍(三个不同的操作)。每次进行除法时,都将值分配给userNum,以覆盖先前的值并使用print语句将其打印出来。这样做三遍。在这种情况下,最后只有一个新行打印语句。

此实验是特定的,我只能声明int变量。

#include <stdio.h>

int main(void) {
int x;
int userNum;

scanf("%d %d" , &userNum, &x);
userNum = (double)userNum / x;
printf("%d " , userNum);
userNum = (double)userNum / x;
printf("%d " , userNum);
userNum = (double)userNum / (double)x;
printf("%lf\n" , (double)userNum);

return 0;
}"

我的输入是100 2

我的输出是50 25 12.000

c casting printf scanf
1个回答
0
投票

这里实际上没有什么错。当将强制转换值12.5分配给变量userNum(它是一个整数)时,它将隐式将其强制转换回一个整数,因此将小数部分截断,将12.5转换为12。

如果要输出其小数部分,则可以在上一次计算中执行以下操作:

printf("%lf\n" , (double)userNum / (double)x);

-

代替您当前的最后两行:

userNum = (double)userNum / (double)x;
printf("%lf\n" , (double)userNum);
© www.soinside.com 2019 - 2024. All rights reserved.