C语言编程,密码翻译的问题~~~求助
把一串密码译成明文,密码以@表示结束.规则如下:1.字母转换成字母序列下的三个字母,如A译成D2.如果是字母Z,译成C3.无论大小写字母,都译成小写字母4.其他字符一律按...
把一串密码译成明文,密码以@表示结束. 规则如下:
1.字母转换成字母序列下的三个字母,如A译成D
2.如果是字母Z,译成C
3.无论大小写字母,都译成小写字母
4.其他字符一律按原样输出
自己尝试编了下,但是不成功,各位高手们看下问题在哪里
#include<stdio.h>
int main()
{
char a[100],d[100];
int i;
char c;
printf("输入要翻译的密码,以“@”结束:\n");
scanf("%s",a);
for(i=0;a[i]!='@';i++)
{
c=a[i];
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
c=c+3;
c=c-26;
}
else if(c='Z')
c='c';
}
d[i]=c;
}
printf("密码的译文是:\n");
for(i=0;i<=100;i++)
printf("%c",d[i]);
printf("\n");
return 0; } 展开
1.字母转换成字母序列下的三个字母,如A译成D
2.如果是字母Z,译成C
3.无论大小写字母,都译成小写字母
4.其他字符一律按原样输出
自己尝试编了下,但是不成功,各位高手们看下问题在哪里
#include<stdio.h>
int main()
{
char a[100],d[100];
int i;
char c;
printf("输入要翻译的密码,以“@”结束:\n");
scanf("%s",a);
for(i=0;a[i]!='@';i++)
{
c=a[i];
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
c=c+3;
c=c-26;
}
else if(c='Z')
c='c';
}
d[i]=c;
}
printf("密码的译文是:\n");
for(i=0;i<=100;i++)
printf("%c",d[i]);
printf("\n");
return 0; } 展开
1个回答
展开全部
#include<stdio.h>
int main()
{
char a[100],d[100];
int i,j=0;
printf("输入要翻译的密码,以“@”结束:\n");
scanf("%s",a);
for(i=0;a[i]!='@';i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
{
if(a[i]>='a'&&a[i]<'x')
a[i]=a[i]+3;//直接加减相差的位数
else if(a[i]>='A'&&a[i]<'X')
{
a[i]=a[i]+3;//先转化成加三位的大写,再转化成小写
a[i]=a[i]+32;//大小写相差32位
}
else if(a[i] >= 'X'&&a[i] <= 'Z')//X、Y、Z都应该做处理
a[i]=a[i]+9;
else if(a[i]>='x')//x、y、z都应该做处理
a[i] -= 23;
}
d[i]=a[i];
j++;//统计字符的个数,以免后面的输出中有乱码
}
printf("密码的译文是:\n");
for(i=0;i<=j;i++)
printf("%c",d[i]);
printf("\n");
return 0;
}这样修改之后应该就好了,根据题目要求,我觉得x、y、z的大小写都应该特殊处理,那个加减的数字是根据ASCII码计算出来的
int main()
{
char a[100],d[100];
int i,j=0;
printf("输入要翻译的密码,以“@”结束:\n");
scanf("%s",a);
for(i=0;a[i]!='@';i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
{
if(a[i]>='a'&&a[i]<'x')
a[i]=a[i]+3;//直接加减相差的位数
else if(a[i]>='A'&&a[i]<'X')
{
a[i]=a[i]+3;//先转化成加三位的大写,再转化成小写
a[i]=a[i]+32;//大小写相差32位
}
else if(a[i] >= 'X'&&a[i] <= 'Z')//X、Y、Z都应该做处理
a[i]=a[i]+9;
else if(a[i]>='x')//x、y、z都应该做处理
a[i] -= 23;
}
d[i]=a[i];
j++;//统计字符的个数,以免后面的输出中有乱码
}
printf("密码的译文是:\n");
for(i=0;i<=j;i++)
printf("%c",d[i]);
printf("\n");
return 0;
}这样修改之后应该就好了,根据题目要求,我觉得x、y、z的大小写都应该特殊处理,那个加减的数字是根据ASCII码计算出来的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询