【发布时间】:2018-11-05 08:31:57
【问题描述】:
这是我的简单计算器的代码:
#include <stdio.h>
int main(void)
{
int n1, n2;
char op;
do {
printf("Enter which operation you want to do(+, -, *, /) \n"); op = getch();
} while(op!='+' && op!='-' && op!='*' && op!='/');
printf("\n");
switch(op) {
case '+':
printf("You chose to do addition.\n\n");
printf("Number 1: "); scanf("%i", &n1);
printf("Number 2: "); scanf("%i", &n2); printf("\n");
printf("%i + %i = %i\n", n1, n2, n1+n2);
break;
case '-':
printf("You chose to do subtraction.\n\n");
printf("Number 1: "); scanf("%i", &n1);
printf("Number 2: "); scanf("%i", &n2); printf("\n");
printf("%i - %i = %i\n", n1, n2, n1-n2);
break;
case '*':
printf("You chose to do multiplication.\n\n");
printf("Number 1: "); scanf("%i", &n1);
printf("Number 2: "); scanf("%i", &n2); printf("\n");
printf("%i * %i = %i\n", n1, n2, n1*n2);
break;
case '/':
printf("You chose to do division.\n\n");
float dn1, dn2;
printf("Number 1: "); scanf("%f", &dn1);
printf("Number 2: "); scanf("%f", &dn2); printf("\n");
printf("%f / %f = %f\n", dn1, dn2, dn1/dn2);
break;
}
}
如您所见,程序接受用户的输入并据此进行一些计算。它工作得很好,正如我所料,但我只从用户那里获取两个数字。我想让用户能够输入他/她想要的次数。
我想过这样的事情,但对我来说似乎很愚蠢。
for(int i=1; i<10; i++) {
printf("Enter number %i: ", i); scanf("%i", &{i}n);
}
我尝试使用 for 循环初始化变量来创建用户想要的新变量。
我对@987654326@ 和Python 有一点经验,我记得我可以使用初始化变量作为占位符。
【问题讨论】:
-
也许你应该使用数组?
-
另外,总是检查
scanf返回的内容。这将允许您处理错误以及能够知道用户何时按下文件结束键序列以结束输入(如果用户想要少于十个输入)。 -
请注意
scanf()leaves the newline in the input buffer。我想你迟早会遇到这个问题,因为你使用getchar()来获取操作符。 -
您好 - 也许您打算使用函数指针?这可能是一个允许您通过操作员的解决方案.....我发现的一个可能案例; geeksforgeeks.org/function-pointer-in-c