|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
首先看原题Description
输入一个正整数 a(0\le a\le 10^9)a(0≤a≤10
9
),逆序输出该数(不带前导0)
Format
Input
一个正整数 a(0\le a\le 10^9)a(0≤a≤10
9
)。
Output
逆序输出该数(不带前导0).
这是在OJ上的题,我用栈做的,用OJ提供的编译机算的是0分,用devc++算的是去了零,但没有逆序
我是从高位进栈,输出时从低位出栈并过滤0
代码如下:- #include <iostream>
- #include <stack>
- using namespace std;
- int main()
- {
- int a;
- cin>>a;
- stack<int> intes;
- while (a != 0)
- {
- intes.push(a % 10);
- a /= 10;
- }
- while (1)
- {
- bool flag = 0;
- if (intes.top() == 0)
- {
- intes.pop();
- continue;
- }
- if (intes.top() != 0)
- {
- if (flag == 0)
- {
- flag = 1;
- }
- cout<<intes.top();
- intes.pop();
- }
- if (intes.empty())
- {
- break;
- }
- }
-
- return 0;
- }
复制代码
求解答
- #include <iostream>
- #include <queue>
- using namespace std;
- int main()
- {
- int a;
- cin>>a;
- queue<int> intes;
- while (a != 0)
- {
- intes.push(a % 10);
- a /= 10;
- }
- bool flag = 0;
- while (1)
- {
- if (intes.front() == 0 && flag == 0)
- {
- intes.pop();
- continue;
- } else {
- if (flag == 0)
- {
- flag = 1;
- }
- cout<<intes.front();
- intes.pop();
- }
- if (intes.empty())
- {
- break;
- }
- }
- std::cout << std::endl;
- return 0;
- }
复制代码
|
|