简单密码破解
内容:简单密码的破解
目的:掌握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, 烟台大学计算机学院
补充:综合编程 , 安全编程 ,