bestainan 发表于 2013-11-16 13:50:08

friendan 发表于 2013-11-16 13:50:09

本帖最后由 friendan 于 2013-11-16 15:29 编辑

效果截图:

思路请看以下的代码提示:
void main ()
{
        //a b c d...w x y z
        //w+4结果是a
        //x+4结果是b
        //y+4结果是c
        //z+4结果是d

        //ASCII码+4
        char c='a';
        printf("a的ASCII加4结果为:%c\n",c+4);
}

庚午 发表于 2013-11-16 15:43:27

占位置 等我想明白了在来回复你

盖世鸭王 发表于 2013-11-16 16:04:41

{:5_109:}o o ,这个和数组摸你队列有点像
代码如下
#include<stdio.h>
void main ()
{
      //a b c d...w x y z
      //w+4结果是a
      //x+4结果是b
      //y+4结果是c
      //z+4结果是d

      //ASCII码+4
      char c='a';
                c=(c-97+4)%(123-97)+97;
      printf("a的ASCII加4结果为:%c\n",c);
                getchar();
}

盖世鸭王 发表于 2013-11-16 16:06:56

比较匆忙,计算式有点粗糙,不过这样应该比较好理解,超出的部分用%计算出来再加回到97上,当不超过1的时候则保持原样

盖世鸭王 发表于 2013-11-16 16:10:40

重点就是 c=(c-97+4)%(123-97)+97;这一条
当码没有超过字母范围的时候,取余为自己本身,吵过之后课求得大于97的部分,再加到97上就OK
还有就是你说的字符型的假发是可以的,细枝末节就自己试试就好了啊{:5_109:}

Ez疯 发表于 2013-11-16 16:34:13

那个是加密文件吧?那也有其它办法的,不过针对你这个问题,你可以写一个条件语句,如果字母大于多少则反减,或者直接转变成前四个字母,总之你把最后的字母倒到前面四个就行,或跳转GOTO,或者FOR语句,或者直接减一个大数!答案仅供参考!

夏七夕 发表于 2013-11-17 14:26:35

%来表示就好了

565123 发表于 2013-11-17 19:47:29

#include <stdio.h>

int main(void) {

      char c = 'w';

      printf("%c加四位为%c", c, c >= 'w' ? c - 22 : c + 4);

      return 0;
}

风のQ 发表于 2013-11-20 11:25:16

你说这个应该是密码学中的凯撒密码吧。
这里面的字母是循环的。
比如
Z + 1 = A
Z + 2 = B
A -1 = Z
B -2 = Z
其他同理, 可以按着这个思路去写写.
页: [1]
查看完整版本: 小甲鱼 c语言 22集 的题