C师答案

时间:2016-07-03 01:07:09

标签: c division

我试图学习C但是我在操作给定代码时遇到了困难。用户在Squaring a number和Shrinking(除以2)之间选择。如果输入和输出保持整数,我可以获得函数Shrink以成功返回结果。但是,我需要输出作为float或double返回,我无法让它工作。我此刻难过。任何意见都将不胜感激。

Feralix

#include <stdio.h>
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 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 Shrink function
       Results = Shrink(intValue);
       printf("Shrink of %d is %f\n",intValue,Results);
     }
     else 
       printf("Invalid menu item, only 1 or 2 is accepted\n");
     }     
   }     
return 0;
}
/* function returning the Square of a number */
int Square(int value)
{
   return value*value;
} 
/* function returning the Shrink of a number */
float Shrink(int value)
{
   return value/2.0;
}

3 个答案:

答案 0 :(得分:0)

Results是一个int,因此当您指定Shrink返回的Shrink时,您将丢失由Results计算的任何小数位数。一种可能的解决方案是将float声明为NSLayoutContraints

答案 1 :(得分:0)

该函数确实返回一个浮点数, 您只需将结果变量声明为浮点而不是int ..

float Results;

答案 2 :(得分:0)

与其他人一样,结果被声明为整数类型。您必须更改结果类型。

还抬头:  您必须在(menuSelect == 1)中更改printf的结果格式说明符。  如果你选择一个负数,你的其他人也不会运行,所以用户不会知道他们不能选择负数。