题目链接:点击打开链接
就是模拟,
比赛的时候心态急躁,导致很多简单题都A不了。。。T^T。。。
易错点:
1、对两个连续'-'的考虑。
2、第一个字符无论是什么都直接输出,不然后面判断时数组越界会WA。
3、养成数组清零的好习惯。
#include<cstdio>
#include<iostream>
#include<cctype>
#include<cstring>
using namespace std;
char s[120];
int main()
{
int a1,a2,a3;
while(scanf("%d%d%d",&a1,&a2,&a3)!=EOF)
{
memset(s,0,sizeof(s));
scanf("%s",s);
int len=strlen(s);
putchar(s[0]);
for(int i=1;i<len;i++)
{
if(s[i]!='-')
putchar(s[i]);
else
{
if(isdigit(s[i-1])&& isalpha(s[i+1])||(isalpha(s[i-1])&&isdigit(s[i+1])))
putchar(s[i]);
else if(isdigit(s[i-1])&& isdigit(s[i+1]) && s[i-1]>=s[i+1])
putchar(s[i]);
else if(isalpha(s[i-1])&& isalpha(s[i+1]) && s[i-1]>=s[i+1])
putchar(s[i]);
else if(s[i-1]=='-'||s[i+1]=='-')
putchar(s[i]);
else
{
if(a1==3)
{
for(int k=s[i-1]+1;k<s[i+1];k++)
{
for(int j=1;j<=a2;j++)
putchar('*');
}
}
else if(a1==1)
{
if(a3==1)
{
for(int k=s[i-1]+1;k<s[i+1];k++)
{
for(int j=1;j<=a2;j++)
{
putchar(k);
}
}
}
else
{
for(int k=s[i+1]-1;k>s[i-1];k--)
{
for(int j=1;j<=a2;j++)
{
putchar(k);
}
}
}
}
else
{
if(a3==1)
{
for(int k=s[i-1]+1;k<s[i+1];k++)
{
for(int j=1;j<=a2;j++)
{
if(isalpha(s[i-1]))
{
char c=k-'a'+'A';
putchar(c);
}
else putchar(k);
}
}
}
else
{
for(int k=s[i+1]-1;k>s[i-1];k--)
{
for(int j=1;j<=a2;j++)
{
if(isalpha(s[i-1]))
{
char c=k-'a'+'A';
putchar(c);
}
else putchar(k);
}
}
}
}
}
}
}
putchar('\n');
}
return 0;
}