我的程序:

 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. Android Studio 中的 button 无法使用 background 更改背景颜色

    •解决方案 res/values/themes.xml下的  <style name="Theme.HelloWorld" parent="Theme.Materi ...

  2. Web 前端 - 又不仅限于 Web 前端 - 协程锁问题

    前言 最近两天的 web 前端开发中,早前的锁实现 (自旋锁) 出现了一些不合理的现象,所以有了这片随笔 什么是协程锁?能点进这个博客的的你肯定是明白的,不明白的人根本搜不到我这随笔,不多做赘述. 一 ...

  3. SqlServer触发器的创建与使用

    前言 上期我们介绍了SqlServer的视图和存储过程创建与使用,这期我们介绍一下触发器. 有需要回顾的可以电梯直达看一下: SqlServer视图的创建与使用 SqlServer存储过程的创建与使用 ...

  4. 基于阿里云托管kubernetes的版本升级

    前言 因为阿里云的knative对应得k8s版本大于1.15,而我们目前得集群环境是1.14.8,因此需要对预发环境进行版本升级.基于aliyun托管的kubernetes集群版本升级本没有什么可写, ...

  5. css盒模型以及如何计算盒子的宽度

    css盒模型以及如何计算盒子的宽度 盒模型 每个存在于可访问性树中的元素都会被浏览器绘制成一个盒子[1]. 每个盒子都可以看成由4部分组成,它们分别是 - 元素外边距(margin).元素边框(bor ...

  6. (十)struts2的异常处理机制

    成熟的MVC框架应该提供成熟的异常处理机制.当然可以在方法中手动捕捉异常,当捕捉到特定异常时,返回特定逻辑视图名. 这种方式非常繁琐,需要在方法中写大量try catch块,最大的缺点还是一旦需要改变 ...

  7. 字符串函数的实现(三)之strcat

    C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...

  8. 嗝,我饱了——IDEA食用指南

    1 概述 IDEA全称IntelliJ IDEA,主要用于Java开发的IDE,代码自动提示,重构,JUnit,代码分析等的功能非常牛逼,这篇文章首先介绍目前为止IDEA最新版本的特性,然后从UI,常 ...

  9. 2021最新版Dubbo-admin+Zookeeper安装教程

    安装程序包 这是写教程时收集好的文件,可直接点击下载,也可以跟着步骤自行下载:https://hanzhe.lanzous.com/ihna9jzcsze Zookeeper下载地址,任选其一点击下载 ...

  10. 【cypress】6. cypress的默认文件结构介绍

    通过之前的一些介绍,已经大概其明白cypress是个啥,但是具体使用的细节点还有很多,需要一步步的去学习. 在安装好cypress之后,会生成一个默认项目,这个项目结构里的各个文件夹是干嘛使的呢? 一 ...