gpt4 book ai didi

C - 除法返回零

转载 作者:行者123 更新时间:2023-11-30 19:09:39 24 4
gpt4 key购买 nike

正在处理一个作业,其中用户输入一个 int,然后输入 1 得到平方,2 得到立方,3 得到除以 2。无法弄清楚为什么我的收缩函数总是返回零。

#include <stdio.h>
// Function prototypes
int Square(int value);
int Cube(int value);
double Shrink(int value);

int main ()
{
/* variable definition: */
int intValue, menuSelect,Results;
intValue = 1;
// While a positive number
while (intValue > 0)
{
printf ("Enter a positive Integer\n: ");
scanf("%d", &intValue);
if (intValue > 0)
{
printf ("Enter 1 to calculate Square, 2 to Calculate Cube, 3 to divide integer in half \n: ");
scanf("%d", &menuSelect);

if (menuSelect == 3)
{
// Call the shrink function

Results = Shrink(intValue);
printf("Half of %d is %lf\n",intValue,Results);
}
else
printf("Invalid menu item, only 1,2 or 3 is accepted\n");
}
}
return 0;
}

/* function returning half of a number */
double Shrink(int value)
{
return (double) value/2.0;
}

最佳答案

int intValue,menuSelect,结果;

因此 Results 被声明为 int

当您将其分配给函数结果时,它会被舍入/截断(可能不是您想要的,但只是问题的一部分)。

打印0.0的事实是因为您在printf中使用了%lf格式,它与不匹配int 数据类型,这里不执行任何转换,因为 printf 使用变量参数并信任调用者(但有些编译器会发出警告)。

快速修复:

double Results;

应该足够了。

关于C - 除法返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42891699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com