请编写程序检查C语言源程序中下列符号是否配对:/**/()[]{}

输入格式:

输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。

输出格式:

首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?

输入样例1:

void test()
{int i, A[10];for (i=0; i<10; i++) /*/A[i] = i;
}
.

输出样例1:

NO
/*-?

输入样例2:

void test()
{int i, A[10];for (i=0; i<10; i++) /**/A[i] = i;
}]
.

输出样例2:

NO
?-]

输入样例3:

void test()
{int idouble A[10];for (i=0; i<10; i++) /**/A[i] = 0.1*i;
}
.

输出样例3:

YES
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string>
#define STACK_SIZE 101
using namespace std;
typedef char SElemType;
char c;
typedef struct
{SElemType *base;SElemType  *top;int stacksize;
}SqStack;
int CreatS(SqStack &S)
{S.base = (SElemType *)malloc(STACK_SIZE*sizeof(SElemType));if(!S.base)exit(-1);S.top=S.base;S.stacksize = STACK_SIZE;return 1;
}//创建一个空栈
int Push(SqStack &S,SElemType e)//把元素e放入栈顶
{if(S.top-S.base>=S.stacksize){return 0;}*S.top++=e;return 1;
}
int Pop(SqStack &S)//删除栈顶元素
{if(S.top==S.base)return 0;S.top--;return 1;
}
int Empty(SqStack &S)//判断栈是否为空
{if(S.top==S.base)return 1;elsereturn 0;
}
int main()
{SqStack S;CreatS(S);char s[105];int f=1,i=0;while(cin>>s)//一行一行进行输入{if(s[0]=='.'&&s[1]=='\0')//结束语句{break;}for(i=0;s[i]!='\0';i++){if(s[i]=='('||s[i]=='{'||s[i]=='[')//左括号,入栈{Push(S,s[i]);}else if(s[i]=='/'&&s[i+1]=='*')//左注释(/*),入栈,入栈元素为*{Push(S,'*');i=i+1;}else if(s[i]=='*'&&s[i+1]=='/')//若为右注释{if(*(S.top-1)=='*')//如果栈顶元素是*,删除栈顶元素Pop(S);else{c=s[i];f=0;break;//匹配失败,结束循环}i=i+1;}else if(s[i]==')'||s[i]=='}'||s[i]==']')//如果是右括号{if(s[i]==')'&&!Empty(S)&&*(S.top-1)=='('){Pop(S);}else if(s[i]=='}'&&!Empty(S)&&*(S.top-1)=='{'){Pop(S);}else if(s[i]==']'&&!Empty(S)&&*(S.top-1)=='['){Pop(S);}else//没有与之对应的左括号(右括号多){c=s[i];f=0;break;}}}}if(S.top!=S.base)//左括号多{f=0;}if(f)cout<<"YES"<<endl;else{cout<<"NO"<<endl;if(!Empty(S)){if(*(S.top-1)=='(')cout<<'('<<'-'<<'?'<<endl;else if(*(S.top-1)=='[')cout<<'['<<'-'<<'?'<<endl;else if(*(S.top-1)=='{')cout<<'{'<<'-'<<'?'<<endl;else if(*(S.top-1)=='*')cout<<'/'<<'*'<<'-'<<'?'<<endl;}else{if(c==')')cout<<'?'<<'-'<<')'<<endl;else if(c==']')cout<<'?'<<'-'<<']'<<endl;else if(c=='}')cout<<'?'<<'-'<<'}'<<endl;else if(c=='*')cout<<'?'<<'-'<<'*'<<'/'<<endl;}}return 0;
}

*chap3 7-3 符号配对 (20 分)相关推荐

  1. 7-5 符号配对 (20 分)

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  2. 习题3.8 符号配对 (20分)

    请编写程序检查C语言源程序中下列符号是否配对:/*与*/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对 ...

  3. 7-2 符号配对 (20 分) c语言版

    题目 请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配 ...

  4. 7-6 符号配对 (20 分)(C语言版)

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  5. 习题3.8 符号配对 (20分) c语言

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  6. 7-2 符号配对 (25 分)(C语言版)

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  7. 习题3.8 符号配对 (20 分)【满分】【c语言】

    习题3.8 符号配对 (20 分) 请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标 ...

  8. /* * 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“

    题目: 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 *****************    所谓" ...

  9. C语言程序练习-L1-002 打印沙漏 (20分)

    L1-002 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数 ...

最新文章

  1. 【部署类】专题:消息队列MQ、进程守护Supervisor
  2. 陶哲轩实分析 习题 10.3.5
  3. VS.NET 2005中实用的默认键
  4. 匹配嵌套的构造(较复杂)
  5. 亚马逊创始人下月将乘自家火箭进入太空 亲弟弟同行
  6. java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...
  7. idea 2018.3.5版本
  8. 实用推荐系统:寻找有用的用户行为
  9. 2022年焊工(初级)考试及焊工(初级)考试内容
  10. 使用redis做缓存处理时出现的问题
  11. matlab 平滑曲线连接_基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)...
  12. mac nmap 的下载
  13. xutils获取数据
  14. 天空盒里放风筝,OpenGL就这么任性:想怎么放,就怎么放!
  15. c++ 巧妙利用二进制,猜出你的生日 猜生日游戏
  16. 用计算机pol计算方位角,如何通过编程代替计算器内部函数“Pol和Rec”
  17. 浅谈大数据技术之实战足球盘口分析的方法与思路(二)
  18. linux写画小猪佩奇代码,代码绘制一直小猪佩奇
  19. 怎么设计一个秒杀系统
  20. 利用Android手机为游戏手柄,超强的AIWI体感游戏

热门文章

  1. 店铺人群标签乱了怎么办,如何纠正店铺人群标签
  2. 一加6 刷TWRP root(处理Qualcomm Crashdump Mode)
  3. 中信建投:消费复苏的两条路径
  4. 鱼眼相机的车位线感知
  5. java 截取数组的一段_java截取一段数组
  6. Cesium矢量编辑绘图(新)
  7. 如何使用JS解析json数据和字符串
  8. bim土建免费工具丨revit墙体连接的小技巧
  9. 安徽省2016“京胜杯”程序设计大赛_J_YZK的大别墅
  10. linux桌面在哪里,Linux桌面的趋势在哪?