马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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论坛)
|