表达式求值问题(C语言数据结构栈实现)
在做这个程序时候遇到了一个问题,就是对于一个表达式怎么实现一次性输入要求的表达式,在输入完成后就直接输出正确结果,而不是一个字符一个字符的输入判断到底是不是运算符还是操作数,还有在一次行输入的时候定义怎样的数据类型能够输入成为大于字符‘9’的数字的,我刚开始定义的是char型,但是对于比如说输入24,验证结果则只是把2赋给了char型变量,怎么实现输入大于‘9’的操作数呢?以上是我写这个程序遇到的问题,想了很久,没解决
/*输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整体,一次存放到 数组a中,编程统计有多少个整数,并输出这些数*/ #include<stdio.h> #include<string.h> int Isdigit(char c) { if(c>='0'&&c<='9') return 1; else return 0; } int CountInt(char *s,int a[]) { int i,j,num; i=0,j=0; while(s[i]) { if(Isdigit(s[i])) { num=0; while(Isdigit(s[i])) { num=num*10+s[i]-'0'; i++; } a[j]=num; j++; } else i++; } return j; } int main() { int i,n; int a[80]; char s[80]; scanf("%s",s); n=CountInt(s,a); printf("there is %d int!\n",n); for(i=0;i<n;i++) printf("%d\t",a[i]); printf("\n"); }