qq_53065809 2021-05-11 08:41 采纳率: 88.9%
浏览 117
已采纳

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'代替。修 改程序并运行。

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-11 09:55
    关注

    你第三条要求中,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();

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧