c语言高难度计算器代码
时间: 2023-05-20 18:01:33 浏览: 86
非常感谢您的提问,以下是一个基于C语言的高难度计算器代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAX_LEN 100
int main()
{
char input[MAX_LEN];
double result = 0.0;
int i, j, len, flag = 0;
double num1, num2;
char op;
printf("请输入要计算的表达式:");
fgets(input, MAX_LEN, stdin);
len = strlen(input);
for (i = 0; i < len; i++)
{
if (input[i] == ' ')
continue;
else if (input[i] >= '0' && input[i] <= '9')
{
if (flag == 0)
{
num1 = input[i] - '0';
flag = 1;
}
else if (flag == 1)
{
num1 = num1 * 10 + (input[i] - '0');
}
}
else if (input[i] == '+' || input[i] == '-' || input[i] == '*' || input[i] == '/')
{
op = input[i];
flag = 0;
}
else if (input[i] == '^')
{
op = '^';
flag = 0;
}
else if (input[i] == 's' && input[i + 1] == 'i' && input[i + 2] == 'n')
{
op = 's';
i += 2;
flag = 0;
}
else if (input[i] == 'c' && input[i + 1] == 'o' && input[i + 2] == 's')
{
op = 'c';
i += 2;
flag = 0;
}
else if (input[i] == 't' && input[i + 1] == 'a' && input[i + 2] == 'n')
{
op = 't';
i += 2;
flag = 0;
}
else if (input[i] == 'l' && input[i + 1] == 'o' && input[i + 2] == 'g')
{
op = 'l';
i += 2;
flag = 0;
}
else if (input[i] == '!')
{
op = '!';
flag = 0;
}
else
{
printf("输入有误!\n");
return 0;
}
if (op == '+' || op == '-' || op == '*' || op == '/' || op == '^')
{
i++;
while (input[i] == ' ')
i++;
if (input[i] >= '0' && input[i] <= '9')
{
num2 = input[i] - '0';
i++;
while (input[i] >= '0' && input[i] <= '9')
{
num2 = num2 * 10 + (input[i] - '0');
i++;
}
}
else
{
printf("输入有误!\n");
return 0;
}
switch (op)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
case '^':
result = pow(num1, num2);
break;
default:
break;
}
num1 = result;
flag = 0;
i--;
}
else if (op == 's' || op == 'c' || op == 't' || op == 'l' || op == '!')
{
switch (op)
{
case 's':
result = sin(num1);
break;
case 'c':
result = cos(num1);
break;
case 't':
result = tan(num1);
break;
case 'l':
result = log(num1);
break;
case '!':
result = 1;
for (j = 1; j <= num1; j++)
result *= j;
break;
default:
break;
}
num1 = result;
flag = 0;
}
}
printf("计算结果为:%lf\n", result);
return 0;
}
阅读全文
相关推荐















