题目描述
代码1:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
string s;
while(cin>>s)
{
for(int i=s.size()-1;i>=0;--i)
{
cout<<s[i];
}
cout<<endl;
}
return 0;
}
代码2:
#include <bits/stdc++.h>
using namespace std;
int main(){
char s[10];
int i;
while(scanf("%s",&s)!=EOF){
for(i=strlen(s)-1;i>=0;i--){
printf("%c",s[i]);
}
printf("\n");
}
}
**
关于scanf
**
scanf以Tab键,Enter键,Space键分隔字符。以Enter键输入结束
但用 scanf 输入时,不管输入什么,最后“敲”的回车都会被留在缓冲区,如果紧接着要给一个字符变量赋值的话,那么还没等输入,系统就自动退出来了。因为系统自动将回车产生的字符 ‘\n’ 赋给该字符变量了,所以此时对字符变量赋值前要首先清空缓冲区。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s1[10],s2[12];
scanf("%s",s1);
scanf("%s",s2);
cout<<s1<<endl;
cout<<s2;
return 0;
}
结果:
使用空格,Tab键是无法使其整个赋值输入结束的。只能是Enter键。
**
关于cin输入流:
**
该操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s1[12], s2[12];
cin>>s1;
cin>>s2;
cout<<s1<<endl;
cout<<s2<<endl;
return 0;
}
结果:
以空格分隔字符串abcde和edjh。证明cin遇到空格则读取结束,并丢弃空格。
**
关于cin.get(数组名,数组长度,结束符(默认为Enter键作为输入结束))
**
若要读取字符,
直接cin.get()即可,也是默认以Enter键作为输入结束,但是不会丢弃Enter键。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s1,s2;
cin.get(s1);
cin.get(s2);
cout<<s1<<s2;
return 0;
}
结果:
输出结果分析:l而后Enter键,s1读取为l,s2读取为Enter键
若要读取字符串
会丢弃Enter键,但是不会丢弃自定义的结束符。
**
关于cin.getline(数组名,长度,结束符)
**
大体与cin.get()相似。
区别在于:
cin.get()当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
**
参考文章:
**
https://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html