|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天学了逆波兰表示法,具体看《带你学C带你飞》的课后作业 s1e40
于是就自己写了一个,
- /*输入格式 每个元素之间用空格隔开 只输入一个空格 开头只能是数字
- 例如 输入:1 2 +
- 输出 :3 */
- #include <stdio.h>
- #define MAX 100
- int main(void)
- {
- char str[MAX];//用于存放输入的算式
- int array[MAX];//用来存放输入的数字
- int i=0,j=0,sum=0;// i 遍历str j 遍历array
-
- printf("请输入算式:");
- gets(str);
-
- while(str[i]!='\0')
- {
- if(str[i]==' ')//遇到空字符就,把数字放到,array中
- {
- array[j]=sum;
- sum=0;
- i++;
- j++;
- continue;
- }
- if(str[i]>='0'&&str[i]<='9')//把输入的字符转换城int类型
- sum=(str[i]-48)+sum*10;
- switch(str[i])//遇到运算符,就把前两个数字给拿出来做运算
- {
- case '+':{
- array[j-2]+=array[j-1];
- j--;
- i++;
- break;
- }
- case '-':{
- array[j-2]-=array[j-1];
- j--;
- i++;
- break;
- }
- case '*':{
- array[j-2]*=array[j-1];
- j--;
- i++;
- break;
- }
- case '/':{
- if(array[j-1]==0)
- {
- printf("算式错误!\n");
- return -1;
- }
- else
- {
- array[j-2]/=array[j-1];
- j--;
- i++;
- }
- break;
- }
- }
- i++;
- }
- printf("结果是:%d\n",array[0]);
-
- return 0;
- }
复制代码
如果有更好的方法完成小甲鱼的课后作业的动动手,请指点一下
具体看S1E40:高级宏定义 | 课后测试题及答案
https://fishc.com.cn/thread-81421-1-1.html
(出处: 鱼C论坛)
|
|