用字符串作为输入用c编写计算器程序[重复]
Posted
技术标签:
【中文标题】用字符串作为输入用c编写计算器程序[重复]【英文标题】:To write calculator program in c with string as input [duplicate] 【发布时间】:2020-07-08 10:18:21 【问题描述】:我想写一个以字符串为输入的 C 函数。
示例用户输入:
"(1+2-3+(4+5))-7)"
所需的输出是 2
作为整数。基本上我必须删除"("")"
空格并计算加法和减法运算。
【问题讨论】:
你应该设计一个机器状态来解析字符串并考虑优先级。 你的表达式多了一个)
:2个(
和3个)
【参考方案1】:
如果你想从头开始,你必须解析你的输入以获得查找优先级,并转换 number(int) 中的每个数字(string) 以进行计算。您可以使用 atoi
将字符串数字转换为 int 数字。
示例:
#include <stdio.h>
void add ();
void sub ();
void mul ();
void div ();
void sqr ();
void prime_factorization ();
void factorial ();
void sel_func (int);
int main (void)
int s;
Input:
printf("Input a number [ +(1), -(2), *(3), /(4), ^(5), prime factorization(6), !(7)] : ");
scanf("%d",&s);
if (s > 7 | s < 1)
printf("Please input again\n");
goto Input;
sel_func (s);
goto Input;
void sel_func (int s)
void (*fptr)(void);
switch (s)
case 1:
fptr = add;
break;
case 2:
fptr = sub;
break;
case 3:
fptr = mul;
break;
case 4:
fptr = div;
break;
case 5:
fptr = sqr;
break;
case 6:
fptr = prime_factorization;
break;
case 7:
fptr = factorial;
break;
fptr();
void add ()
int a, b;
printf("Input two numbers : ");
scanf("%d%d", &a,&b);
printf("Result = %d\n", a + b);
void sub ()
int a, b;
printf("Input two numbers : ");
scanf("%d%d", &a,&b);
printf("Result = %d\n" , a - b);
void mul ()
int a, b;
printf("Input two numbers : ");
scanf("%d%d", &a,&b);
printf("Result = %d\n", a * b);
void div ()
int a, b;
printf("Input two numbers : ");
scanf("%d%d", &a,&b);
printf("Result = %d\n", a / b);
void sqr ()
int exp, base, i;
int result = 1;
printf("Input base : ");
scanf("%d",&base);
printf("Input exp : ");
scanf("%d",&exp);
for (i = 0; i < exp; ++i)
result *= base;
printf("%d^%d = %d\n",
base,exp,result);
void prime_factorization ()
int n;
while (1)
printf("Input a number : ");
scanf("%d",&n);
if(n < 2)
return;
int p = 2;
int primes[20];
int index = 0;
int i;
while (1 != n)
if (0 == (n%p))
n = n/p;
primes[index] = p;
++index;
p = 2;
else
++p;
if(1 == index)
printf("Prime number\n");
else
for (i = 0; i < index - 1; ++i)
printf("%d*", primes[i]);
printf("%d\n", primes[i]);
return;
void factorial ()
int a, b;
int sum = 1;
printf("Input a number : ");
scanf("%d", &b);
for (a = 1; a <= b; ++a)
sum *= a;
printf("%d!=%d\n",b,sum);
【讨论】:
以上是关于用字符串作为输入用c编写计算器程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章
用C语言编写一个计算器程序,实现加,减,乘,除,求平方根(正数),倒数等功能.
我要用C语言编写CRC16效验码。通过输入一个串然后计算出CRC16效验码。例如:输入010600001388计算得到849C