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

这篇博客记录了作者花费三个半小时完成7-20表达式转换题的心得。难点在于处理数字前的正负号,特别是正数前的正号不需输出。作者通过逐步完善程序,将复杂问题拆解,最终成功解决。总结中提到全面考虑问题、制定初步思路和猜测测试点的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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' && 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值