用字符串作为输入用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语言编写计算器程序

用C语言编写一个计算器程序,实现加,减,乘,除,求平方根(正数),倒数等功能.

我要用C语言编写CRC16效验码。通过输入一个串然后计算出CRC16效验码。例如:输入010600001388计算得到849C

用c语言编写程序计算时间差 比如说 输入725 1010就能计算出中间是几小时几分。

如何使用JS编写一个简单的计算器