gpt4 book ai didi

c - C 中 float 的计算

转载 作者:行者123 更新时间:2023-11-30 20:54:42 25 4
gpt4 key购买 nike

所以我调整了代码,它似乎可以消除一个缺陷。收缩现在是一个 float ,但没有返回正确的答案。例如,当我尝试缩小 9 时,它返回 4.0 而不是 4.5…… 13 返回 6.0?新代码如下:

包括

int main()

{

/* 变量定义:*/

int intValue,menuSelect,结果; 浮点结果;

int值 = 1;

//虽然是正数

同时(intValue > 0)

{

 printf ("Enter a positive Integer\n: ");

scanf("%d", &intValue);

如果(intValue > 0)

{

 printf ("Enter 1 to calculate Square, 2 to Calculate Cube, Enter 3 to Calculate Shrink \n: ");

scanf("%d", &menuSelect);

if (menuSelect == 1)

{

// Call the Square Function

Results = Square(intValue);

printf("Square of %d is %d\n",intValue,Results);

}

else if (menuSelect == 2)

{

// Call the Cube function

Results = Cube(intValue);

printf("Cube of %d is %d\n",intValue,Results);

}

else if (menuSelect == 3)

{

sResults = Shrink(intValue);

printf("shrink of %d is %f\n", intValue,sResults);

}


else

printf("Invalid menu item, only 1 or 2 or 3 is accepted\n");

}

}

返回0;

}

/* 返回数字平方的函数 */

int Square(int值)

{

返回值*值;

}

/* 返回数字立方的函数 */

int Cube(int值)

{ 返回值值;

}

int 收缩(int 值)

{

return value*1/2;

}

最佳答案

Results = Shrink(intValue);

printf("shrink of %d is %f\n", intValue,sResults);

您将结果存储在 Results 中,然后打印 sResults。这是两个不同的变量,sResults 仍然为零,因为尚未为其分配值。在 printf 语句中将 sResults 更改为 Results

但是,由于您正在进行整数除法,因此您将得到被截断为整数的结果:Shrink(5) 将返回 2。要解决此问题,您需要进行更改Shrink 采用 float 参数而不是 int,返回 float 而不是 int ,并将其结果分配给 sResult 而不是 Result

<小时/>

此外,您可能会收到有关未声明 SquareCubeShrink 函数的编译器警告。发生这种情况是因为调用函数的代码位于说明函数含义的代码之前。它还没有给您带来实际问题,因为编译器通过假设每个函数采用 int 参数并返回 int 来处理这种情况。 code> result,这恰好是 true。但是,如果您将任何函数更改为在 float 上操作而不是在 int 上操作,您的程序将会中断,因为调用仍将被编译为 int.

将三个数学函数移至 main 上方,将它们保留在底部并将这些行放在 main 之前:

int Square(int value);
int Cube(int value);
int Shrink(int value);

这些称为声明,它们告诉编译器函数操作的类型,因此编译器甚至在看到函数的实现之前就知道如何处理它们。如果您将函数更改为在 float 上运行而不是在 int 上运行,请更改声明以匹配。

关于c - C 中 float 的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162356/

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