12.15总结

题目

欢迎大家加入ACM!
要深入的学习ACM的相关知识,首先就必须学会一门编程语言,推荐C/C++。
不过对于初学者,因为没编过多少代码,经常出现变异错误,其实就是语法错误。
现在要你检查一段代码的语法是否否正确。
为了简化问题,我们只检查 (、)、{、} 括号是否匹配了,并且在输入的代码中不包含字符的'(',')','{','}'。
其他语法错误不检查,如 "#include <stdio.h","2 = x",是错误的,但是不检查。

输入

有多组测试数据,每组测试数据有一段代码,该段代码可能在有多行。
每段代码以Ctrl+Z结束。
处理到文件结束。

输出

每组测试数据输出一行。
如果这段代码括号匹配了,输出 Right ,否则输出 Wrong。

样例输入

#include <stdio.h
int main(){
    int a b;
    while (scanf("%d%d", &a, &b) != EOF) {
        printf("%d\n", a + b);
    }
}
Ctrl+Z
int main(){
    int a, b;
    while (scanf("%d%d", &a, &b) != EOF) {
        printf("%d\n", a + b);
   
}
Ctrl+Z

样例输出

Right
Wrong

代码如下(代码有错误)

#include<stdio.h>
#define size 30
int stack[30];
int top=0;
int flag = 1;

void push(char x)
{
 if (top < size)
 {
  stack[top] = x;
  top++;
 }

}
char pop()
{
 if (top == 0)
  return '\0';
 top--;
 return stack[top];

}

void check(char x, char y)
{
 if (x == '#')
 {
  printf("Wrong");
  flag = 0;
 }
 if (x!=y)
 {
  printf("Wrong");
  flag = 0;
 }
}

int main()
{
 char ch, out;
 push('#');
 ch = getchar();
 while (ch != 'Ctrl+Z')
 {
  switch (ch)
  {
  case'(':
  case'[':
  case'{':push(ch); break;
  case')':out = pop(); check(out, '('); break;
  case']':out = pop(); check(out, '['); break;
  case'}':out = pop(); check(out, '{'); break;
        }
  if (flag == 0)
   return 0;
  ch = getchar();
 }
 out = pop();
 if (out == '#')
  printf("Right");
 else
  printf("Wrong");
 return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值