2020牛客寒假算法基础集训营5.C——C语言IDE超级大模拟
Posted Nirvana柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020牛客寒假算法基础集训营5.C——C语言IDE超级大模拟相关的知识,希望对你有一定的参考价值。
题目传送门
题目描述
牛牛战队有一门课程叫做软件工程综合实践,这门课要求大家写一个简单的C语言的IDE。牛牛战队已经十分熟悉gcc的相关命令,也知道gdb的调试命令,再借助QT自带的代码亮壳文字框,就很快的把主要功能完成了。现在他们想多做一些创新功能,来获得更高的分数。
他们想到,在很多编译器中,都有查看现在所有函数的功能,如下图所示:
在这个框的左侧,列出了所有的函数和参数列表。现在牛牛战队的成员也想实现这个功能,请你帮帮他吧。
输入描述:
输入将给出一个在C99标准下可以正常编译运行的C语言代码,同时此份代码具有以下约束:
- 除引用头文件外,没有其他的编译预处理部分,如:#if,#ifdef,#ifndef,#else,#elif,#endif,#define,#undef,#error,#pragma,_Pragma,#line等。
- 所有的函数的参数与返回值内不会出现任何形式的数组类型,如:char a[]等,如果有指针,保证指针的一定紧跟在类型名后,如char*,long long*等。保证不会出现函数指针。
- 由单引号修饰的字符不可能是,,(,),或"。
- 由双引号修饰的字符串内一定不包含,,(,),‘或",也不包含’/’,’/’,’//的子串。
- 不会出现函数内嵌套函数的情况。
- 不会在/*/内出现/*/的嵌套结构。
- 不会把一句代码拆成两行写。
- main函数的返回值一定是int类型。当一个函数没有返回值时,一定有前置void标识。
- 程序内不会出现const标识符。
输入数据大小保证小于10KB。
输出描述:
按照以下的格式一行输出一个代码中出现的函数,你可以以任意顺序输出各个函数,每个函数仅可被输出一次。
返回类型名(包括void) 函数名(参数1类型,…,参数n类型)
类型里如有空格,每处最多保留一个空格。
输入
#include <stdio.h>
int plus(int a, int b)
return a + b;
int main()
int a,b;
scanf("%d%d", &a, &b);
printf("%d\\n", plus(a, b));
return 0;
输出
int plus(int,int)
int main()
题解
- emmm,模拟就完了
AC-Code
#include<bits/stdc++.h>
bool P, O, U, S, e;
char s[1 << 17], T[1 << 17], A[1 << 17], c;
int B, C, M, L, N, i, I;
int main()
while (~(c = getchar())) s[N++] = c;
for (i = 0; i < N; ++i)
if (P)
if (s[i] == \\n) P = O = 0;
else if (O)
if (s[i] == \\n) O = 0;
else if (U)
if (s[i] == * && s[i + 1] == /)
U = 0; ++i;
else if (L)
if (s[i] == )++L;
if (s[i] == )--L;
else
if (s[i] == #)P = 1;
else if (s[i] == / && s[i + 1] == /) O = 1, ++i;
else if (s[i] == / && s[i + 1] == *) U = 1, ++i;
else if (s[i] == ) ++L;
else T[B++] = s[i];
if (s[i] == )
for (S = I = 0; I < B; ++I)
if (S)
if (T[I] == )) S = 0;
A[C++] = T[I];
if ((isspace(A[C - 2]) || A[C - 2] == , || A[C - 2] == () && isspace(A[C - 1])) --C;
if (T[I] == , || T[I] == ))
e = 0;
while (A[C - 1] != ( && !(e && isspace(A[C - 1])))
if (isalpha(A[C - 1]))e = 1; A[C - 1] = 0, --C;
if (isspace(A[C - 1])) --C;
A[C++] = T[I];
else
A[C++] = T[I];
if (isspace(A[C - 1]) && isspace(A[C - 2])) --C;
if (C == 1 && isspace(A[0])) --C;
if (T[I] == ()
while (isspace(A[C - 2])) A[C - 2] = A[C - 1], --C;
S = 1;
while (isspace(A[C - 1])) A[--C] = 0;
if (strlen(A) > 4 && strchr(A, () != NULL) puts(A);
C = 0, memset(A, 0, 64);
if (s[i] == || s[i] == ;) B = 0, memset(T, 0, 64);
以上是关于2020牛客寒假算法基础集训营5.C——C语言IDE超级大模拟的主要内容,如果未能解决你的问题,请参考以下文章