在C中调用main中的函数

时间:2015-11-24 23:05:25

标签: c function

我有一个关于从main调用C函数的问题,我想我有这个问题,因为我仍然不习惯程序语言,但我根本无法解决这个问题。错误是“未声明的数字(首次使用此功能)“和”number2未声明(首次使用此功能)“。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

 int add(int number,int number2){
  int answer;
  answer = number + number2;

  printf("Enter a number\n");
  scanf("%d",&number);

  printf("Enter another number\n");
  scanf("%d",&number2);

   printf("The result of those numbers are %d\n",answer);
}



int main()
{
    add(number,number2);

    return 0;
}

6 个答案:

答案 0 :(得分:2)

更改主函数以在那里声明变量,如下所示:

int main() 
{
    int number = 1, number2 = 2;
    add(number,number2);

    return 0;
}

答案 1 :(得分:0)

C要求你&#34;声明&#34;每个变量在使用之前。这涉及一个至少指定变量名称及其类型的语句。例如:

int number;

您的编译器抱怨您没有对numbernumber1执行此操作。

此外,为了定义程序的行为,必须在使用它之前为每个变量赋值。例如,

number = 1;

你也不这样做,但是如果你不纠正它,编译器可能会警告你,它也很乐意做你说的并制作一个程序表现出不明确的行为。

答案 2 :(得分:0)

此代码确实不正确

int add(int number,int number2){
  int answer;
  answer = number + number2;

  printf("Enter a number\n");
  scanf("%d",&number);

  printf("Enter another number\n");
  scanf("%d",&number2);

   printf("The result of those numbers are %d\n",answer);
}

它接受两个数字作为函数的输入。添加它们,然后要求用户2输入一些数字并显示添加函数调用中传递的数字的结果

你的意思是:

int add(){
  int answer, number,numer2;

  printf("Enter a number\n");
  scanf("%d",&number);

  printf("Enter another number\n");
  scanf("%d",&number2);

   printf("The result of those numbers are %d\n",answer);
}

int add(int number,int number2){
  int answer;
  answer = number + number2;



   printf("The result of those numbers are %d\n",answer);
}

并将提示放在主

main()
{
int number,number2;
  printf("Enter a number\n");
  scanf("%d",&number);

  printf("Enter another number\n");
  scanf("%d",&number2);
  add(number,number2)
}

答案 3 :(得分:0)

你不需要conio.h

#include <stdio.h>
#include <stdlib.h>
//#include <conio.h>

int add(int number,int number2) {
    return number + number2;
}

int main()
{
    int answer;
    int number, number2 = 0;

    printf("Enter a number\n");
    scanf("%d",&number);

    printf("Enter another number\n");
    scanf("%d",&number2);

    answer = add(number,number2);

    printf("The result of those numbers are %d\n",answer);

    return 0;
}

答案 4 :(得分:0)

第1部分:在使用它们之前需要声明变量。

在您的主要内容中执行此操作var securedRoutes = require('express').Router() securedRoutes.use(/* auth-middleware from above */) securedRoutes.get('path1', /* ... */) app.use('/secure', securedRoutes) app.get('public', /* ... */) // example.com/public // no-auth // example.com/secure/path1 // requires auth 但主要知道您的变量是什么?你需要声明它们:

add(number,number2);

第2部分:简化您的功能

您希望函数添加2个数字,这就是函数应该执行的操作:

int number, number2;

第3部分:让我们取一些用户输入并添加它们

您不应该使用您的用户输入添加功能,或者创建一个新功能,如:

int add(int number1, int number2) {
    return number1 + number 2;
}

或者只是将它们放在main中:

int getNumberFromUser(const char *promptText) {
    int userInput;
    printf("%s:", promptText);
    scanf("%d", &userInput);
    return userInput;
 }

Here is a live example.

答案 5 :(得分:0)

您的代码中存在一些误解。

首先,int add() { int answer, number, number2; ... 的参数不用作参数。它们用作局部变量。相反,写明功能明确指出:

answer

其次, printf("Enter a number\n"); scanf("%d", &number); printf("Enter another number\n"); scanf("%d", &number2); answer = number + number2; printf("The result of those numbers are %d\n",answer); 是根据参数计算的,而不是从读取的值计算出来的。虽然这在计算上是有效的,但却令人困惑。你想要这个逻辑真正做什么?在这里,我已经将 answer 计算移到读取输入之后:

add()

这会忽略最初传递给>>> np.repeat([np.arange(1, 4)], 4, 0) array([[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]) 的参数。