1029. 信息加密 (Standard IO)
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目:在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去。有一种加密规则是这样的:
- 对于字母字符,将其转换成其后的第3个字母。例如:A→D,a→d,X→A,x→a;
- 对于非字母字符,保持不变。
现在,请你根据输入的一行字符,输出其对应的密码。
输入
输入一个字符串。
输出
输出加密后的字符串。
样例输入
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()
:输出字符串并自动换行,该函数只能输出字符串。