我正在使用此代码来计算输入的平方和立方体,我添加了第三个选项来计算值除以2,所以我不得不将结果从int更改为double,但是我不要以为我做得对。这是我到目前为止所做的:
#include <stdio.h>
// Function prototypes int Square(int value); int Cube(int value);
int main ()
{
/* variable definition: */
int intValue, menuSelect,Results;
double doubleValue, Resultsb;
intValue = 1;
doubleValue = intValue;
// While a positive number
while (intValue > 0) {
printf ("Enter a positive Integer\n: ");
scanf("%d", &intValue);
doubleValue=intValue;
if (intValue > 0) {
printf ("Enter 1 to calculate Square, 2 to Calculate Cube, 3 to Shrink
value in half \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) {
Resultsb = Shrink(doubleValue);
printf("%f shrunk in half is %f\n", doubleValue,Resultsb);
}
else
printf("Invalid menu item, only 1, 2 or 3 is accepted\n");
}
}
return 0;
}
/* function returning the Square of a number */
int Square(int value)
{
return value*value;
}
/* function returning the Cube of a number */
int Cube(int value)
{ return value*value*value;
}
double Shrink(double value)
{ return value/2;
}
如果有人能告诉我我做错了什么会太棒了,谢谢!
答案 0 :(得分:2)
在调用之前,您需要该函数的原型。否则,默认返回类型为int
。所以说:
int Square(int value);
int Cube(int value);
double Shrink(double value);
在main()
之前,或将函数定义移到顶部。
您也不需要doubleValue
变量。将intValue
传递给函数会根据原型自动转换它。
这是工作计划。
#include <stdio.h>
// Function prototypes
int Square(int value);
int Cube(int value);
double Shrink(double value);
int main ()
{
/* variable definition: */
int intValue, menuSelect,Results;
double Resultsb;
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 Shrink value in half \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) {
Resultsb = Shrink(intValue);
printf("%d shrunk in half is %f\n", intValue,Resultsb);
}
else
printf("Invalid menu item, only 1, 2 or 3 is accepted\n");
}
}
return 0;
}
/* function returning the Square of a number */
int Square(int value)
{
return value*value;
}
/* function returning the Cube of a number */
int Cube(int value)
{ return value*value*value;
}
double Shrink(double value)
{ return value/2;
}
答案 1 :(得分:0)
发布后,您的程序无法编译,因为您省略了Shrink()
的原型。
编译行Resultsb = Shrink(doubleValue);
时,编译器会推断Shrink
接受double
参数并返回int
(是的,它会这样做!)
当它后来达到Shrink()
的定义时,实际定义与之前的推断原型不兼容。
您应该在main()
函数之前移动函数,或者至少为它们提供适当的原型。
在现代C(C99及更高版本)中,您必须定义所有功能或为其提供原型,然后再调用。上述行为适用于旧式C,许多编译器仍然支持它。