SDUSToj第十一次作业源代码格式问题
Problem I: 源代码的格式
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 1471 Solved: 634
[Submit][Status][Web
Board]
Description
- 程序 ::= 代码块
- 代码块 ::= '{' 声明集 '}'
- 声明集 ::= 声明 | 声明 声明集
- 声明 ::= 语句 ';'
- 语句 ::= 标识符 ['(' 参数 ')'] [代码块]
- 参数 ::= 声明 | 声明 ',' 参数
合理的TRIVIAL程序的格式还应当包括下面几点:
- 没有空行。
- 不得使用制表符。
- 文件开头的第一个字符应当是左花括号“{”(之前没有花括号),文件的最后一个字符应当是右花括号“}”(后面没有花括号)。
- 每行前面都有4N个空格,N为缩进量。
- 第一行和最后一行的缩进量为0.
- 组成的代码块的行和被附上花括号“{”……“}”缩进量加一个级别。
- 一行中,除在左花括号“{”和逗号“,”之后可以出现一个空格外,不得出现其他的空格。
- 除最后一行外,每一行以分号“;”和左括号“{”结尾。这些字符不能在一行的中间或开头(包括最后一行)出现。
- 右花括号“}”只能在一行开头的缩进空格之后出现。
参见样例输出中一个格式合理的TRIVIAL程序代码。
Input
输入包含合法的TRIVAL程序代码。每组数据不会超过2000字节。
Output
输出输入中给出的TRIVAL代码的合理格式。
Sample Input
;};Main { repeat { set ( n,input ( int ) ) ; for ( int ( i,0 ) , lt ( i,n ) , inc ( i ) ) { print ( mult ( n,n ) ) ; }; };}; }
Sample Output
for(int(i, 0), lt(i, n), inc(i)) { print(mult(n, n)); }; }; };}
一看可能有点不好做,其实,,,
主要思路,用一个长字符串保存下来剔掉空白符的代码,然后对格式进行转换就是了,注意是空白符不是空格,我开始用空格死活不对,下面是我的代码,简单暴力
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char a, s2[2005];
int i,j,num = 0, st = 0;
while((a = getchar()) != EOF)
if(!isspace(a))
s2[st++] = a;
for(i = 0; i < st; i++)
{
if(s2[i] == '{')
{
if(num == 0)
printf("{\n");
else
printf(" {\n");
num++;
for(j = 0; j < num; j++)
printf(" ");
}
else if(s2[i] == ',')
printf(", ");
else if(s2[i] == ';')
{
printf(";\n");
for(j = 0; j < num - 1; j++)
printf(" ");
if(s2[i + 1] != '}')
printf(" ");
}
else if(s2[i] == '}')
{
num--;
printf("}");
if(num == 0 && i != st - 1)
printf("\n");
}
else
printf("%c", s2[i]);
}
return 0;
}
SDUSToj第十一次作业源代码格式问题的更多相关文章
- 2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践
<网络攻防技术与实践>第十一周作业 SQL注入攻击与实践 1.研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理 在计算机内部,输入数据通常被存放在一个临时空间内, ...
- 软工 · 第十一次作业 - Alpha 事后诸葛亮(团队)
软工 · 第十一次作业 - Alpha 事后诸葛亮(团队) 组长本次作业链接 现代软件工程 项目Postmortem 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场 ...
- 实验十一 团队作业7:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 实验时间 2019-6-6 Deadline: 2019-6-12 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 – ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十一周作业
<Linux内核原理与分析>第十一周作业 一.本周内容概述: 学习linux安全防护方面的知识 完成实验楼上的<ShellShock 攻击实验> 二.本周学习内容: 1.学习& ...
- 1903021121-刘明伟-java十一周作业-java面向对象编程
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...
- 第十三次作业——回归模型与房价预测&第十一次作业——sklearn中朴素贝叶斯模型及其应用&第七次作业——numpy统计分布显示
第十三次作业——回归模型与房价预测 1. 导入boston房价数据集 2. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示. 3. 多元线性回归模型,建立13个变量与房价之间的预测模 ...
- 福大软工 · 第十一次作业 - Alpha 事后诸葛亮(团队)
福大软工·第十一次作业-Alpha事后诸葛亮 组长博客链接 本次作业博客链接 项目Postmortem 模板 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描 ...
- 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结
作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...
- 实验十一 团队作业7—团队项目设计完善&编码测试
实验十一 团队作业7—团队项目设计完善&编码测试 实验时间 2018-6-8 Deadline: 2018-6-20 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 ...
随机推荐
- python HTTP 状态码
404 Not Found 在HTTP请求的路径无法匹配任何RequestHandler类相对应的模式时返回404(Not Found)响应码. 400 Bad Request 如果你调用了一个没有默 ...
- JavaScript中的小陷阱(不定期更新。。)
1. var scores = [1, 2, 3]; var total = 0; for (var score in scores) { total += score; } var mean = t ...
- unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计
unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计 最近做玩票性质的游戏项目,客户端技术是 unity3d 和 android. ...
- 把一个HashMap的值全部取出来,放到两个数组中
先是从数据库中获取所有的值,返回一个HashMap类型的数据: <pre name="code" class="java"> private Has ...
- 如何在github中的readme.md加入项目截图
1. 先在之前的本地项目文件夹里创建一个存放截图的文件夹.(如img文件夹) 2. 将新增的内容通过github desktop上传到github中 3. 在github中立马能看到刚刚上传的图片,打 ...
- UML的九种模型图
本文转自UML 的九种模型图,仅供学习交流! 一.作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML语义:描述基于UML的精确元模型定义. UML表示法:定义UML符号的表示 ...
- python之map,zip,reduce,filter的用法
1.reduce(func,iterable,initial): 参数: - func 可执行函数 - iterable 可迭代对象 - initial 可选,初始参数 功能描述:调用func函数后, ...
- Struts功能详解 ——ActionServlet
ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax.servlet.http.HttpServlet类.Struts的启动通常从 加载ActionServlet开始 ...
- BandwagonHost 5个数据中心/机房Ping速度测试亲自体验
我们选择Bandwagonhost服务器的原因之一在于有5个数据中心,而且与众多其他VPS不同之处在于可以自己后台切换机房和IP,这样我们 在遇到不满意的速度时候,可以自己切换其他机房更换,而且对于有 ...
- 5分钟部署一个Hello World Servlet到CloudFoundry
首先从我的Github下载我写好的hello world Servlet到本地. 安装Maven,然后执行命令行mvn clean install,确保build成功,在项目根目录的target文件夹 ...