我知道我写的逻辑有点混乱,整体过于臃肿,但是我是打算ac了之后慢慢优化的......
VS运行截图如下:
代码如下:
#include<stdio.h>
int main()
{
int p1, p2, p3;
scanf("%d%d%d", &p1, &p2, &p3);
char a[100] = { '0' };
scanf("%s", a);
for (int i = 0; a[i]; i++)
{
int flag = 0;
if (a[i] == '-')
{
if ((int)a[i + 1] > (int)a[i - 1])
{
if (((int)a[i + 1] - 48) * (57 - (int)a[i + 1])>=0 && ((int)a[i - 1] - 48) * (57 - (int)a[i - 1]) >= 0) { flag = 1; }
if (((int)a[i + 1] - 97) * (122 - (int)a[i + 1]) >= 0 && ((int)a[i - 1] - 97) * (122 - (int)a[i - 1]) >= 0) { flag = 2; }
if (!flag)
{
printf("-");
continue;
}
if (p1 == 3)
{
for (int k = (int)a[i - 1] + 1; k < (int)a[i + 1]; k++)
for (int j = 0; j < p2; j++)
printf("*");
}
if (flag == 2)
{
if (p3 == 1)
{
if (p1 == 1)
{
for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
for (int j = 0; j < p2; j++)
printf("%c", k | 32);
}
if (p1 == 2)
{
for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
for (int j = 0; j < p2; j++)
printf("%c", k & 95);
}
}
if (p3 == 2)
{
if (p1 == 1)
for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
for (int j = 0; j < p2; j++)
printf("%c", k | 32);
if (p1 == 2)
for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
for (int j = 0; j < p2; j++)
printf("%c", k & 95);
}
}
if (flag == 1)
{
if (p3 == 1)
{
for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
for (int j = 0; j < p2; j++)
printf("%c", k);
}
if (p3 == 2)
{
for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
for (int j = 0; j < p2; j++)
printf("%c", k);
}
}
}
else
{
printf("-");
continue;
}
}
else
printf("%c", a[i]);
}
return 0;
}