1029. 信息加密 (Standard IO)

1029. 信息加密 (Standard IO)

时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目:在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去。有一种加密规则是这样的:

  1. 对于字母字符,将其转换成其后的第3个字母。例如:A→D,a→d,X→A,x→a;
  2. 对于非字母字符,保持不变。
    现在,请你根据输入的一行字符,输出其对应的密码。
输入

输入一个字符串。

输出

输出加密后的字符串。

样例输入

I(2016)love(08)China(15)!

样例输出

L(2016)oryh(08)Fklqd(15)!

C语言
#include <stdio.h>
#include <ctype.h>		// isalpha()函数所需头文件 
int main()
{
	
	char c;	
	while((c = getchar()) != '\n') 		// 读取用户从键盘输入的单个字符 
	{
		if (isalpha(c))		 // isalpha():判断字符是否为字母 
		{	
			if ((c >= 88 && c <= 90) || (c >= 120 && c <= 122))
				c-=23;
			else
				c+=3;
		}
		putchar(c);		// 输出一个字符, c为输出参数 
	}
	return 0; 
} 
getchar() 函数
头文件:#include <stdio.h>
字符为单位对输入的数据进行读取,以回车键'\n'作为结束标志

C++
#include <iostream>
#include <cctype>   //  isalpha()函数所需的头文件 
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	
	for (int i = 0; i < str.size(); i++) 
		if ( isalpha(str[i]) )    // isalpha():判断字符是否为字母 
		{
			//        X、Y、Z -> A、B、C                 x、y、z -> a、b、c 
			if ((str[i] >= 88 && str[i] <= 90) || (str[i] >= 120 && str[i] <= 122))
				str[i] -= 23;
			else
				str[i] += 3;
		}
	cout << str << endl;
	return 0;
} 
C++ 判断 一个字符 是否为 数字 或 字母 的函数总结
头文件:#include<ctype.h>(C语言) 、#include <cctype>(C++)
isalnum():判断一个字符是否为数字或字母
isdigit():判断一个字符是否为数字
isalpha():判断一个字符是否为字母
isupper():判断一个字符是否为大写字母A~Z
islower():判断一个字符是否为小写字母a~z

🕸 C语言是否有string类型 ❓

📚 首先,这句话本身就是错误的。string是类(class),不是类型(type)
C语言中没有string类。C语言中没有字符串类型,字符串是存放在字符型数组中,C语言规定以'\n'作为字符串结束标志。

🕸 字符串的输入和输出 ❗

📚 输入:
scanf:通过格式控制符 %s 输入字符串。
gets():直接输入字符串,并且只能输入字符串。

区别:
scanf()读取字符串时以空格为分隔,遇到空格当前字符串就结束scanf()无法读取含有空格的字符串
gets() 读取字符串时以回车键为分隔,认为空格也是字符串的一部分,只有遇到回车键时字符串输入结束gets() 用来读取一整行字符串

:scanf() 在读取数据时需要数据的地址。int、char、float 等类型的变量用 scanf() 时都要在前面添加&,以获取它们的地址;而数组或者字符串用 scanf() 时不用添加&,它们本身就会转换为地址。

📚 输出:
printf():通过格式控制符%s输出字符串,不能自动换行
puts():输出字符串并自动换行,该函数只能输出字符串。


🍅 Try it 🗝 1029. 信息加密 (Standard IO)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET 6(也就是.NET Core 6)提供了强大的加密支持,其中包括Advanced Encryption Standard (AES)。AES是一种广泛使用的对称加密算法,用于保护数据的安全性。在.NET 6中,你可以使用`System.Security.Cryptography.Aes`类来进行AES加密和解密操作。 以下是使用.NET 6进行AES加密的基本步骤: 1. 引用所需命名空间: ```csharp using System.Security.Cryptography; using System.Text; using System.IO; ``` 2. 创建Aes实例并设置密钥和初始化向量(IV): ```csharp byte[] key = Encoding.UTF8.GetBytes("your_secret_key_here"); // 你的密钥,必须是16、24或32字节 byte[] iv = Encoding.UTF8.GetBytes("your_initialization_vector_here"); // 你的初始化向量,通常也是16字节 Aes aes = Aes.Create(); aes.Key = key; aes.IV = iv; ``` 3. 创建加密上下文(Encryptor)和解密上下文(Decryptor): ```csharp ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); ``` 4. 加密/解密数据: - 对于加密: ```csharp byte[] input = Encoding.UTF8.GetBytes("plaintext_to_encrypt"); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { cs.Write(input, 0, input.Length); cs.FlushFinalBlock(); } return ms.ToArray(); // 返回加密后的字节数组 } ``` - 对于解密: ```csharp byte[] encryptedData = ...; // 从安全存储获取或接收到的加密数据 using (MemoryStream ms = new MemoryStream(encryptedData)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader sr = new StreamReader(cs)) { string decryptedText = sr.ReadToEnd(); // 解密后的字符串 return decryptedText; } } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值