黑马程序员技术交流社区
标题:
基础测试题c语言有道题写到最后不知改怎么输出,求大神!
[打印本页]
作者:
花轮
时间:
2014-12-12 13:06
标题:
基础测试题c语言有道题写到最后不知改怎么输出,求大神!
题目:编程实现对键盘输入的英文名句子进行加密。
用加密方法为:当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变。
比如245a95n加密后是245bcd95opq。(C语言)
我现在写的代码是这样的:
<p>
#include <stdio.h></p><p>int main()
{
//提示用户输入句子,定义一个字符串数组并把用户输入的句子传入
printf("请输入英文句子:\n");
char *sentence;
scanf ("%s", sentence);
int i = 0;
//遍历字符串中每个字母
for(i = 0; i < strlen(sentence); i++)
{
//把字母赋给一个字符变量
char w = sentence[i];
char fin[i];
//如果'w'在a到w或A到W之间 就输出他后面三个 ,因为w后面有xyz所以可以正常输出后面三个
if( (w >= 'a' && w <= 'w') || (w >='A' && w <= 'W') )
{
fin[1] = w+1;
fin[2] = w+2;
fin[3] = w+3;
}
else if( w=='x' || w=='X')
{
fin[1] = w+1;
fin[2] = w+2;
fin[3] = w+3-26;
}
else if( w=='y' || w=='Y')
{
fin[1] = w+1;
fin[2] = w+2-26;
fin[3] = w+3-26;
}
else if( w=='z' || w=='Z')
{
fin[1] = w+1-26;
fin[2] = w+2-26;
fin[3] = w+3-26;
}
//其他的原样输出
else
}</p><p>//输出
}</p>
复制代码
写到最后发现不知该怎么输出,求大神指点!
作者:
young_star
时间:
2014-12-12 13:06
因为后面有特殊情况,你没考虑周全,这是一个完整的代码
//编程实现对键盘输入的英文名句子进行加密。用加密方法为:
//当内容为英文字母时,用26字母中的其后三个字母代替该字母,若为其它字符时不变
#include <stdio.h>
int main()
{
char c;
printf("please input a string:");
//每次从缓冲区读取一个字符,然后赋给c,!='\n'则进入循环
while((c=getchar())!='\n')
{
//获取字母使其+1,编程下一个字母
if(c>='A'&&c<='Y'||c>='a'&&c<='y')
{
c=c+1;
}
else if(c=='Z'||c=='z')
{
c=c-25;
}
//输出改变字母后的字符串
printf("%c",c);
//针对字符串内的字母进行处理,并输出
if(c>='B'&&c<='X'||c>='b'&&c<='x')
{
char a[2] = {c+1,c+2};
for(int i = 0;i<2;i++)
printf("%c",a[i]);
}
else
{
//针对字符串内的特殊的字母进行处理,并输出
if(c=='Y'||c=='y')
{
char b[2] = {c+1,(c+2)-26};
for(int i = 0;i < 2; i++)
{
printf("%c",b[i]);
}
}
else
if(c=='Z'||c=='z')
{
char b[2] = {(c+1)-26,(c+2)-26};
for(int i = 0;i < 2; i++)
{
printf("%c",b[i]);
}
}
else if(c=='A'||c=='a')
{
char b[2] = {c+1,c+2};
for(int i = 0;i < 2; i++)
{
printf("%c",b[i]);
}
}
}
}
printf("\n");
return 0;
}
复制代码
作者:
stonelv0101
时间:
2014-12-12 15:15
你这个思路逻辑上有问题,原字符串的长度有变化,length要做相应的处理。
作者:
stonelv0101
时间:
2014-12-12 15:47
正确的思路应该是:当有输入且未到结尾时进行相关加密。
这样就可以不用考虑字符串长度变化带来的困扰了。
你可以再研究下,尽量自己解决,不行的话,给你代码
作者:
上官祈青
时间:
2014-12-16 17:50
最后的思路有问题啊,length要做处理啊
作者:
zyp115
时间:
2015-1-8 13:17
我都没考虑到输入Zz的情况,直接输出c+1,c+2的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2