求助
#include<stdio.h>int main()
{
char a = { 0 }, i = 0, n,b=0;
while (i < 10)
{
scanf("%c", &n);
a = n;
i++;
printf("%c", n);//原文
while ((a >= 'a') &&(a<= 'z') || (a >= 'A') &&(a<= 'Z'))
{
if ((a = 'a' + b) || (a = 'A' + b))
a= a + 25 - b;
b++;
if (b>26)
printf("%c", a);//密码
i++;
if(i>10)
break;
}
}
return 0;
}
将原文以此规律翻译
第i个字母变成第(26-i+1)个,例如a变成z
为什么我不能输出密码 你这个程序里面的: printf("%c", n);//原文
这条语句前的i++;有问题,
你在开始的时候把a = n;
然后执行i++;
导致参与第二个while的判断条件是a;
而且,你给数组a的初值都是0;
所以参与 while ((a >= 'a') &&(a<= 'z') || (a >= 'A') &&(a<= 'Z'))的a值是0;
不满足这个判断条件,所以根本就进不去这个while;
所以也就不会输出密码。
改的话,可以把这个i++改到while后,或是直接去掉,
我没太理解你这个i++是为了做什么,
所以只能给出这两个建议。
你可以试试。 番杰 发表于 2021-11-19 16:55
你这个程序里面的: printf("%c", n);//原文
这条语句前的i++;有问题,
我改成这样了,但是密码只能输出zzzzzz{:10_284:}
#include<stdio.h>
int main()
{
char a = { "abcdefg"}, i = 0, b = 0;
printf("%s\n", a);//原文
while ((a >= 'a') &&(a<= 'z') || (a >= 'A') &&(a<= 'Z'))
{
if ((a = 'a' + b) || (a = 'A' + b))
a = a + 25 - b;
b++;
if (b>25)
printf("%c", a);//密码
if (printf("%c", a))
i++;
if (i > 10)
break;
}
return 0;
} 本帖最后由 番杰 于 2021-11-19 18:05 编辑
夜蚀天 发表于 2021-11-19 17:39
我改成这样了,但是密码只能输出zzzzzz
#include
int main()
你之前提问时候的程序
把 printf("%c", n);//原文 这条语句前的i++;去掉试试
另外,我没太看懂 if ((a = 'a' + b) || (a = 'A' + b)) 这个if是要做什么;
请把程序所要实现的目的叙述一下。 番杰 发表于 2021-11-19 17:59
你之前提问时候的程序
把 printf("%c", n);//原文 这条语句前的i++;去掉试试
就是输入几个字母
将第i个字母变成第(26-i+1)个字母,例如a变成z,b变成y
然后将原文翻译成密码 本帖最后由 番杰 于 2021-11-19 21:27 编辑
#include<stdio.h>
#include<string.h>
int main()
{
char a , i = 0;
scanf("%s", &a);
printf("原文:%s\n", a);//原文
while (i<strlen(a))
{
if( (a >= 'a') &&(a<= 'z'))
{
a = (25 - (a - 'a') ) + 'a';
i++;
}
else if ((a >= 'A') &&(a<= 'Z'))
{
a = (25 - (a - 'A') ) + 'A';
i++;
}
else
i++;
}
printf("密码:%s", a);//密码
return 0;
} 番杰 发表于 2021-11-19 21:23
多谢大佬 来看看代码
页:
[1]