我的程序:

 1 #include<stdio.h>
2 #include<string.h>
3 #define N 50
4 char token[]= {'+','-','*','/','(',')'};
5
6 int istoken(char c) {
7 int i;
8 for(i=0; i<strlen(token); i++) {
9 if(token[i]==c) return 1;
10 }
11 return 0;
12 }
13
14 int main() {
15 int i,j,t=0,flag=0;
16 char s[N],temp[N];
17 scanf("%s",s);
18 int len = strlen(s);
19 for(i=0; i<len; i++) {
20 //如果是减号且前面也是符号,则将减号作为后面数据的一部分
21 if((i==0 && s[i]=='-')||(istoken(s[i-1]) && s[i]=='-')) flag = 1;
22 //如果是符号,且不是上面的情况,则先打印符号前的数据,再打印符号
23 if(istoken(s[i]) && flag==0) {
24 for(j=0; j<t; j++) {
25 printf("%c",temp[j]);
26 }
27 //运算符紧跟括号时,不输出回车
28 if(t!=0)
29 printf("\n");
30 t=0;
31 //如果到末尾,则不输出回车
32 printf("%c",s[i]);
33 if(i!=len-1)
34 printf("\n");
35 } else {
36 temp[t]=s[i];
37 t++;
38 //flag清零
39 flag = 0;
40 //输出末尾的数据
41 if(i==len-1) {
42 for(j=0; j<t; j++) {
43 printf("%c",temp[j]);
44 }
45 }
46 }
47 }
48 }

(最后一个用例提示“格式错误”,没有找出bug)

网友“扯淡”的程序:

 1 #include <stdio.h>
2 #include <string.h>
3 int main(){
4 char str[41], ch, flag=0;
5 int i=0;
6 scanf("%s", str);
7 int len=strlen(str);
8 printf("%c", str[0]);
9 for(i=1; i<len; i++){
10 if (str[i]>47 && str[i]<58 || str[i]=='.'){
11 if (flag)
12 printf("\n");
13 printf("%c", str[i]);
14 flag=0;
15 }else{
16 if (str[i-1]=='(' && str[i]=='-'){
17 printf("\n%c", str[i]);
18 flag=0;
19 }else{
20 printf("\n%c", str[i]);
21 flag=1;
22 }
23 }
24 }
25 return(0);
26 }

https://blog.csdn.net/qq_36589706/article/details/81081144

分析:

1、我是一开始就想的比较复杂,然后在测试中不断补漏洞;扯淡是一开始就想的很简单,只分成数值和非数值两种情况

2、程序构造的越抽象,细节越少,越不容易出错

3、从计算机的角度,而不是实际意义的角度出发思考问题

[刷题] PTA 7-62 切分表达式 写个tokenizer吧的更多相关文章

  1. pta习题集 5-10 切分表达式——写个tokenizer吧

    [先说点出题背景] 这个题是为低年级同学.学C语言的同学准备的,因为,对这部分同学,这个题目编写起来略有一点复杂.如果是高年级.学过了正则表达式(Regular Expression)的同学或者学过了 ...

  2. [刷题] PTA 查验身份证

    题目: 7-63 查验身份证 (15 分)  一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5, ...

  3. [刷题] PTA 04-树4 是否同一棵二叉搜索树

    程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct TreeNode *Tree; 4 struct ...

  4. [刷题] PTA 03-树2 List Leaves

    程序: 1 #include <stdio.h> 2 #include <queue> 3 #define MaxTree 20 4 #define Null -1 5 usi ...

  5. [刷题] PTA 03-树1 树的同构

    程序: 1 #include <stdio.h> 2 #define MaxTree 10 3 #define ElementType char 4 #define Tree int 5 ...

  6. #leetcode刷题之路10-正则表达式匹配

    匹配应该覆盖整个字符串 (s) ,而不是部分字符串.说明:s 可能为空,且只包含从 a-z 的小写字母.p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *. 示例 1:输入:s = & ...

  7. [刷题] PTA 02-线性结构3 Reversing Linked List

    链表逆序 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namesp ...

  8. [刷题] PTA 03-树3 Tree Traversals Again

    用栈实现树遍历 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXSIZE 30 4 5 int Pre[MAXSIZ ...

  9. [刷题] PTA 7-61 找最长的字符串

    程序: 1 #include<stdio.h> 2 #include<string.h> 3 #define N 81 4 5 int main() { 6 char ch[N ...

随机推荐

  1. 自动QQ邮箱发送邮件

    语言:python 参考:https://www.runoob.com/python/python-email.html 前提: 1.QQ邮箱开启了SMTP服务 2.生成了授权码,这个授权码将作为自己 ...

  2. UnboundLocalError: local variable 'foo' referenced before assignment Python常见错误

    在定义局部变量前在函数中使用局部变量(此时有与局部变量同名的全局变量存在) 在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的, 使用规则:如果在函数中定义了任何东西,如果它只是在函数中使用 ...

  3. oo暑期课程总结

    一.当时未能完成的作业 未能完成的作业是第四单元的作业. 未能完成的原因主要有以下两点:一是当时对于数据的整理没有好的设计和思路:二是临近期末,未能合理地分配时间导致作业未能完成 二.改进的部分 通过 ...

  4. php中的一些没有用过的,但是见到过的方法 函数

    strlen(); strlen 和 mb_strlen 都是用于获取字符串长度的, 其中 strlen 只针对单字节编码字符,也就是说它计算的是 字符串的总字节数,如果是多字节编码,如 gbk 和 ...

  5. es的分布式架构原理能说一下么(es是如何实现分布式的啊)?

    在搜索这块,lucene是最流行的搜索库.几年前业内一般都问,你了解lucene吗?你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎--elast ...

  6. Spring Security框架中踢人下线技术探索

    1.背景 在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话 ...

  7. Java学习IO流第一天

    今日内容介绍 字节流 字符流 1 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流Ou ...

  8. k8s 运行单实例 mysql

    配置文件mysql.yaml --- apiVersion: v1 kind: Service metadata: name: mysql-01 spec: ports: - port: 3306 s ...

  9. 数据结构(2):单链表学习使用java实现

    单链表是单向链表,它指向一个位置: 单链表常用使用场景:根据序号排序,然后存储起来. 代码Demo: package com.Exercise.DataStructure_Algorithm.Sing ...

  10. 从苏宁电器到卡巴斯基(后传)第05篇:聊聊我对WannaCry产生的感慨

    这几天看到网上对WannaCry勒索病毒讨论得沸沸扬扬,不免有些感触. 其实该病毒的这次爆发,完全可以类比N年前"熊猫烧香"爆发的情况.也就是国内杀软纷纷歇菜,让本来就没什么技术含 ...