2

我对此程序的输出有疑问。它没有正确接收输入。我相信这可能与我的用户定义函数有关,它充当 scanf

#include <stdio.h>
#include <math.h>
#define PI 3.14


int GetNum(void)
{
    return scanf("%d");
}

int CalculateAreaR(int length, int width)
{   
    return length*width;
}

double CalculateAreaC(int radius)
{
    return PI*radius*radius;
}

int main(void)
{
    int length;
    int width;
    int radius;
    int areaR;
    double areaC;

    printf( " Please enter the length of a rectangle  \n");
    length = GetNum();
    printf(" Please enter the width of a rectangle \n"); 
    width = GetNum();
    printf(" Please enter the radius of a circle \n");
    radius = GetNum();

    areaR = CalculateAreaR(length, width);

    printf("\nThe area of the rectangle is %d\n", areaR);

    printf("\nThe length is %d, the width is, %d and thus the area of the rectangle is %d\n\n", length, width, areaR);

    areaC = CalculateAreaC(radius);

    printf("\nThe area of the circle is %.3f\n", areaC);

    printf("\n\n The radius of the circle is %d and the area of the circle is %.3f\n\n", radius, areaC);

    return 0;
}
4

3 回答 3

8

您可以尝试像这样修改您的程序

int GetNum(void)
{ 
   int num;
   scanf("%d", &num);

   return num;

}

于 2013-02-09T03:16:08.517 回答
2

scanf("%d");需要一个额外的参数。您需要给它一个您希望存储数字的变量的地址。例如scanf("%d",&length);

于 2013-02-09T03:16:32.413 回答
2

主要问题是您的 GetNum 函数根本不返回任何值:

int GetNum(void)
{
  scanf("%d");
}

此外,在您致电 scanf 时,您忘记提供存储位置来存储扫描的号码(如果有)。

将其更改为:

int GetNum (void) {
  int i;
  scanf ("%d", &i);
return i;
}

应该或多或少地解决你的问题。要检查扫描是否成功,您可能还需要检查 scanf 的返回值 - 它应该返回成功解析的项目数(在您的情况下为 1)。

顺便说一句:使用正确的编译器切换像您这样的错误应该更容易发现。

如果您使用 gcc,开关 -Wall 会给您警告: main.c:12: warning: control reach end of non-void function

于 2013-02-09T03:33:42.237 回答