数字表达式的计算 C语言

功能要求:
    1.从键盘输入一段表达式(字符串),其中含有整数、加、减、乘、除。
    2.计算表达式的值。
    3.事先约定表达式无括号、无浮点数、无负数、无错误。

exp存放输入的表达式 opera存放表达式中的运算符 num存放表达式中的数字。

注意:该程序应兼容输入表达式(字符串)中有空格的情况,所以选择gets()而不是scanf()来获取字符串。(字符输入函数getchar 字符输出函数putchar 字符串输入函数gets 字符串输出函数puts,gets只以回车作为分隔符;scanf以空格作为分隔符)

函数transform将数字表达式中的数字字符转化为整数数字并按顺序提出;

传入参数:表达式、数字数组、用来表示数字数组元素个数的n。

#include<string.h>中strlen()函数 执行strlen(exp)次循环,当表达式中为空格时,跳过;当表达式中元素为数字时将数字字符转化为整数数字

"temp = temp * 10 + exp[i] - '0';
  flag = 1;
  i++;"   指向下一个元素,如果下一个元素仍为数字字符,则上一个字符*10作为十位上的数字,第二位字符作为个数上的数字,以此类推;如果下一个元素不是数字字符,执行i++,并将temp清零。继续执行最开始的循环。用flag作为是否扫描到数字字符的表征,每每上一步的while循环结束时,检查flag的数值,如果扫描到数组字符,则将其放入准备好的数字数组中。

函数getoperator用于提取运算符 ;步骤与上个函数类似。

函数calculate用于进行计算;

传入参数有:字符数组、数字数组以及数字数组的元素个数(用于限制循环运行的次数)

由于计算中各步结果皆有可能为浮点数,故定义一个浮点数数组,将数字数组中的原始数据原封不动的传入浮点数数组。

遍历运算符数组,扫描到“+”时,先不做处理;

扫描到“-”时,将其后数字由正值转化为负值,并将”-“改为”+“;

扫描到”*“时,将与”*“相邻的两个数字做乘法并存储到其中一个位置另一个位置归零。”*“改为”+“;

扫描到”/"时,做法与上步类似。

计算最终浮点数数组中各个元素之和。并返回结果。

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值