题意:
转换字母,水题。
这些题目代码一样,直接用就行。
POJ1298、HDU1048、OpenJ_Bailian1298、ZOJ1392、UVALive2540。
(注意:后两个OJ不能用gets,用 getline(cin,s) 读入字符串string即可。)
gets读入AC代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<map> 4 #include<algorithm> 5 #include<queue> 6 #include<stack> 7 #include<cmath> 8 #include<string.h> 9 10 using namespace std; 11 #define men(p,b) memset(p,b,sizeof(p)) 12 #define inf 0x3f3f3f3f 13 typedef long long ll; 14 15 char s[110]; 16 17 int main() 18 { 19 while(~scanf("%s",s)) 20 { 21 if(!strcmp("ENDOFINPUT",s)) 22 break; 23 getchar(); 24 gets(s); 25 int len=strlen(s); 26 for(int i=0;i<len;i++) 27 { 28 if(s[i]<'A'||s[i]>'Z') 29 continue; 30 s[i]-=5; 31 if(s[i]<'A')//<0 32 s[i]+=26; 33 } 34 printf("%s ",s); 35 scanf("%s",s); 36 //gets(s); 37 } 38 return 0; 39 }
getline读入AC代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<map> 4 #include<algorithm> 5 #include<queue> 6 #include<stack> 7 #include<cmath> 8 #include<string.h> 9 10 using namespace std; 11 #define men(p,b) memset(p,b,sizeof(p)) 12 #define inf 0x3f3f3f3f 13 typedef long long ll; 14 15 16 int main() 17 { 18 string s; 19 while(getline(cin,s)) 20 { 21 if(s=="ENDOFINPUT") 22 break; 23 //getchar(); 24 getline(cin,s); 25 int len=s.length(); 26 for(int i=0;i<len;i++) 27 { 28 if(s[i]<'A'||s[i]>'Z') 29 continue; 30 s[i]-=5; 31 if(s[i]<'A')//<0 32 s[i]+=26; 33 } 34 cout<<s<<endl; 35 getline(cin,s); 36 } 37 return 0; 38 }
注意:
getline接受空格,cin遇到空格会终止;
getline和gets在回车之后需要getchar()吸收回车,但是getline(cin,s);getline(cin,ss);之间不用。
比如:
int n; cin>>n; getchar(); gets(s);
但是我奇怪的是:为什么输入n之后s无法输入了???,加了getchar就可以正常输入输出。