1. Um pouco de bobagem:
Este código deve ser o único caminho para muitos iniciantes em programação. emm~
pode entender o uso de muitas funções comuns e também pode perceber que o pensamento lógico se reflete um pouco na programação. É um bom ponto de partida para o aprendizado de programação.
Este programa percebe que as expressões aritméticas são lidas e as operações podem ser executadas da esquerda para a direita para pular espaços.
Por exemplo, 2 * 3 +7*5 obtém o resultado 65.
2. Sobre o código
(1) Regras de nomenclatura de variáveis
Eu não gosto de apenas um i, j, k para terminar o trabalho.Cada variável tem seu próprio significado, então uma melhor nomeação de variáveis também é útil para melhorar a legibilidade do código.
char expression[100]; //储存算式
int temp=0; //遍历算式的每个字符
char op; //储存运算符
int pre_num=expression[0]-'0',next_num=0; //用来计算
int result=0; //最终结果
(2) Destaques no código
Eu sou mais narcisista então encontrei dois
①A mágica da função scanf()
Isso evita que ocorrências de espaço em branco na string interfiram na leitura da string inteira
scanf("%[^\n]",expression);//直到读到换行符才停止
② Uso hábil de aninhamento if ()
Essa é a personificação do chamado pensamento lógico, e o aninhamento pode reduzir até certo ponto a complexidade do código.
(3) O código completo está aqui!
#include<stdio.h>
#include <string.h>
int operation(char expression[]);
int main()
{
char expression[100]; //store the expression
printf("Please Enter an expression\n");
scanf("%[^\n]",expression);
operation(expression);
return 0;
}
int operation(char expression[])
{
int temp=0; //to traverse expression
char op;
int pre_num=expression[0]-'0',next_num=0; //Type conversion
int result=0;
while(expression[temp] != '\0')
{
char flag=expression[temp];
if(flag!=' ')
{
if(flag=='+'||flag=='-'||flag=='*'||flag=='/')
{
op=flag;
temp++;
}
else
{
next_num=flag-'0'; //Type conversion
temp++;
switch(op)
{
case'+':pre_num=pre_num+next_num;
break;
case'-':pre_num=pre_num-next_num;
break;
case'*':pre_num=pre_num*next_num;
break;
case'/':pre_num=pre_num/next_num;
break;
default:break; //if there is no operator
}
}
}
else //space appeared
{
temp++;
}
}
result=pre_num ;
printf(" result:%d\n",result );
return result;
}