c语言计算器不能算分数,C语言计算器,只支持+-*/ ,要的拿去

本文详细介绍了一个C++程序,用于解析并计算用户输入的带有运算符和小数的算术表达式,包括输入处理、数据存储、运算符处理和结果计算的过程。重点展示了如何使用数组存储数值和符号,以及如何通过递归实现表达式解析。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include 

main()

{

char st[100]={'0',''}; /*记录用户输入的内容*/

char st0[50]={'0',''}; /*临时所用的字符串 */

char st1[1]={'0'}; /*临时所用的字符串 */

double d[20]; /* 储存数据的数组 */

char ss[20]={''}; /*储存符号的字符串 */

int dn=0; /*记录数组的有效个数*/

double swanp5();

/*临时所用到的变量*/

char *p;

char c;

int n,i,j,k;

double x,y,x1,x2;

/*临时所用到的变量*/

while(1){

list();

/*--记录用户的输入---------------*/

p=st;

while( (c=getchar())!='\n' ){

*p=c;p++;

}

*p='\0';

/*--测试输入是否记录下来----------*/

if(st[0]=='+'||st[0]=='-'||st[0]=='*'||st[0]=='/')

swanp11(st0,st);

if(st[0]=='.') swanp11("0",st);

/*printf("%s\n",st);*/

/*----------求d[] ,ss[] 开始-------*/

while(1){

/*得到第一个数据*/

*st0='0'; /*st=1.2+3.4+5.6*/

swanp1(st0,st);/*st0=1.2*/

x=swanp5(st0);/*x=1.2*/

d[dn]=x;dn++;/*d=1.2, dn=1*/

/*得到第一个数据*/

/*得到第一个符号*/

*st1='0';

swanp2(st,st1); /*st1='+'*/

c=*st1; /*c='+'*/

if( c=='0') break;

swanp3(ss,c); /*ss='+', */

/*st=1.2+3.4+5.6*/

/*得到第一个符号*/

/*初始化输入*/

i=swanp4(st0);

for(n=0;n<=i;n++)

swanp9(st,0);

/*初始化输入*/

}

/*----------求d[] ,ss[]完毕---------*/

/*---计算两组据运算结果 y 开始-----*/

while(1){

/*运算一次*/

p=ss;

i=swanp8(ss);if(i==-1) break;

c=*(p+i);

x1=d[i];

x2=d[i+1];

k=1;

switch(*(p+i)){

case '+':y=x1+x2;break;

case '-':y=x1-x2;break;

case '*':y=x1*x2;break;

case '/':y=x1/x2;break;

default:k=0;break;

}

/*运算一次*/

/*初始化 */

swanp6(d,i,dn);dn--;

swanp7(d,i,y);

swanp9(ss,i);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值