【问题标题】:How do you use a function twice for two different equations?如何对两个不同的方程使用两次函数?
【发布时间】:2018-03-23 02:04:38
【问题描述】:

无论如何,这是编码新手:

编写一个程序,使用函数将两个数字相乘并返回结果。在您的程序中,使用该函数将值 3 和 4 相乘,然后再次使用该函数将值 num1 和 num2 相乘,其中 num1 和 num2 由用户输入。将结果打印到屏幕上。

不太清楚如何使用相同的函数进行 2 次不同的计算。我可以做其他所有事情......

int multiply (int a, int b)
{
    int result;

    a = 3;
    b = 4;

    result = a * b;

    return result;
}

int main (void) {

    int n1,n2,three,four, sum, result;

    result = multiply(three,four);

    printf("result is = %d \n \n", result);

    printf("Please enter 2 int values: \n \n");
    scanf("%d %d", &n1, &n2);

    sum = multiply(three,four);

    three = n1;
    four = n2;

    printf("sum is = %d", sum);

    system("pause>nul");
    return 0;
}

【问题讨论】:

  • printf("sum is = %d", sum); 这表明您想使用相同的函数进行乘法和加法。这个假设正确吗?
  • 不,我正在使用该函数将两组不同的数字相乘两次。一组变量具有预先分配的值,而下一组变量具有用户分配的值。
  • 为什么将未初始化的变量传递给函数,然后立即用函数中的常量覆盖它们?您似乎没有正确理解基础知识。

标签: c


【解决方案1】:

您的函数需要做的就是将两个值相乘:

int multiply (int a, int b)
{
    return a * b;
}

使用函数进行两种不同计算的方式是传递不同的参数。

首先你用它乘以 3 乘以 4:

result = multiply(3, 4);

然后你用它来将用户输入的两个数字相乘:

printf("Please enter 2 int values: \n \n");
scanf("%d %d", &n1, &n2);

result = multiply(n1 ,n2);

【讨论】:

    【解决方案2】:

    我认为:

    int multiply (int a, int b)
    {
        return a * b;
    }
    

    您的代码具有相同的结果,因为您将值分配给函数中的变量。

    【讨论】:

    • 是的,这些值应该按照提问的方式在函数中分配,然后我应该能够为 n1 和 n2 获取用户输入并使用相同的函数进行乘法运算那些。
    【解决方案3】:

    将相同的功能用于 2 种不同的操作。叫它两次。第二次它需要从用户那里收到的值。第一次函数将使用内置参数。

    静态的int s 会记住你调用了你的函数。

    #include <stdlib.h>
    #include <stdio.h>
    
    int multiply (int a, int b)
    {
        static int s = 0;
    
        if(s==0)
        {
            a = 3;
            b = 4;
            s++;
            return a*b;
        }
        else
        {
           return ( a * b);
        }
    }
    
    int main (void) {
    
        int n1,n2,three=3,four=4, sum, result;
    
        result = multiply(three,four);
    
        printf("result is = %d \n", result);
    
        printf("Please enter 2 int values:\n");
        scanf("%d %d", &n1, &n2);
    
        sum = multiply(n1,n2);
    
        printf("result is = %d\n", sum);
    
        return 0;
    }
    

    输出:

    result is = 12                                                                                                                               
    Please enter 2 int values:                                                                                                                   
    4 4                                                                                                                                          
    result is = 16
    

    【讨论】:

    • 不,这是错误的,我没有添加。除了分配了现有值的变量之外,我再次乘以两个不同的数字。该函数将 2 个数字相乘:3 和 4 并返回结果。然后它说我应该使用相同的函数来将 n1 和 n2 相乘,这是用户输入的给定值。
    • @HibinoHareluya 以上是你需要的吗?
    • 不完全是。我可以做你写的那个,但它告诉我已经在函数中做 3 和 4 的乘法。所以 a = 3 和 b = 4 已经在该函数中并返回结果。然后我需要稍后用 n1 和 n2 再做一次乘法。
    • @HibinoHareluya 好吧,你必须对静态变量使用技巧,它会记住你是否已经调用过。
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2021-08-04
    • 2015-02-20
    • 2017-08-03
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多