且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《C语言及程序设计》实践参考——M$pszi$y是嘛意思

更新时间:2022-10-12 12:44:54

返回:贺老师课程教学链接  实践要求


【项目1-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;  
}