【发布时间】:2021-12-15 22:50:21
【问题描述】:
我写了一个使用函数的简单计算器。
#include<stdio.h>
void operation_menu();
int getNumber(int,int);
int sum(int,int);
int diff(int,int);
int mult(int,int);
double quot(double,int);
int choice,num1,num2;
int main(){
getNumber(num1,num2);
operation_menu();
return 0;
}
int getNumber(int num1,int num2){
printf("Welcome to Simple Calculator!\n");
printf("Please input a number to begin:\n");
scanf("%d", &num1);
printf("Great! Now input the second number:\n");
scanf("%d", &num2);
}
void operation_menu(){
printf("Select an operation: \n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
scanf("%d", &choice);
switch(choice){
case 1:
printf("The sum of %d and %d is %d.", num1,num2,sum(num1, num2));
break;
case 2:
printf("The difference of %d and %d is %d.", num1,num2,diff(num1, num2));
break;
case 3:
printf("The product of %d and %d is %d.", num1,num2,mult(num1, num2));
break;
case 4:
printf("The quotient of %d and %d is %.2lf.", num1,num2,quot(num1, num2));
break;
default:
printf("Please try again.");
}
}
int sum(int num1,int num2){
int answer;
answer=num1+num2;
return answer;
}
int diff(int num1,int num2){
int answer;
answer=num1-num2;
return answer;
}
int mult(int num1,int num2){
int answer;
answer=num1*num2;
return answer;
}
double quot(double num1,int num2){
double answer;
answer=num1/num2;
return answer;
}
程序正常运行,没有将我的 main() 分解为几个较小的函数,但是在为每个操作、输入和菜单创建函数后,我收到了错误的输出。我通过在使用 scanf 后打印 num1 和 num2 来解决这个问题,果然,我得到了错误的输出。
【问题讨论】:
-
不要像那样不必要地使用全局变量。这是不好的做法,会让你感到困惑。
operation_menu正在使用全局num1和num2而getNumber正在扫描同名的局部变量。 -
感谢您的澄清!你一提到它我就注意到了。我已经完成了程序,它正在按预期运行。下次我会尽量不要在全局范围内鲁莽地声明变量。非常感谢!
标签: c integer output printf scanf