社区讨论

#7自己下了数据跑了遍对着结果看觉得没错啊

P1098[NOIP 2007 提高组] 字符串的展开参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo2utcrh
此快照首次捕获于
2023/10/23 20:08
2 年前
此快照最后确认于
2023/11/02 11:40
2 年前
查看原帖
CPP
#include<stdio.h>
#include<string.h>
int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    char str[1000];
    scanf("%s", str);
    int len = strlen(str);
    printf("%c", str[0]);
    for (int i = 1; i < strlen(str) - 1; i++)
    {
        if (str[i] == '-' && str[i + 1] - str[i - 1] > 0 && str[i + 1] - str[i - 1] < 26)
        {
            if (str[i + 1] >= 'a')
            {
                switch (a)
                {
                case 1:
                    if (c == 1)
                    {
                        for (int j = str[i - 1] + 1; j < str[i + 1]; j++)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j);
                            }
                        }
                    }
                    else
                    {
                        for (int j = str[i + 1] - 1; j > str[i - 1]; j--)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j);
                            }
                        }
                    }
                    break;

                case 2:
                    if (c == 1)
                    {
                        for (int j = str[i - 1] + 1; j < str[i + 1]; j++)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j - 32);
                            }
                        }
                    }
                    else
                    {
                        for (int j = str[i + 1] - 1; j > str[i - 1]; j--)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j - 32);
                            }
                        }
                    }
                    break;

                case 3:

                    for (int j = str[i - 1] + 1; j < str[i + 1]; j++)
                    {
                        for (int k = 0; k < b; k++)
                        {
                            printf("*");
                        }
                    }


                    break;
                }

            }
            if (str[i - 1] >= '0' && str[i + 1] <= '9')
            {
                switch(a)
                {
                case 3:
                    for (int j = str[i - 1] + 1; j < str[i + 1]; j++)
                    {
                        for (int k = 0; k < b; k++)
                        {
                            printf("*");
                        }
                    }


                    break;
                default:
                    if (c == 1)
                    {
                        for (int j = str[i - 1] + 1; j < str[i + 1]; j++)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j);
                            }
                        }
                    }
                    else
                    {
                        for (int j = str[i + 1] - 1; j > str[i - 1]; j--)
                        {
                            for (int k = 0; k < b; k++)
                            {
                                printf("%c", j);
                            }
                        }
                    }
                    break;
                }
            }
        }
        else
        {
            printf("%c", str[i]);
        }
    }
    printf("%c", str[len-1]);
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...