我必须制作一个可以根据用户输入进行特定操作的计算器。输入的第一位必须是某种运算符(+
,-
,*
等),然后在代码检查其中哪些是用户的choice
之后。我将这些运算符声明为char
,但是我的代码编辑器说我不能将char
变量作为case语句...我该怎么办?代码:
#include <stdio.h>
#include <math.h>
int main(){
char choice = "+", "*", "-", "/";
int a, b;
float outcome;
scanf("%c", &choice);
switch (choice)
{
case "+":
scanf("d% d%", &a, &b);
outcome = a + b;
printf("%.1f", outcome);
break;
case "*":
scanf("%d %d", &a, &b);
outcome = a * b;
printf("%.1f", outcome);
break;
case "-":
scanf("%d %d", &a, &b);
outcome = a - b;
printf("%.1f", outcome);
break;
case "/":
scanf("%d %d", &a, &b);
outcome = a / b;
printf("%.1f", outcome);
break;
}
return 0;
}
您可以在char
中使用switch
,但是"+"
和其他是字符串文字而不是字符文字,即'+'
。
您的代码中还有其他问题。例如,目前尚不清楚您期望这样做(已经固定引号):
char choice = '+', '*', '-', '/';
char
是单个字符。
您的代码看起来像C,但不像C ++。如果您实际上使用的是C ++,则可以使用std::string
及其find
方法,例如:
#include <string>
#include <iostream>
int main(){
std::string choices = "+*-/";
auto choice = choices.find('*');
switch (choice){
case 0: std::cout << "you chose +";break;
case 1: std::cout << "you chose *";break;
case 2: std::cout << "you chose -";break;
case 3: std::cout << "you chose /";break;
default: std::cout << "invalid operator";
}
}
这些不是字符,这些是字符串文字。