实验四 顺序/分支结构程序设计

实验四 顺序/分支结构程序设计

 

一、实验目的和要求:

1. 熟练运用顺序结构程序设计方法;

2. 掌握分支结构程序设计基本方法。

 

二、实验内容:

1. 从键盘输入一个6位数密码,采用“加4”方式循环加密,输出加密后的6位数。

2. 编程实现凯撒密码中的加密算法:从键盘输入密码的位数n以及n个字母,然后对输入的字母往后推n位,若超出大/小字母表的最后一个字符,则返回至第一个大/小字母继续循环。请输出原密码以及加密后的密文。

3. 编程实现凯撒密码中的解密算法:已知一个包含6个字符的密文,对密文中字母往前推n位,n由键盘输入。若超出大/小字母表的第一个字符,则返回至最后一个大/小字母继续循环。请输出密文以及解密出的原始密码。

 

三、实验步骤与结果

1从键盘输入一个6位数密码,采用“加4”方式循环加密,输出加密后的6位数。

1)设计思路

输入的数字进行判断,符合0-6之后加4然后循环判断是否大于6,再

2)程序源码(加注释)

#include<stdio.h>

main(){

int b[10],i,c;  //定义数据类型 和一个空数组

printf("请输入6位数:");

for(i=0;i<6;i++){   //循环接收六个数

scanf("%d",&c);

if(c>=0&&c<6){  //判断输入的数据是否符合

b[i]=c+4;    //符合就加4寄存到数组里面

} else{

b[i]=(c+4)%10;   //不符合就把接收到的数据 就模10取余

}

}

printf("加密后的数字为:");

for(i=0;i<6;i++){   

printf("%d ",b[i]);    //输出加密处理后的数

}

}

 

(3)运行结果与分析

 

2. 编程实现凯撒密码中的加密算法:从键盘输入密码的位数n以及n个字母,然后对输入的字母往后推n位,若超出大/小字母表的最后一个字符,则返回至第一个大/小字母继续循环。请输出原密码以及加密后的密文。

1)设计思路

对输入的字母进行加法处理,超出之后进行循环处理

(2)程序源码(加注释)

#include <stdio.h>

#include <string.h>

#define MAX 100

 

int main()

{

    char Chu[MAX];  //处理后密码

    char Shi[MAX];  //开始获得的密码

    int K=3,i;

 

    printf("输入的原密码\n");

    gets(Shi);  //获得密码  

    for(i=0; Shi[i]!='\0'; i++)  //判断是否为空字符

    {

        Chu[i]=(Shi[i]-'a'+K)%26+'a';  //处理获得的字符

    }

    Chu[i]='\0';  //把获得的值赋空值

    for(i=0; Shi[i]!='\0'; i++)  //接着处理字符

    {

        Chu[i]=(Shi[i]-'A'+K)%26+'A';

    }

    Chu[i]='\0';  //把获得的值赋空值

    printf("加密后的密文\n%s\n",Chu);

    return 0;

}

 

(3)运行结果与分析

 

3. 编程实现凯撒密码中的解密算法:已知一个包含6个字符的密文,对密文中字母往前推n位,n由键盘输入。若超出大/小字母表的第一个字符,则返回至最后一个大/小字母继续循环。请输出密文以及解密出的原始密码。

1)设计思路

对输入的字母进行加法处理,超出之后进行循环处理

2)程序源码(加注释)

#include <stdio.h>

#include <string.h>  //string.hC语言库bai函数头文件之一,包含了内du存处理及字符串处zhi理函数。

1 内存处理相关函数,包括memcmp, memcpy, memset等。

2 字符串处理函数,包括strcpy, strcmp, strlen,strstr等。

当用到相关函数时,推荐引用string.h

#define MAX 100

 

int main()

{

    char Chu[MAX];

    char Shi[MAX];

    int K=3,i;

 

    printf("输入的加密后的密码文\n");

    gets(Chu);     //获取已经处理过的密文

    for(i=0; Chu[i]!='\0'; i++)   //还原密码处理

    {

         Shi[i]=(Chu[i]-'a'-K)%26+'a';

    }

    Shi[i]='\0';  //把获得的值赋空值

    for(i=0; Chu[i]!='\0'; i++)

    {

         Shi[i]=(Chu[i]-'A'-K)%26+'A';

    }

      //把获得的值赋空值

    printf("解密后\n",Shi);         

    return 0;

}

3)运行结果与分析

 

 

 

四、实验总结与心得

总结:

1, 我们应该要注意细节问题

2, 就因为输入的值有没有空格和换行就出现了问题,琢磨了一个多小时最后发现都是因为自己输入的时候没注意格式问题

心得:

1, 自己一定要对自己写好的代码进行理解,

2, 注释很重要,需要体现自己的想法

 

posted @ 2020-12-16 08:30  刘磊i  阅读(465)  评论(0编辑  收藏  举报