【问题描述】

编写程序,统计给定的C源程序中花括号的最大嵌套层次,并输出花括号嵌套序列,该程序没有语法错误。

注意:
1)源程序注释(/* … */)中的花括号应被忽略,不参与统计。
2)源程序中的字符串常量不会出现花括号。

【输入形式】

要检查的C源程序文件名为input.c,在当前目录下。

【输出形式】

向控制台输出花括号的最大嵌套层次数,并在新的一行上按出现的先后顺序输出花括号。

【样例输入】

假如当前目录下input.c文件的内容为:

#include <stdio.h>

main()
{
 int a,b,i,sum1,sum2;

/*{input}*/
 scanf("%d%d",&a,&b);

sum1=sum2=0;
 for(i=a;i<=b;i++)
 {
  if(i%2==0)
  {
   sum1+=i;
  }
  else
  {
   sum2+=i;
  }
 }
 /*{output}*/
 printf("Sum1=%d, Sum2=%d",sum1,sum2);
}

【样例输出】

3
{{{}{}}}

【样例说明】

源程序input.c中的花括号的最大嵌套层次为3,所以输出3。然后顺序输出出现的花括号(注释中的花括号应被忽略),即:{{{}{}}}。

【评分标准】

该题要求输出源程序中花括号的最大嵌套层次数及花括号序列,共有5个测试点。上传C语言文件名为exam3.c。

#include <cstdio>
#include <iostream>
#include <stack>
#include <algorithm>
using namespace std;
int main() {
    freopen("input.c", "r", stdin);
    char t;
    ];//储存答案
    stack<char> mystack;
    ;
    ;
    ;
    ;
    while (cin >> t) {
        if (t == '/')
            flag++;
         == ) {
            if (t == '{') {
                ans[len++] = '{';
                mystack.push(t);
                sum++;
            }
            else if (t == '}') {
                ans[len++] = '}';
                mystack.pop();
                sum--;
            }
        }
        max_sum = max(max_sum, sum);
    }
    ans[len] = '\0';
    cout << max_sum << endl;
    cout << ans;
    ;
}

C程序花括号嵌套层次统计(新)的更多相关文章

  1. PHP变量作用域(花括号、global、闭包)

    花括号 很多语言都以花括号作为作用域界限,PHP中只有函数的花括号才构成新的作用域. <?php if (True) { $a = 'var a'; } var_dump($a); for ($ ...

  2. 转:PHP变量作用域(花括号、global、闭包)

    花括号 很多语言都以花括号作为作用域界限,PHP中只有函数的花括号才构成新的作用域. 01 <?php 02 if (True) { 03     $a = 'var a'; 04 } 05   ...

  3. 代码优化之return 减少括号嵌套

    代码优化之return 减少括号嵌套   例如下面的公共方法 // 优化 substring方法   解决边界越界问题 空指针问题 优化前 public static String subString ...

  4. TCL 双引号和花括号的区别

    用了很一段时间的Modelsim,用TCL脚本仿真,开始注意起来它,看了些资料,有一个问题始终让我很困惑,那就是花括号 的用法,今天Google了一下,觉得有一点豁然了,记录一下.为了不让自己的翻译影 ...

  5. Python的精髓居然是方括号、花括号和圆括号!

    和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进.的确,缩进是Python语言的标志性特点,但这只是外在的.形式上的.从语言特性层面讲,Python的特点是什么呢?我尝试 ...

  6. 微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案

    场景:小程序页面有一个web-view组件,组件嵌套的H5页面,要唤起微信支付. 先讲一下我的项目,首先我是自己开发的一个H5触屏版的商城系统,里面含有购物车,订单支付等功能.然后刚开始,我们公众号里 ...

  7. PHP的大括号(花括号{})使用详解

    一.不管什么程序,function name(){}, for(){}, ….这太多了,不说也知道什么用了. 二.$str{4}在字符串的变量的后面跟上{}大括号和中括号[]一样都是把某个字符串变量当 ...

  8. C/C++中无条件花括号的妙用

    C/C++中无条件花括号可以形成一个代码块,一个作用域.可以使括号内定义的变量就只在本域(就是这个大括号)内有效,而且不会影响其他域,即使名字相同. 在花括号内,如果变量前面带类型,则相当于新创建一个 ...

  9. switch case语句里面不能定义对象,有语法错误,除非加一个花括号

    最近发现一个问题呢 发现在switch的case里面不能去定义对象了,一定义对象就会报错了 仔细了解了一下在C或者C++中,只要是在任何一对花括号 “{ }”中定义的对象,那么该对象的作用域就局限在这 ...

随机推荐

  1. SpringBoot全家桶

    前言 Spring简化了Java的开发,而SpringBoot简化了Spring.本文用SpringBoot采用分层的结构整合了filter,aspect,mybaits,logback,redis, ...

  2. CSS: Grid Layout Module

    Grid Layout The CSS Grid Layout Module offers a grid-based layout system, with rows and columns, mak ...

  3. Confluence 安装

    一.事前准备 1.jdk安装:5.8.10的jdk至少是7,其中7中还有很多官网是不建议的,这儿选中jdk-7u79 二.安装Confluence 双击atlassian-confluence-5.8 ...

  4. 使用lets encrypt证书加密

    1    git clone https://github.com/letsencrypt/letsencrypt 2     ./letsencrypt-auto certonly -d 域名

  5. ZooKeeper 学习资料积累

    跟着实例学习ZooKeeper的用法: 临时节点 跟着实例学习ZooKeeper的用法: 缓存 跟着实例学习ZooKeeper的用法: 队列 跟着实例学习ZooKeeper的用法: Barrier 跟 ...

  6. Weinre(pc调试手机页面)

         Weinre是一款基于Web Inspector(Webkit)的远程调试工具,借助于网络,可以在PC上直接调试运行在移动设备上的远程页面,中文意思是远程Web检查器,有了Weinre,在P ...

  7. HOG特征简述

    ---恢复内容开始--- 参考文献:http://blog.csdn.net/zouxy09/article/details/7929348 分为几步: 1)cell:有n×m个像素组成,计算每个像素 ...

  8. Git 中文教程

    以下内容转载自:http://www.open-open.com/lib/view/open1328928294702.html Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点 在于 ...

  9. HDU1575 Tr A

    解题思路:矩阵快速幂模板题,见代码: #include<cstdio> #include<cstring> #include<algorithm> using na ...

  10. 细说C语言的优先级和结合性

    Table0. 为什么要掌握优先级1. 优先级1.1 优先级图表1.2 运算符实例1.3 优先级顺口溜2. 结合性3. 参考资料 写代码的时候,常会翻看的一个表就是“c语言运算符优先级表”.c的运算符 ...