7-20 表达式转换 (25 分)

7-20 表达式转换 (25 分)


历时三个半小时终于完成。

这道题的难点主要是在处理数字前的正负号上,同时还应该注意数字有小数点并且不是一位数字
因为在做题之前同学给我说过这道题,也知道几个坑,所以做题的过程比较顺利。


我的步骤如下:
1、先完成不考虑数字前的正负号的程序。
2、考虑数字前的正负号,完善程序。
通过上面的步骤,做题的过程比较的顺利,把难题变成了简单的的题目。
在第二步的时候比较烧脑,因为我的想法比较简单,就是把所有的可能全都列出来,所以要花很多的时间考虑,验证


总结

1、考虑问题要全面,在数字前正负号时要尽量列出所有的可能。
2、开始做题时有一个大体的思路就行,不必考虑的很周到。
3、要善于猜测试点。。在考试时测试点不会告诉我们,而是需要自己取探索。

**这个题的一个坑就是,会在有的正数前加正号,但输出的时候不用输出正号。**我就一直没过这个测试点,直到搜到了测试数据。


AC代码
#include <stdio.h>
#include <stdlib.h>
/**
 * 带有头结点 
 */
typedef struct Node *Stack;
struct Node{
   
    char s;
    Stack Next;
};
//操作
Stack CreateStack(); //初始化栈
void Push(Stack p,char str); //入栈
int IsEmpty(Stack p); //判断是不是为空
char Pop(Stack p); //出栈
char GetTop(Stack p); //得到栈顶元素
void majoy(Stack p,char *s); //后缀表达式

int main()
{
   
    Stack p = CreateStack();
    char S[50] = {
   0};
    scanf("%[^\n]",S);
    majoy(p,S); //得到后缀表达式
    system("pause");
    return 0;
}

//后缀表达式
void majoy(Stack p,char *S)
{
   
    int flag = 0;
    char *ptr = S;
    while(*ptr)
    {
   
        //处理数字
        if((*ptr >= '0' && *
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值