首页 > 代码库 > shu_1180 回文数(一)
shu_1180 回文数(一)
http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=21
分析: 回文串判断,字符串处理
1. atoi 函数(ascii tointeger 将字符串转换成整型数)
头文件: #include <stdlib.h>
int atoi(const char *nptr);
由于程序中使用string类,所以应该用 str.c_str() 将string转为c语言下的字符串数组。
2. itoa函数(与atoi功能相反)
char
*itoa(intvalue,
char
*string,intradix); (与atoi用法区别)
3. stringstream
头文件: #include <sstream>
input:
3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999
#include <iostream> #include <stdio.h> #include <string> #include <sstream> using namespace std; #define MAXN 60 int main() { freopen("in.txt","r",stdin); string s; stringstream ss; int t; int n,a[MAXN]; cin>>t; getchar(); //读取换行 while(t--){ getline(cin,s); ss.clear(); ss.str(s); //ss<<s; n=0; while(1){ ss>>a[n++]; if(ss.fail()) break; } for(int i=0;i<n-1;i++) cout<<a[i]<<" "; //n比数字多1个 cout<<endl; } return 0; }
output:
输出到double一样;
有关string的用法在string类说明中再行分析。
代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <string> #include <sstream> #include <stdlib.h> #include <algorithm> using namespace std; #define MAXN 10000 int cnt; string s[MAXN]; bool palindrome(string e) { for(int i=0,j=e.length()-1;i<e.length();i++,j--){ if(e[i]!=e[j]) return false; } return true; } void deal(string e) { int a; string x=e; while(1){ cnt++; if(cnt>8) {cnt=0;break;} a=atoi(x.c_str()); reverse(x.begin(),x.end()); a +=atoi(x.c_str()); //123+321 stringstream ss; ss<<a; ss>>x; if(palindrome(x)) { break; } } printf("%d\n",cnt); } int main() { int n; string str; scanf("%d",&n); while(n--){ cin>>str; cnt=0; deal(str); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。