比赛 暑假培训一 评测结果 AAAAAWAAAA
题目名称 字符串的展开 最终得分 90
用户昵称 sezbz 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2008-07-17 11:36:27
显示代码纯文本
#include <stdio.h>
#include <string.h>

#define maxn 110

int p1,p2,p3;
char s[maxn],ins[maxn][maxn*5];
FILE *f1,*f2;

void run(void)
{
	int i,p,len,zan,l;
	char j;
	len=strlen(s);
	zan=-1;
	for (i=0;i<len;i++)
		if (s[i]=='-')
			if (s[i-1]<s[i+1])
				if ((s[i-1]>='0' && s[i-1]<='9' && s[i+1]>='0' && s[i+1]<='9' )|| 
				(s[i-1]>='a' && s[i-1]<='z' && s[i+1]>='a' && s[i+1]<='z'))
				{
					zan++;
					l=0;
					for (j=s[i-1]+1;j<s[i+1];j++)
						for (p=0;p<p2;p++)
							if (p1==3)
							{
								ins[zan][l++]='*';
							}
							else
							{
								if (s[i-1]>='a' && s[i+1]<='z' && p1==2)
								{
									ins[zan][l++]=j+'A'-'a';
								}
								else
								{
									ins[zan][l++]=j;
								}
							}							
				}
}

void ini(void)
{
	char c;
	fscanf(f1,"%d%d%d",&p1,&p2,&p3);
	fscanf(f1,"%s",&s);
	c=s[strlen(s)-1];
	if ((c <'a' || c>'z') && (c<'0' || c>'9'))
		s[strlen(s)-1]=0;
}

void print(void)
{
	int i,j,len,zan;
	len=strlen(s);
	//处理p3
	zan=-1;
	for (i=0;i<len;i++)
	{
		if (s[i]=='-')
			if (s[i-1]<s[i+1])
				if ((s[i-1]>='0' && s[i-1]<='9' && s[i+1]>='0' && s[i+1]<='9' )|| 
				(s[i-1]>='a' && s[i-1]<='z' && s[i+1]>='a' && s[i+1]<='z'))
				{
					zan++;
					if (p3==1)
					{
						fprintf(f2,"%s",ins[zan]);
					}
					else
					{
						for (j=strlen(ins[zan])-1;j>=0;j--)
							fprintf(f2,"%c",ins[zan][j]);
					}
					continue;
				}
		fprintf(f2,"%c",s[i]);
	}
}

int main(void)
{
	f1=fopen("expand.in","r");
	f2=fopen("expand.out","w");
	ini();
	run();
	print();
	fclose(f1);fclose(f2);
	return 0;
}