写个伪代码
float SubStr(ch_origin)
{
short length;
length=strlen(ch_origin);
if(ch_origin[length-1]=='=')
//判断最后一个字符是否是等号
{
char ch1[length-1];
......//将ch_origin去掉等号后的字符串赋给ch1,代码自己慢慢解决
return SubStr(ch1);
}
else
//字符串没有等号
{
char ch2[length-2];char ch3[length-2];char ch4[length-2]
.........
//伪代码:找找是否有左括号,如果有,
{
//将一个初始化为0的变量track加1,
//继续找,每遇到一个左括号,track增1,每遇到一个右括号,track减1,
//当track归于0时,遇到的右括号与第一次遇到的左括号配对,
//根据括号的下标找到括号中的字串,赋给ch2;
float ch2_f;ch2_f=SubStr(ch2);
//将ch2_f转换成字符串型,覆盖ch2;括号左右剩下的字符串分别赋给ch3,ch4,不再保留括号
//按ch3,ch2,ch4的顺序将三个字串合为一个字符ch3;
return Sub(ch3);
}
//如果没有括号
else
{
if(有加号或减号)
{
//遇到第一个加或减的时候,将字串分割为前后两个字串分别进行递归
//比如遇上2+3*8,将对2和3*8分别递归,各自的返回值进行相加运算。
//返回该运算结果
}
else
//对乘除进行判断
}
}
//若以上条件分支都没有被执行,说明本次调用的参数已经是一个浮点数
//表明用户输入的只是一个数或递归调用已到了底层,直接将本字符串转成浮点数返回给调用单位
}