密码转换问题(存档)Julius Caesar

啊我的舍友真牛,思路好强好棒,受到她启发写出来了这题。

#利用ASCII码值进行数据类型转换,直接省略掉定义数组的问题

#再用对照表解决数据减出65的窘境

#直接用强制类型转换 得到字符数组

#注意空格的ASCII码值是32      “!”是33

#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;
int main() {
	int a, b=0;//a是记录数字的 向前推几位;b是记录一共有多少个字符
	char read[25] = {0};
    cin.getline(read, 25);
	for (int i = 0; i < 25;i++) {
		if (read[i]>=48&&read[i]<=57) {
			a = read[i] - 48;
			b=i+1 ;//+1是因为会有一个空格出现
		}
	}
	for (int i = 0; i < b-1;i++) {
		if (read[i]>=65+a &&read[i]<=90) {
			cout << static_cast<char>(read[i] - a);
		}
		else if (read[i] <= 47) {
			cout << read[i];
		}
		else {
			cout << static_cast<char>(read[i] +26-a);//-a会导致ASCII码跳出只有字母的范围
		}
		
	} 

	

}

我舍友的思路 (看到48和57我就明白了)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值