当前位置:编程学习 > 网站相关 >>

简单密码破解

内容:简单密码的破解

目的:掌握switch语句及for循环

问题描述:请点击题目链接

程序代码:


[cpp]
/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作    者:匡效国
* 完成日期:2013 年 4 月 15 日
* 版 本 号:v1.0
*
* 对任务及求解方法的描述部分:
* 输入描述: 输入包括多个测试数据,输入是一个明文,密码长度不超过100个字符,输入直到文件结尾
* 输出描述:输出密文
* 问题描述: 见题目链接
*
* 程序输出:见下图
* 问题分析:略
* 算法设计:略
*/ 
#include <iostream>  
#include <string>  
using namespace std; 
int main() 

    string str;//定义一个字符串  
    int i,j;//i用来记录字符串的长度,j用来循环  
    while(cin>>str) 
    { 
        i=str.size();//i为字符串长度  
        for(j=0;j<i;j++) 
        { 
            if(str[j]>='A'&&str[j]<'Z')//如果为大写字母,需变为相应的小写字母,然后再加一,变为小写字母后一位  
                str[j]=str[j]+33; 
            else if(str[j]=='Z')//由题目要求知,字符为Z时,需变为a  
                str[j]='a'; 
            else if(str[j]>='a'&&str[j]<='z')//如果字符为小写字母,则变为相对应的数字  
                { 
                    switch(str[j]) 
                    { 
                        case 'a': 
                        case 'b': 
                        case 'c': str[j]='2'; break;//字符为abc时,变为1  
                        case 'd': 
                        case 'e': 
                        case 'f': str[j]='3'; break;//字符为def时,变为2,以下与之相同,不再注释  
                        case 'g': 
                        case 'h': 
                        case 'i': str[j]='4'; break; 
                        case 'j': 
                        case 'k': 
                        case 'l': str[j]='5'; break; 
                        case 'm': 
                        case 'n': 
                        case 'o':str[j]='6'; break; 
                        case 'p': 
                        case 'q': 
                        case 'r': 
                        case 's': str[j]='7'; break; 
                        case 't': 
                        case 'u': 
                        case 'v': str[j]='8'; break; 
                        case 'w': 
                        case 'x': 
                        case 'y': 
                        case 'z': str[j]='9'; break; 
                    } 
                } 
                else//若为其他字符,则保持不变  
                    str[j]=str[j]; 
        } 
        cout<<str<<endl;//输出加密后的字符串  
    } 
    return 0; 

/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013, 烟台大学计算机学院

补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,