首页 > 编程语言 >ZZNUOJ_1341:简单密码破解(C/C++/Java)

ZZNUOJ_1341:简单密码破解(C/C++/Java)

时间:2024-12-18 23:26:45浏览次数:10  
标签:Java charAt 33 1341 C++ else 密码 sb append

题目描述

密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈.
 
接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
 
假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
 
他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先边成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

输入

输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾。

输出

输出渊子真正的密文。

样例输入

YUANzi1987

样例输出

zvbo941987

提示

sjr test

来源

王晓渊

在这里插入图片描述
常见的ASCII
ASCII表中可以记下部分特殊的值(十进制)(字母从AZ,从az,ASCII值依次递增)

1、C算法源码:

#include<stdio.h>
#include <ctype.h>
#define N 100
int main() {
    char s[N];
    while(gets(s)) { // gets()是C语言中用于从标准输入读取一行字符串的函数
        for(int i = 0; s[i] != '\0'; i++) {
            if(islower(s[i])) { // islower()函数:判断字符是否为小写英文字母
                if(s[i] < 'd') // a,b和c中哪一个小字母在islower()函数下小于‘d’,就继续执行下,有思路就即可
                    s[i] = '2';
                else if(s[i] < 'g') // 和上面同理
                    s[i] = '3';
                else if(s[i] < 'j')
                    s[i] = '4';
                else if(s[i] < 'm')
                    s[i] = '5';
                else if(s[i] < 'p')
                    s[i] = '6';
                else if(s[i] < 't')
                    s[i] = '7';
                else if(s[i] < 'w')
                    s[i] = '8';
                else
                    s[i] = '9'; // w,x,y和z大于其他字母,就把'9'赋值给s[i]
            } else if(isupper(s[i])) { // isupper()函数:判断字符是否为大写英文字母
                s[i] += 33; // 大写字母(X)+33后变成小写,再往后移一位,就是y
                
                // 大写字母+33后变成小写,s[i]如果是其他的符号,大于'z',就再往后移一位,就是'a',也就是字母字符形成一个圆
                if(s[i] > 'z') 
                    s[i] = 'a';
                    
            }
        }
        puts(s); // puts()函数是用于将字符串输出到标准输出的函数
    }
    return 0;
}

2、C++算法源码:

#include <iostream>
using namespace std;
int main() {
    char s[100];
    while(cin >> s) {
        for(int i = 0; s[i] != '\0'; i++) {
            if(islower(s[i])) {
                if(s[i] < 'd')
                    s[i] = '2';
                else if(s[i] < 'g')
                    s[i] = '3';
                else if(s[i] < 'j')
                    s[i] = '4';
                else if(s[i] < 'm')
                    s[i] = '5';
                else if(s[i] < 'p')
                    s[i] = '6';
                else if(s[i] < 't')
                    s[i] = '7';
                else if(s[i] < 'w')
                    s[i] = '8';
                else
                    s[i] = '9';
            } else if(isupper(s[i])) {
                s[i] += 33;
                if(s[i] > 'z')
                    s[i] = 'a';
            }
        }
        cout << s << endl;
    }
    return 0;
}

3、Java算法源码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while (in.hasNextLine()) {
			StringBuilder sb = new StringBuilder();
			String s = in.nextLine();
			for (int i = 0; i < s.length(); i++) {
				if (Character.isLowerCase(s.charAt(i))) {
					if (s.charAt(i) < 'd')
						sb.append('2');
					else if (s.charAt(i) < 'g')
						sb.append('3');
					else if (s.charAt(i) < 'j')
						sb.append('4');
					else if (s.charAt(i) < 'm')
						sb.append('5');
					else if (s.charAt(i) < 'p')
						sb.append('6');
					else if (s.charAt(i) < 't')
						sb.append('7');
					else if (s.charAt(i) < 'w')
						sb.append('8');
					else
						sb.append('9');
				} else if (Character.isUpperCase(s.charAt(i))) {

					if ((char) (s.charAt(i) + 33) > 'z')
						sb.append('a');
					else
						sb.append((char) (s.charAt(i) + 33));

				} else
					sb.append(s.charAt(i));
			}
			System.out.println(sb.toString());
		}
	}
}

标签:Java,charAt,33,1341,C++,else,密码,sb,append
From: https://blog.csdn.net/qq_35091074/article/details/144571587

相关文章

  • JAVA中的包,抽象类
    什么是包java中的package就是一个类库单元,包内含有一组类,它们在单一的名称空间之下被组织在了一起,这个名称空间就是包名srcdao------>数据库相关的model------>>实体内容service----->业务util-------->工具包的作用1.把功能相似或相关的类或接口组织在一个包中,方便类......
  • 关于java中方法的那些事
    文章目录前言一、什么是方法?方法的完整格式是啥?二、方法如何使用?三、为什么要用方法?四、如果方法不需要接收数据处理,不需要返回数据,应该怎么办?要注意什么?五、方法使用时的常见问题六、定义方法重点关注的是哪几点?七、什么是方法重载?八、方法重载需要注意什么?九、方法重载......
  • JAVA领域驱动设计DDD在B端营销系统的实践
     1背景通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的营销系统来支撑商户的线上营销运营。在系统建设过程中,面临着业务体量大、行业跨度大、场景多样、客户结构复杂,需求多变等挑战。......
  • 好用的java工具类整理
    一、封装树形菜单数据表结构必须有parentId,以便于实现无限级分类,如下:实体类@Schema(description="系统菜单实体类")@DatapublicclassSysMenuextendsBaseEntity{ @Schema(description="父节点id") privateLongparentId; @Schema(description="节点标题"......
  • 《C++与 Armadillo:线性代数助力人工智能算法简化之路》
    在人工智能领域,线性代数运算可谓是构建各类模型与算法的基石。从神经网络中的矩阵乘法、向量运算,到数据处理中的特征分解、奇异值分解等,无一不依赖高效且精准的线性代数计算。而C++作为一种强大且高效的编程语言,在人工智能开发中有着独特的地位。Armadillo库的出现,则为在......
  • javaweb知识点总结
    HTML1.HTML是一种超文本标记语言,可存储文字,图片,视频等等2.HTML依靠浏览器解析运行3.HTML有自己的预定义标签4.HTML由三部分组成,遵循W3C标准结构:HTML表现:CSS行为:JavaScript基础知识:1.颜色标签文字2.HTML文档不区分大小写3.HTMl语法松散#有时语法错误,功能仍正常基础......
  • 基于java的SpringBoot/SSM+Vue+uniapp的大学校园防疫与服务系统的详细设计和实现(源码
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • JAVA无人共享24小时自助洗车扫码洗车系统源码支持小程序
    JAVA无人共享24小时自助洗车扫码洗车系统源码支持小程序在当今快节奏的生活中,自助洗车服务以其高效、便捷的特点逐渐受到广大车主的青睐。为满足这一市场需求,我们精心打造了一款JAVA无人共享24小时自助洗车扫码洗车系统,其源码全面支持小程序接入,不仅极大地提升了用户体验,还为......
  • JAVA数字人创作文案视频链接提取数字人源码小程序+公众号+APP+H5
    JAVA数字人创作文案提取与生成系统:全能型内容创作与运营解决方案在当今数字化内容井喷的时代,如何高效、创新地生产并传播内容,成为了众多内容创作者、商户乃至企业面临的重要课题。我们的JAVA数字人创作文案提取与生成系统,正是基于这一市场需求,集成了文案提取、文案生成、视频......
  • JAVA无人共享24小时自助洗车扫码洗车系统源码支持小程序
    JAVA无人共享24小时自助洗车扫码洗车系统源码支持小程序在当今快节奏的生活中,自助洗车服务以其高效、便捷的特点逐渐受到广大车主的青睐。为满足这一市场需求,我们精心打造了一款JAVA无人共享24小时自助洗车扫码洗车系统,其源码全面支持小程序接入,不仅极大地提升了用户体验,还为......