有关一个暗号解码的问题

输入
数字(ASCII码➕数字个)
字符(ASCII码)
输出
ASCII码➕数字个后分别对应的新ASCII码
(比如122的z➕6之后是33的!)
(这里ASCII码范围是32到126)


输入
10

[bbe"uMehbZv
输出
Hello, World!

img

img

img

img

代码仅供参考,谢谢!


#include<stdio.h>
#define N 10240
int putskeywords(const char *str, int num)
{
    int tmp;
    int intIndex[95];
    for(int i=32,j=0;i<127;i++,j++)
    {
        intIndex[j]=i;
    }
    
    for (int i = 0; str[i] != '\0' && str[i] != '\n'; i++)
    {
        tmp = str[i] + num;
        if (tmp > 31 && tmp < 127)
        {
            fprintf(stdout, "%c", tmp);
        }
        else if(tmp>126)
        {  
            fprintf(stdout, "%c", intIndex[(tmp-32) % 95]);
        }
        else
        {
            fprintf(stdout,"输入的字符序列超出范围!\n");
        }

    }
     return 0;
}

int main()
{
    int n;
    scanf("%d", &n);
    getchar();
    char str[N];
    puts("\n原字符序列:");
    fgets(str, sizeof(str) - 1, stdin);
    puts("\n处理后字符序列:");
    putskeywords(str, n);
    return 0;
}

#include<stdio.h>
int main()
{
    int n, i;
    scanf("%d", &n);
    getchar();
    char c[1024];
    gets(c);
    for (i = 0; c[i]; i++)
        printf("%c", c[i]+n);
    return 0;
}

解答如下

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    char t;
    while((t=getchar())!='\n')
        putchar(t+n);
    return 0;
}