求助!!C语言作业!
从键盘任意输入五个字母,然后每个字母加密的时候用它后面第四个字母替换,如输入字母a就换成字母e,但是如果输入字母w就要换成字母a,就要换成b,以此类推要求使用 if 和 else语句!!!
把中间的字符去掉!怎么弄呀!求助! 用 while( (c = getchar()) ... ),然后 if else 就好啦~~ #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;
char ch;
for (int i = 0; i < 5; i++)
{
cin >> ch;
alpha = Lockalpha(ch);
}
for (int i = 0; i < 5; i++)
{
cout << alpha;
}
system("pause");
}
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码,小写字母的ascII是97-122,先减去97在加4.之后用26取余就能得到加密后的字母在字母表中的位置,再加上97后转换成字符就能得到加密后的数字。
在主函数调用这个函数就行了。 Mountain_gs 发表于 2018-10-23 13:44
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码, ...
如果输入的不是字符那个地方不能返回‘F’,会和B的返回值一样。改成随意一个不是字母的字符就行了 #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;
} 代码在上面,应该能满足需求{:10_257:} helloconan 发表于 2018-10-23 14:20
for(i = 0; i < 5; i++)不合适,输入5个空格的话直接就没有输出了,要求是替换5个字母并把中间的非字母去掉 本帖最后由 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;
} pheron 发表于 2018-10-23 16:35
for(i = 0; i < 5; i++)不合适,输入5个空格的话直接就没有输出了,要求是替换5个字母并把中间的非字母 ...
若输入5个空格,按题意不应该没有输出才合乎要求吗? 谢谢各位!!!!!! Mountain_gs 发表于 2018-10-23 13:44
c语言我没学过,不过C++应该一样。
主要的算法在Lockalpha()函数里面,先把获得的字符转换成ascII码, ...
谢谢
页:
[1]