当前位置: 首页 > article >正文

大模拟训练计划

Markdown编辑器
第十一次CCF-CSP计算机软件能力认证

题目传送门

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

string get(string t)
{
	int pos = 1;
	while (t[pos] == ' ') pos ++ ;
	string res;
	int sz = t.size();
	while (pos < sz) res += t[pos], pos ++ ;
	return res;
}

int find(string str, string t)
{
	int sz = str.size();
	for (int i = 0; i < sz; i ++ )
		if (str[i] == t[0])
			return 0;
	return -1;
}

void change1(string& t)
{
	while (find(t, "_") != -1)
	{
		int pos = 0;
		while (t[pos] != '_') pos ++ ;
		t.erase(pos, 1);
		t.insert(pos, "<em>");
		pos = 0;
		while (t[pos] != '_') pos ++ ;
		t.erase(pos, 1);
		t.insert(pos, "</em>");
	}
}

void change2(string& t)
{
	while (find(t, "[") != -1)
	{
		int pos = 0, st, ed;
		while (t[pos] != '[') pos ++ ;
		st = pos;
		string res = "<a href=\"";
		string Text, Link;
		pos ++ ;
		while (t[pos] != ']') Text += t[pos], pos ++ ;
		pos += 2;
		while (t[pos] != ')') Link += t[pos], pos ++ ;
		ed = pos;
		t.erase(st, ed - st + 1);
		t.insert(st, res + Link + "\">" + Text + "</a>");
	}
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	
	string t;
	while (getline(cin, t))
	{
		while (!t.size())
			if (!getline(cin, t)) return 0;
		
		change1(t), change2(t);
		if (t[0] == '#')
		{
			int sz = t.size();
			int pos = 1;
			int cnt = 1;
			while (t[pos] == '#') pos ++, cnt ++ ;
			while (t[pos] == ' ') pos ++ ;
			string res = "";
			while (pos < sz) res += t[pos], pos ++ ;
			cout << "<h" << cnt << '>' << res << "</h" << cnt << ">\n";
			if (!getline(cin, t)) return 0;
		}
		else if (find(t, "#") == -1 && find(t, "*") == -1)
		{
			cout << "<p>" << t;
			if (!getline(cin, t)) return cout << "</p>\n", 0;
			if (t.size()) cout << '\n';
			while (t.size())
			{
				change1(t), change2(t);
				cout << t;
				if (!getline(cin, t)) return cout << "</p>\n", 0;
				if (t.size()) cout << '\n';
			}
			cout << "</p>\n";
		}
		else if (t[0] == '*')
		{
			cout << "<ul>\n";
			string str = get(t);
			cout << "<li>" << str << "</li>\n";
			if (!getline(cin, t)) return cout << "</ul>\n", 0;
			while (t.size())
			{
				change1(t), change2(t);
				str = get(t);
				cout << "<li>" << str << "</li>\n";
				if (!getline(cin, t)) return cout << "</ul>\n", 0;
			}
			cout << "</ul>\n";
		}
	}
	
	return 0;
}

http://www.kler.cn/news/361235.html

相关文章:

  • vivado 采用 SSI 器件进行设计
  • jetson nano ubuntu20.04安装ros-Noetic
  • 互联网人口红利趋缓下的社群粉丝经济新模式探索
  • Unity发送Http
  • python 文件防感染扫描
  • 【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)
  • tsconfig.json 内容解读
  • 解决“程序包com.alibaba.fastjson不存在”的错误 (导入瑞吉外卖项目)
  • 深入解析 Go 语言接口:多接口实现与接口组合的实际应用
  • 在 Vue 3 中实现电子签名组件
  • C语言初阶小练习4(不用临时变量交换数值)
  • Ubuntu(22.04)本地部署Appsmith
  • Flink Taskmanager 内存模型详解
  • 大数据新视界 --大数据大厂之大数据与区块链双链驱动:构建可信数据生态
  • Android EditText调起键盘,阻止Recyclerview调整大小方法
  • 【Python】Playwright:环境配置与自动生成代码
  • 一、rpm命令,二、yum命令
  • 力扣——用栈实现队列(C语言)
  • CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程
  • Redis 哨兵与集群:高可用与可扩展的解决方案
  • 2.3 朴素贝叶斯(基础分类)
  • C语言数据结构之双向链表(LIST)的实现
  • 独立构件风格
  • 二分图染色法
  • 帝国CMS – AutoTitlePic 自动生成文章标题图片插件
  • Centos7 安装 Openssl 和 Nginx