⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2389599_ac_0ms_108k.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
#include <stdio.h>
#include <string.h>

char ali[80];
char item[80];
int len[80];
int n, no;
typedef struct Node
{
	char str[80];
}Str;

struct node
{
	Str str[80];
}con[80];

void input()
{
	int i, j, L, k, t, tt;
	int sum, end, max;
	char tmp[80], tali[80];

	scanf("%s",ali);
	getchar();
	end = 0;
	while(1)
	{
		if(end)
			return ;
		no = 1;sum = 0;
		n = strlen(ali);
		gets(item);
		t = n-1;
		for(i = strlen(item)-1; i >= 0; i--)
			if(item[i]=='&')
			{
				strcpy(con[0].str[t--].str,&item[i+1]);
				item[i] = '\0';
			}
		strcpy(con[0].str[0].str,item);
		while(gets(tmp)!=NULL)
		{
			if(tmp[0]=='*')
			{
				end = 1;
				break;
			}
			if(tmp[0]=='='||tmp[0]=='<'||tmp[0]=='>')
			{
				strcpy(tali,tmp);
				break;
			}
			t = n - 1;
			for(i = strlen(tmp)-1; i >= 0; i--)
				if(tmp[i]=='&')
				{
					strcpy(con[no].str[t--].str,&tmp[i+1]);
					tmp[i] = '\0';
				}
			strcpy(con[no].str[0].str,tmp);
			no++;
		}
		for(i = 0; i < n; i++)
		{
			max = -1;
			for(j = 0; j < no; j++)
			{
				L = strlen(con[j].str[i].str);
				if(L>max)
					max = L;
			}
			len[i] = max;
			sum += max;
		}
		sum += n*3-1;
		printf("@");
		for(i = 0; i < sum; i++)
			printf("-");
		printf("@\n");
		for(i = 0; i < no; i++)
		{
			printf("|");
			for(j = 0; j < n; j++)
			{
				tt = strlen(con[i].str[j].str);
				printf(" ");
				if(ali[j]=='>')
				{
					for(k = 0; k < len[j]-tt; k++)
						printf(" ");
					printf("%s",con[i].str[j].str);
				}
				else
					if(ali[j]=='<')
					{
						printf("%s",con[i].str[j].str);
						for(k = 0; k < len[j]-tt; k++)
							printf(" ");
					}
					else
					{
						for(k = 0; k < (len[j]-tt)/2; k++)
							printf(" ");
						printf("%s",con[i].str[j].str);
						for(k = 0; k < (len[j]-tt+1)/2; k++)
							printf(" ");
					}
				printf(" |");
			}
			printf("\n");
			if(!i)
			{
				printf("|");
				for(i = 0; i < n; i++)
				{
					for(j = 0; j < len[i]+2; j++)
						printf("-");
					if(i!=n-1)
						printf("+");
				}
				printf("|\n");
				i = 0;
			}
		}
		printf("@");
		for(i = 0; i < sum; i++)
			printf("-");
		printf("@\n");
		strcpy(ali,tali);
	}
}

int main()
{
	input();
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -