C语言,编译密码怎么弄?

将"China"译成密码,密码规律是:用原来的字母后面第4个字母代替原来的 字母。例如,字母"A"后面第4个字母是"E",用"E"代替"A"。因此,"China"应 译为"Glmre"。请编一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分 别为'C,h,'i,'n'a'经过运算,使c1,c2,c3,c4,c5分别变为G,"','m',r','e'。分别用 putchar函数和printf函数输出这5个字符。 1)输人事先己编好的程序,并运行该程序。分析是否符合要求。 2)改变c1,c2,c3,c4,c5的初值为:T'o';d,'a,y'对译码规律做如下补充:W"用'A'代替,X'用B'代替,"Y用'C'代替,Z用D'代替。修改程序并运行。 3)将译码规律修改为:将一个字母被它前面第4个字母代替,列如E用'A' 代替.'Z'用U'代替,D'用Z代替,'C用Y'代替,B'用X'代替,'A'用"V'代替。修 改程序并运行。

你第三条要求中,A用V代替错了吧,应该用W吧。详细代码如下,望采纳,谢谢。

#include <stdio.h>

int main()
{
    char buf[8] = {0};    //保存输入的字符
    char buf2[8] = {0};   //保存转换后的字符--后4个字母
    char buf3[8] = {0};   //保存转换后的字符--前4个字母

    //从终端输入字符
    char c = 0;
    for (int i= 0; i < 5; i++)
    {
        if (c != 0x0A)
            printf("请输入第%d个字符:",i+1); //windows下敲击回车时,会有一个换行符输入
        
        //从终端输入字符
        c = getchar();
        
        if( (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')  )
            buf[i] = c;
        else if (c == 0x0A)
        {
            i--;
            continue; //windows下敲击回车时,会有一个换行符输入
        }else
        {
            printf("\n您输入的字符不在a-z 或 A-Z之间,请重新输入!\n");
            i--;
            continue;
        }
        //printf("\n");
        //转换为大写
        if(buf[i] >= 'a' && buf[i] <= 'z')
        {
            buf2[i] = buf[i] - 32;
            buf3[i] = buf[i] - 32;
        }
        else
        {
            buf2[i] = buf[i];
            buf3[i] = buf[i];
        }
        //转换为后4个字母
        if (buf2[i] >= 'A' && buf2[i] <= 'V')
        {
            buf2[i] = buf2[i] + 4;
        }else
            buf2[i] = 'A' + (buf2[i] - 'V' - 1);

        //前向转换
        if(buf3[i] >= 'E' && buf3[i] <= 'Z')
            buf3[i] = buf3[i] - 4;
        else
            buf3[i] = 'W' + (buf3[i] - 'A');

    }
    

    printf("使用putchar输出:\n");
    printf("  >>原始输入:");
    for(int i = 0; i < 5;i++)
        putchar(buf[i]);
    printf("\n  >>后向调整后字符:");
    for(int i = 0; i < 5;i++)
        putchar(buf2[i]);
    printf("\n  >>前向调整后字符:");
    for(int i = 0; i < 5;i++)
        putchar(buf3[i]);

    printf("\n使用pritnf输出:\n");
    printf("  >>原始输入:%s\n",buf);
    printf("  >>后向调整后字符:%s\n",buf2);
    printf("  >>前向调整后字符:%s\n",buf3);

    //
    getchar();
    getchar();

}

讲个思路你自己写一写吧。首先就是要看下ascii表,A=65,a=97,而C语言中的字符串是char数组,也就是说遍历这个数组就可以得到每个字符对应的ascii值,用ascii先判断大小写,比如结果是大写,那么减去65(字符A),就可以得到这个字符在字母表中的位置,比如说X为88-65=23,那么加密过程就是加上4之后对26求余,(23+4)%26=1,1+65=66,也就是说X加密之后变成了B。解码过程相反,一样要先获取字母表中的位置,然后减去4.B在字母表中为1,1-4=-3,-3%26=23(负数求余,不懂可以百度下),65+23=88=X。