C语言,提交至OJ上显示Wrong Answer

C语言的题目
Problem Description
有些计算器使用逆波兰表示法来书写数学表达式。在这一表示法中,运算符放置在操作数的后面而不是放置在操作数中间。例如:在逆波兰表示法中1+2将表示为1 2 +,而1+2 * 3将表示为123*+。
逆波兰表达式可以很方便地用栈求值。算法从左向右读取运算符和操作数,并执行下列步骤:
(1)当遇到操作数时,将其压入栈中。
(2)当遇到运算符时,从栈中弹出它的操作数,执行运算并把结果压入栈中。
编写程序对逆波兰表达式求值。操作数都是个位的整数,运算符为+、-、、/和=。
Input Description
在一行中输入逆波兰表达式。保证操作数都是个位的整数,运算符为+、-、
、/和=。
Output Description
输出所求的值。
Sample Input
123*+=
Sample Output
7
下面是我写的答案

#include 
#include 
#include 
#include 
int main()
{
    char A[100];
    int a,b=0,c=0;
    float s;
    int B[100]={};
    gets(A);
    while(b<100)
    {
          a=toascii(A[b]);
          if(48<=a&&a<=57) B[b]=a-48;
          else b=b+100;
          b++;
    }
    b=b-102;
    c=b+1;
    s=B[b];
    while(b>=0)
    {
        a=toascii(A[c]);
        if(a==42) s=B[b-1]*s;
        if(a==43) s=B[b-1]+s;
        if(a==45) s=B[b-1]-s;
        if(a==47) s=B[b-1]/s;
        if(a==61) b=b-100;
        b--;
        c++;
    }
    c=floor(s);
    if(c==s) printf("%.0f",s);
    if(c!=s) printf("%f",s);
    return 0;
}