嗨,我是编程新手,现在已经在计算器上工作了一段时间。我试图添加一些触发功能,我正在遇到麻烦。其他函数工作(+, - ,*,/),但是当我输入“sine”时,它跳到代码的一部分,它说它是一个不正确的函数。请帮我解决我的代码。谢谢!
#include <stdio.h>
#include <math.h>
int main()
{
float firstnum, secondnum, angle, answer, pi;
char function, sine;
pi = atan(1.0)*4;
printf("\nHello and welcome to my calculator!\n");
while(1)
{
printf("\nPlease input the function you would like to use. These include +, -, *, /, sine.\n");
scanf("%s", &function);
switch(function)
{
case '+':
printf("\nNow please input the two variables.\n");
scanf("%f", &firstnum);
scanf("%f", &secondnum);
answer = firstnum+secondnum;
break;
case '-':
printf("\nNow please input the two variables.\n");
scanf("%f", &firstnum);
scanf("%f", &secondnum);
answer = firstnum-secondnum;
break;
case '*':
printf("\nNow please input the two variables.\n");
scanf("%f", &firstnum);
scanf("%f", &secondnum);
answer = firstnum*secondnum;
break;
case '/':
printf("\nNow please input the two variables.\n");
scanf("%f", &firstnum);
scanf("%f", &secondnum);
answer = firstnum/secondnum;
break;
case 'sine':
printf("\nPlease enter the angle.\n");
scanf("%f", &angle);
answer = sin(angle);
break;
default: printf("Sorry, that is an incorrect function. The only available choices are +, -, *, /, sine.");
break;
}
printf("Your answer is %f \n", answer);
printf("\nWhen you are ready to quit, simply press Ctrl + C or just hit the X button in the top right.\n");
}
return 0;
}
答案 0 :(得分:6)
'sine'
这是一个多字符文字。 function
是一个字符。在switch
语句中检查它的整数值。您可能永远无法使用与您尝试这样做的方式匹配sine
的用户使用单个字符。请改为读取字符串(char*
)。
来自标准:
C99 6.4.4.4p10:&#34;包含多个字符(例如,&#39; ab&#39;)的整数字符常量的值,或包含未映射到的字符或转义序列的值单字节执行字符,是实现定义的。&#34;
答案 1 :(得分:0)
C没有第一类字符串类型。这意味着您不能对字符串使用switch语句,您需要使用strlcmp等函数进行字符串比较。
根据您的目标(制作计算器或学习C),切换到具有较高抽象级别的其他语言或从较好的C教科书中的较低级别练习开始可能是明智的。
另外,请注意在C中正确使用字符串和用户输入,没有安全漏洞,比起初看起来要困难得多。如果你的目标是学习一门语言,那么学习C ++是一个更好的选择,你需要std::string
来处理你的比较,iostreams
来处理你的输入和输出。