如何复用同一函数完成两次不同的乘法计算?(附C语言代码问题)
解决你的两数相乘函数调用问题
嘿,刚接触编程踩点小坑太正常了,咱们一步步捋清楚问题出在哪,再给你改好代码!先看看你当前代码里的几个核心问题:
- 你的
multiply函数完全废掉了参数的作用:你在函数里直接把a和b硬编码成3和4,这就意味着不管你调用时传什么值,函数只会返回12,完全失去了“复用函数计算任意两数乘积”的意义。函数的核心就是接收外部传入的数据来计算,所以这两行硬编码必须删掉。 - 调用函数的逻辑顺序错了:第一次调用
multiply(three,four)时,three和four都没初始化,是随机值(虽然因为函数硬编码结果碰巧对了,但逻辑完全错误);第二次计算用户输入的数时,你先调用了函数再给变量赋值,这时候得到的还是旧结果,而且也没把用户输入的n1、n2传给函数。
修正后的完整代码
#include <stdio.h> #include <stdlib.h> // 用到system函数需要包含这个头文件 // 正确的乘法函数:接收两个int参数,返回它们的乘积 int multiply(int a, int b) { // 直接使用传入的参数计算,不再硬编码 return a * b; } int main(void) { // 第一次计算:直接传入3和4给multiply函数 int result = multiply(3, 4); printf("3和4的乘积是:%d\n\n", result); // 接收用户输入的两个数 int n1, n2; printf("请输入两个整数:\n"); scanf("%d %d", &n1, &n2); // 第二次计算:把用户输入的n1和n2传给multiply函数 int product = multiply(n1, n2); // 这里把sum改成product更贴合“乘积”的含义,可读性更高 printf("你输入的两个数的乘积是:%d\n", product); system("pause>nul"); return 0; }
关键改进点说明
- 函数真正实现了复用:现在
multiply函数可以接收任意两个整数,返回它们的乘积——不管你传3和4,还是用户输入的数,甚至其他数值,都能正确计算。 - 参数传递逻辑完全正确:第一次调用直接传字面量3和4,简单直接;第二次调用把用户输入的
n1和n2作为参数传入,确保函数计算的是用户想要的数值。 - 代码可读性提升:把原来的
sum改成product(乘积),变量名更贴合实际含义,后期看代码也能一眼明白它的作用。
内容的提问来源于stack exchange,提问作者Hibino Hareluya
相关产品推荐
相关产品推荐

