[刷题] PTA 7-62 切分表达式 写个tokenizer吧
我的程序:
- 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吧的更多相关文章
- pta习题集 5-10 切分表达式——写个tokenizer吧
[先说点出题背景] 这个题是为低年级同学.学C语言的同学准备的,因为,对这部分同学,这个题目编写起来略有一点复杂.如果是高年级.学过了正则表达式(Regular Expression)的同学或者学过了 ...
- [刷题] PTA 查验身份证
题目: 7-63 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5, ...
- [刷题] PTA 04-树4 是否同一棵二叉搜索树
程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct TreeNode *Tree; 4 struct ...
- [刷题] PTA 03-树2 List Leaves
程序: 1 #include <stdio.h> 2 #include <queue> 3 #define MaxTree 20 4 #define Null -1 5 usi ...
- [刷题] PTA 03-树1 树的同构
程序: 1 #include <stdio.h> 2 #define MaxTree 10 3 #define ElementType char 4 #define Tree int 5 ...
- #leetcode刷题之路10-正则表达式匹配
匹配应该覆盖整个字符串 (s) ,而不是部分字符串.说明:s 可能为空,且只包含从 a-z 的小写字母.p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *. 示例 1:输入:s = & ...
- [刷题] PTA 02-线性结构3 Reversing Linked List
链表逆序 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namesp ...
- [刷题] PTA 03-树3 Tree Traversals Again
用栈实现树遍历 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXSIZE 30 4 5 int Pre[MAXSIZ ...
- [刷题] PTA 7-61 找最长的字符串
程序: 1 #include<stdio.h> 2 #include<string.h> 3 #define N 81 4 5 int main() { 6 char ch[N ...
随机推荐
- PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) 凌宸1642
PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) 凌宸1642 题目描述: A number that will ...
- Unity 背包系统的完整实现(基于MVC框架思想)
前言: 项目源码上传GitHub:Unity-knapsack 背包系统: 背包系统是游戏中非常重要的元素,几乎每一款游戏都有背包系统,我们使用背包系统可以完成装备栏的数据管理,商店物体的数据管理等等 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
首先感谢张队@geffzhang公众号转发了上一篇文章,希望广大.neter多多推广dapr,让云原生更快更好的在.net这片土地上落地生根. 目录:一.通过Dapr实现一个简单的基于.net的微服务 ...
- 【剑指offer】9:变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 先考虑最简单情况就是只有一级台阶,仅有一种跳法.两级台阶,有两种 ...
- 还在使用MyBatis Generator?试试这个工具
代码生成 在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发.通过通用的增删改查代码生成器,可以有效的提高效率,降低成本:把有规则的重复性劳动让机器完成,解放开发人员. MyBatis G ...
- GO-04-变量
GO变量 Go 语言的变量名由字母.数字.下画线组成,首个字符不能为数字: Go 语法规定,定义的局部变量若没有被调用会发生编译错误. 变量的声明 var 变量名 变量类型 批量声明变量 var ( ...
- 005-Java中的控制语句
目录 一.控制语句 一.作用 二.分类 二.选择语句(分支语句) 一.if 语句 二.switch语句 三.循环语句 一.for循环 二.while循环(while循环的循环次数是:0~n次) 三.d ...
- java 读取ini文件
1.情景:需要将硬代码写到文件中,这样以后改动只需改动灵活 1)txt文件,需要将这code字符串读到代码中,保存成数组 2)导包:pom.xml添加依赖: <dependency> &l ...
- B - Rikka with Graph HDU - 5631 (并查集+思维)
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some mat ...
- hdu4829 带权并查集(题目不错)
题意: Information Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...