【项目1-M$pszi$y是嘛意思?】
背景:小明让同学传纸条给小丽。小丽接到会心一笑,大家却不知所云。纸条上写着M$pszi$y,两人暗中约定是,真实字符为实际字符前面的第4个!M$pszi$y是神马意思?推算一下,或从ASCII码表中查一下,自然是I love u。
(1)小明请你写一个程序,在给小丽写情书时,再不用费功夫自己“翻译”,原信中每一个字符加密为其后的第4个字符。例,输入I love u,输出M$pszi$y。
[参考解答]
背景:小明让同学传纸条给小丽。小丽接到会心一笑,大家却不知所云。纸条上写着M$pszi$y,两人暗中约定是,真实字符为实际字符前面的第4个!M$pszi$y是神马意思?推算一下,或从ASCII码表中查一下,自然是I love u。
(1)小明请你写一个程序,在给小丽写情书时,再不用费功夫自己“翻译”,原信中每一个字符加密为其后的第4个字符。例,输入I love u,输出M$pszi$y。
[参考解答]
#include<stdio.h>
int main()
{
char s[80], t[80];
int i;
gets(s);
for(i=0; s[i]!='\0'; i++)
{
t[i] = s[i]+4;
}
t[i] = '\0'; //此时i为?
printf("%s\n", t);
return 0;
}
(2)小丽请你写一个程序,在看小明的情书时,让程序帮着“解密”。因为有同学知道了他们俩人的“加密”手段,决定纸条由人传,加密数字(1-9)用两人约好的手势传,所以解密时,需要将加密数字作为程序输入。例,输入M$pszi$y(回车)4,输出I love u
[参考解答]
#include<stdio.h>
int main()
{
char s[80], t[80];
int i, n;
printf("输入待解密句子:");
gets(s);
printf("输入加密数字:");
scanf("%d", &n);
char *pt = t;
for(i=0; *(s+i)!='\0'; i++,pt++)
{
*pt = s[i]-n;
}
*pt = '\0';
printf("%s\n", t);
return 0;
}
(3)小刚常帮着传纸条,想知道俩人的秘密,但不知道加密数字,于是写了一个程序,可以列出所有可能的情况。例,输入M$pszi$y,多行输出中必然有一行是I love u。你就是小刚,写出这个程序来吧。
[参考解答]
[参考解答]
#include<stdio.h>
int main()
{
char s[80], t[80], *pt;
int i, n;
printf("输入待解密句子:");
gets(s);
for(n=1; n<9; n++)
{
pt = t;
for(i=0; *(s+i)!='\0'; i++,pt++)
{
*pt = s[i]-n;
}
*pt = '\0';
printf("%s\n", t);
}
return 0;
}