在 C/C++ 中, 输出 printf 或 cout 可以输出数字, 字符, 字符串. 但是输入函数 scanf 和 cin 在输入字符串时遇空格便会停止, 带来不少的麻烦.
- #include <iostream>
- #include <string.h>
- #include <cstdio>
- using namespace std;
- int main()
- {
- char c;
- char s[200];
- int i = 0;
- cin>> s;
- cout <<s<<endl;
- return 0;
- }
输入 i love you
输出 i
如果为们想获取一段有空格的字符串 scanf 或 cin 便不起作用了, 这时一般推荐 gets 函数, 不幸的是报错:
'gets' is deprecated [-Wdeprecated-declarations] gets 在新版的编译器中一般认为是危险的.
我们可以使用 getchar() 获取这样的字符串, 需要注意的是 getchar() 连回车符都会读取. 因此对字符串 "i love you",getchar() 读取了 11 个字符 (算上执行的回车符).
- #include <iostream>
- #include <string.h>
- #include <cstdio>
- using namespace std;
- int main()
- {
- char c;
- char s[200];
- int i = 0;
- while(true)
- {
- c = getchar();
- if (c == '\n') // 防止回车符加入到 s[] 中
- break;
- s[i++] = c;
- }
- cout <<s<<endl;
- return 0;
- }
例题:
描述
Julius Caesar 曾经使用过一种很简单的密码. 对于明文中的每个字符, 将它用它字母表中后 5 位对应的字符来代替, 这样就得到了密文. 比如字符 A 用 F 来代替. 如下是密文和明文中字符的对应关系.
密文
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明文
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密文进行解密得到明文.
你需要注意的是, 密文中出现的字母都是大写字母. 密文中也包括非字母的字符, 对这些字符不用进行解码.
输入
一行, 给出密文, 密文不为空, 而且其中的字符数不超过 200.
输出
输出一行, 即密文对应的明文.
样例输入
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
样例输出
- IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
- #include <iostream>
- #include <string.h>
- #include <cstdio>
- using namespace std;
- char decode(char c)
- {
- if (c>= 'F' && c <= 'Z')
- {
- return (c - 5);
- }
- else if (c>= 'A' && c < 'F')
- {
- return c + 21;
- }
- else
- return c;
- }
- int main()
- {
- char c;
- char s[200];
- int i = 0;
- while(true)
- {
- c = getchar();
- if (c == '\n')
- break;
- s[i++] = decode(c);
- }
- cout <<s<<endl;]
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2984727.html