题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
程序分析:学会分解出每一位数。
代码1(逐位分解法):
#include <stdio.h>
#include<iostream>
using namespace std;
int main()
{
long ge, shi, qian, wan, x;
printf("请输入 5 位数字:");
cin >> x;
wan = x / 10000; /*分解出万位*/
qian = x % 10000 / 1000; /*分解出千位*/
shi = x % 100 / 10; /*分解出十位*/
ge = x % 10; /*分解出个位*/
if (ge == wan && shi == qian) { /*个位等于万位并且十位等于千位*/
printf("这是回文数\n");
}
else {
printf("这不是回文数\n");
}
}
代码2(栈):
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<char>sta;
string num;
cin>>num;
for (int i = 0; i < 5; i++)
sta.push(num[i]);
for (int i = 0; i < 5; i++)
{
cout << sta.top();
sta.pop();
}
return 0;
}
代码3(带空格的字符串):
#include<iostream>
#include<stack>
#define MAXSIZE 100
using namespace std;
int main()
{
stack<char>sta;
char ch[MAXSIZE];
cin.get(ch, MAXSIZE);
int len = 0;
while (ch[len] != '\0')
{
len++;
}//获取长度
for (int i = 0; i < len; i++)
sta.push(ch[i]);
for (int i = 0; i < len; i++)
{
cout << sta.top();
sta.pop();
}
return 0;
}