【问题标题】:Multipying two numbers using a function in C使用C中的函数将两个数字相乘
【发布时间】:2017-05-11 23:48:05
【问题描述】:

这是我的程序,我遇到了我不理解的语法错误。 这是我的主要接受我的功能数据:

int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", & num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}

int multiNumbers(int num1, int num2) {
    int sum;
    sum = num1 * num2;
    return sum;
}

以下是编译错误:

In function 'int main()':
[Error] 'printf' was not declared in this scope
[Error] 'scanf' was not declared in this scope
[Error] 'multiNumbers' was not declared in this scope

【问题讨论】:

  • 这是你的整个源代码文件吗? “multiNumbers”在哪里?
  • 我把我的函数放在下面.. 那不是语法行
  • 您应该按照How to create a Minimal, Complete, and Verifiable example 中的说明发布整个代码——不过,现在看起来很明显
  • 旁注 - 如果你想得到正确的乘法结果,你应该将 multiNumbers 中的所有类型更改为 float 而不是 int..
  • @SGH,不错的选择,但接下来就选择double(以获得正确结果的更好机会)。 float 可能是大多数平台上 C 语言中最荒谬的数据类型。

标签: c function multiplication


【解决方案1】:

[错误] 'printf' 未在此范围内声明

[错误] 'scanf' 未在此范围内声明

在您的代码中添加 stdio 库

#include <stdio.h>

[错误] 'multiNumbers' 未在此范围内声明

在主函数前添加声明

 int multiNumbers(int num1, int num2);

代码片段:

#include <stdio.h>
int multiNumbers(int num1, int num2);
int main() //main program
{
    float num1, num2, total; 
    printf("Enter first number:  ");
    scanf("%f", &num1);
    printf("Enter Second number:  ");
    scanf("%f", & num2);
    total = multiNumbers(num1, num2);
    printf("sum is %2.f", total);   
    return 0;
}
int multiNumbers(int num1, int num2) {
    int sum;
    sum = num1 * num2;
    return sum;
}

【讨论】:

    【解决方案2】:

    [错误] 'printf' 未在此范围内声明
    [错误] 'scanf' 未在此范围内声明

    printfscanfstdio.h中声明,所以你需要先包含这个文件:

    #include <stdio.h>
    

    [错误] 'multiNumbers' 未在此范围内声明

    如果这个函数没有在你的主函数之上声明或定义,你必须至少在主函数之上添加一个这样的声明:

    int multiNumbers(int num1, int num2);
    

    (就这一行)

    【讨论】:

      【解决方案3】:

      你必须先

      #include <stdio.h>
      

      你还必须把函数原型放在main()之前。

      #include <stdio.h> // You forgot this
      
      int multiNumbers(int num1, int num2); // This is the function's prototype
      
      int main() //main program
      {
          float num1, num2, total; 
          printf("Enter first number:  ");
          scanf("%f", &num1);
          printf("Enter Second number:  ");
          scanf("%f", &num2);
          total = multiNumbers(num1, num2);
          printf("sum is %2.f", total);   
          return 0;
      }
      
      int multiNumbers(int num1, int num2) {
          int sum;
          sum = num1 * num2;
          return sum;
      }
      

      【讨论】:

        【解决方案4】:

        您至少必须在调用该函数之前声明它。函数定义也用作声明,所以最简单的做法是将multiNumbers 的主体移到main 之前。

        编辑

        int multiNumbers(int num1, int num2) {
          int sum;
          sum = num1 * num2;
          return sum;
        }
        
        int main() //main program
        {
            float num1, num2, total; 
            printf("Enter first number:  ");
            scanf("%f", &num1);
            printf("Enter Second number:  ");
            scanf("%f", & num2);
            total = multiNumbers(num1, num2);
            printf("sum is %2.f", total);   
            return 0;
        }
        

        编译器抱怨的一个问题——你的类型不匹配。您已声明 multiNumbers 接受 int 参数并返回 int 值,但您正在传递 float 值并将结果分配给 float

        那是行不通的。

        如果您打算将multiNumbersfloat 值一起使用,那么您需要将num1num2sum 的类型更改为float(尽管老实说,我建议使用double 而不是 float)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-18
          • 2010-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-10
          • 1970-01-01
          • 2019-10-10
          相关资源
          最近更新 更多