L3-019 代码排版 (30 分) 别看 没改完

太复杂了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
不做了
在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;
string s;
bool flag[150];
int main()
{
	getline(cin,s);
	int l=s.length();
	int a=0;
	while(s[a]!='{')
	{
		printf("%c",s[a]);
		a++;
	}
	printf("\n{\n");
	a++;//s[a]!='{'
	while(s[a]==' ')a++;
	int num=1;
	flag[num]=1;
	while(a<l)
	{
		if(s[a]=='}')
		{
			num--;
			for(int i=0;i<num;i++)printf("  ");
			printf("}\n");
			a++;
			while(s[a]==' ')a++;
			continue;
		}
		for(int i=0;i<num;i++)printf("  ");
		if(s[a]=='f'&&s[a+1]=='o'&&s[a+2]=='r')//for
		{
			printf("for (");
			while(s[a]!='(')a++;
			a++;
			while(s[a]!=')')printf("%c",s[a++]);
			a++;
			printf(") {\n");num++;
			while(s[a]==' ')a++;
			if(s[a]=='{')
			{
				flag[num]=1;
				a++;
				while(s[a]==' ')a++;
			}
		}
		else if(s[a]=='w'&&s[a+1]=='h'&&s[a+2]=='i')//while
		{
			printf("while (");
			while(s[a]!='(')a++;
			a++;
			while(s[a]!=')')printf("%c",s[a++]);
			a++; 
			printf(") {\n");
			num++;
			while(s[a]==' ')a++;
			if(s[a]=='{')
			{
				flag[num]=1;
				a++;
				while(s[a]==' ')a++;
			}
		}
		else if(s[a]=='i'&&s[a+1]=='f')//if
		{
			printf("if (");
			while(s[a]!='(')a++;
			a++;
			while(s[a]!=')')printf("%c",s[a++]);
			a++;
			printf(") {\n");num++;
			while(s[a]==' ')a++;
			if(s[a]=='{')
			{
				flag[num]=1;
				a++;
				while(s[a]==' ')a++;
			}
		}
		else if(s[a]=='e'&&s[a+1]=='l'&&s[a+2]=='s'&&s[a+3]=='e')//else if||else
		{
			printf("else {\n");
			num++;
			a+=4;
			while(s[a]==' ')a++;
			if(s[a]=='{')
			{
				flag[num]=1;
				a++;
				while(s[a]==' ')a++;
			}
		}
		else
		{
			while(s[a]!=';')printf("%c",s[a++]);
			printf("%c\n",s[a++]);
			while(s[a]==' ')a++;
			while(!flag[num])
			{
				flag[num]=0;
				num--;
				for(int i=0;i<num;i++)printf("  ");
				printf("}\n");
			}
		}
	}
	return 0;
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值