鱼C论坛

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

求助!!C语言作业!

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

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

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

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

使用道具 举报

发表于 2018-10-22 22:24:56 | 显示全部楼层
用 while( (c = getchar()) ... ),然后 if else 就好啦~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

char Lockalpha(char alpha)
{
        int ascII = (int)alpha;
        //输入是大写字母
        if (ascII >= 65 && ascII <= 90)
        {
                ascII = (ascII - 65 + 4) % 26 + 65;
                return (char)ascII;
        }
        //输入是小写字母
        else if(ascII>=97 && ascII<=122)
        {
                ascII = (ascII - 97 + 4) % 26 + 97;
                return (char)ascII;
        }
        //输入的不是字母,返回‘F’
        else
        {
                return 'F';
        }
}

int main()
{
        char alpha[5];
        char ch;
        for (int i = 0; i < 5; i++)
        {
                cin >> ch;
                alpha[i] = Lockalpha(ch);
        }
        for (int i = 0; i < 5; i++)
        {
                cout << alpha[i];
        }
        system("pause");
}
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码,小写字母的ascII是97-122,先减去97在加4.之后用26取余就能得到加密后的字母在字母表中的位置,再加上97后转换成字符就能得到加密后的数字。
在主函数调用这个函数就行了。

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

如果输入的不是字符那个地方不能返回‘F’,会和B的返回值一样。改成随意一个不是字母的字符就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 14:20:41 | 显示全部楼层
#include<stdio.h>
int main()
{
    int i;
    char ch;
    printf("Please enter five letters:");
    for(i = 0; i < 5; i++)
    {
        ch = getchar();
        //检测输入是否为字母
        if((ch >= 'a')&&(ch <= 'z')||(ch >= 'A')&&(ch <= 'Z'))
        {
            //小写情况
            if(ch == 'w')
                printf("a");
            else if(ch == 'x')
                printf("b");
            else if(ch == 'y')
                printf("c");
            else if(ch == 'z')
                printf("d");
            //大写情况
            else if(ch == 'W')
                printf("A");
            else if(ch == 'X')
                printf("B");
            else if(ch == 'Y')
                printf("C");
            else if(ch == 'Z')
                printf("D");
            //其他字母
            else printf("%c",ch + 4);
        }
        else printf("");
    }
    return 0;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-23 14:23:48 | 显示全部楼层
代码在上面,应该能满足需求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

for(i = 0; i < 5; i++)不合适,输入5个空格的话直接就没有输出了,要求是替换5个字母并把中间的非字母去掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

int main(void)
{
        char ch;
        int i = 0;
        
        while(i < 5)
        {
                ch = getchar();
                if('A'<ch && ch<'Z')
                {
                        if(ch+4 > 'Z')
                                putchar(ch+4-26);
                        else
                                putchar(ch+4);
                        
                        i++;
                }
                else if('a'<ch && ch<'z')
                {
                        if(ch+4 > 'z')
                                putchar(ch+4-26);
                        else
                                putchar(ch+4);
                        
                        i++;
                }
                else
                        ;
        }
        printf("\n");
        return 0;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

若输入5个空格,按题意不应该没有输出才合乎要求吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-25 17:28:45 | 显示全部楼层
谢谢各位!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 11:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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