汤姆的密码一次可以写两个字母。给定一些密文(用汤姆的密码加密的文本),取其前两个字母。明文(未加密文本)的第一个字母是这两个加密字母的ascii值较小的字母。例如,密文的前两个字母为“GD”,则明文的第一个字母为“D”。为了解释这段代码,下图演示了代码“CZuOMUPP1i5fg112”是如何被解密为“COMP1511”的。在每一对字母中,ascii值较低的那一个就是明文的一部分。
您不应该假定会有偶数个输入。如果字符个数为奇数,则忽略最后一个字符。您可以被指定任何可打印的ascii字符作为输入(小写字母、大写字母、换行符、符号等)。
您的程序应该总是在输出的最后打印一个换行符。
这个练习很难用fgets来解决。您应该使用getchar解决这个问题。
必须要求偶数个字符?没对字符中取ASCII码小的作为结果?
#include <stdio.h>
#include <stdlib.h>
void main()
{
char a[1000] = {0};
int count = 0;
printf("请输入加密串:");
char c;
while((c = getchar()) != EOF)
{
a[count++] = c;
// putchar(c);
}
char *p = a;
while(*p != 0 && *(p+1) != 0)
{
if(*p <= *(p+1))
printf("%c",*p);
else
printf("%c",*(p+1));
p+=2;
}
printf("\n");
}
核心就是这句话。
跟着列表做判断。哪个ascii值小 就取谁。
在c语言中字符串可以转成 char数组,也可以转成int数组 都可以做大小判断。