鱼C论坛

 找回密码
 立即注册
查看: 3499|回复: 10

求助!!C语言作业!

[复制链接]
发表于 2018-10-22 22:11:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
从键盘任意输入五个字母,然后每个字母加密的时候用它后面第四个字母替换,如输入字母a就换成字母e,但是如果输入字母w就要换成字母a,就要换成b,以此类推
要求使用 if 和 else语句!!!
把中间的字符去掉!怎么弄呀!求助!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-10-22 22:24:56 | 显示全部楼层
用 while( (c = getchar()) ... ),然后 if else 就好啦~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 13:44:32 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<iostream>
  3. using namespace std;

  4. char Lockalpha(char alpha)
  5. {
  6.         int ascII = (int)alpha;
  7.         //输入是大写字母
  8.         if (ascII >= 65 && ascII <= 90)
  9.         {
  10.                 ascII = (ascII - 65 + 4) % 26 + 65;
  11.                 return (char)ascII;
  12.         }
  13.         //输入是小写字母
  14.         else if(ascII>=97 && ascII<=122)
  15.         {
  16.                 ascII = (ascII - 97 + 4) % 26 + 97;
  17.                 return (char)ascII;
  18.         }
  19.         //输入的不是字母,返回‘F’
  20.         else
  21.         {
  22.                 return 'F';
  23.         }
  24. }

  25. int main()
  26. {
  27.         char alpha[5];
  28.         char ch;
  29.         for (int i = 0; i < 5; i++)
  30.         {
  31.                 cin >> ch;
  32.                 alpha[i] = Lockalpha(ch);
  33.         }
  34.         for (int i = 0; i < 5; i++)
  35.         {
  36.                 cout << alpha[i];
  37.         }
  38.         system("pause");
  39. }
复制代码

c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码,小写字母的ascII是97-122,先减去97在加4.之后用26取余就能得到加密后的字母在字母表中的位置,再加上97后转换成字符就能得到加密后的数字。
在主函数调用这个函数就行了。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
anlong + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-10-23 13:47:12 | 显示全部楼层
Mountain_gs 发表于 2018-10-23 13:44
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码, ...

如果输入的不是字符那个地方不能返回‘F’,会和B的返回值一样。改成随意一个不是字母的字符就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 14:20:41 | 显示全部楼层
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i;
  5.     char ch;
  6.     printf("Please enter five letters:");
  7.     for(i = 0; i < 5; i++)
  8.     {
  9.         ch = getchar();
  10.         //检测输入是否为字母
  11.         if((ch >= 'a')&&(ch <= 'z')||(ch >= 'A')&&(ch <= 'Z'))
  12.         {
  13.             //小写情况
  14.             if(ch == 'w')
  15.                 printf("a");
  16.             else if(ch == 'x')
  17.                 printf("b");
  18.             else if(ch == 'y')
  19.                 printf("c");
  20.             else if(ch == 'z')
  21.                 printf("d");
  22.             //大写情况
  23.             else if(ch == 'W')
  24.                 printf("A");
  25.             else if(ch == 'X')
  26.                 printf("B");
  27.             else if(ch == 'Y')
  28.                 printf("C");
  29.             else if(ch == 'Z')
  30.                 printf("D");
  31.             //其他字母
  32.             else printf("%c",ch + 4);
  33.         }
  34.         else printf("");
  35.     }
  36.     return 0;
  37. }
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
anlong + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 14:23:48 | 显示全部楼层
代码在上面,应该能满足需求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 16:35:37 | 显示全部楼层

for(i = 0; i < 5; i++)不合适,输入5个空格的话直接就没有输出了,要求是替换5个字母并把中间的非字母去掉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 16:37:40 | 显示全部楼层
本帖最后由 pheron 于 2018-10-25 17:46 编辑

理论上可行,并没实际调试,大量使用if else
  1. #include<stdio.h>

  2. int main(void)
  3. {
  4.         char ch;
  5.         int i = 0;
  6.        
  7.         while(i < 5)
  8.         {
  9.                 ch = getchar();
  10.                 if('A'<ch && ch<'Z')
  11.                 {
  12.                         if(ch+4 > 'Z')
  13.                                 putchar(ch+4-26);
  14.                         else
  15.                                 putchar(ch+4);
  16.                        
  17.                         i++;
  18.                 }
  19.                 else if('a'<ch && ch<'z')
  20.                 {
  21.                         if(ch+4 > 'z')
  22.                                 putchar(ch+4-26);
  23.                         else
  24.                                 putchar(ch+4);
  25.                        
  26.                         i++;
  27.                 }
  28.                 else
  29.                         ;
  30.         }
  31.         printf("\n");
  32.         return 0;
  33. }
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
anlong + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 17:46:30 | 显示全部楼层
pheron 发表于 2018-10-23 16:35
for(i = 0; i < 5; i++)不合适,输入5个空格的话直接就没有输出了,要求是替换5个字母并把中间的非字母 ...

若输入5个空格,按题意不应该没有输出才合乎要求吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:28:45 | 显示全部楼层
谢谢各位!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-6 12:02:14 | 显示全部楼层
Mountain_gs 发表于 2018-10-23 13:44
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码, ...

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表