C++利用栈进行二进制转换主程序错误

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:23:58
主程序如下,写的栈调用的函数存在头文件"stack.h"中,编译无错误。
主程序如下,可以运行,输入数据后程序无法继续运行,请问是主程序中哪句错了?

#include "stdafx.h"

#include<iostream.h>
#include "stack.h"

void main()
{ long num;
Stack a;
cin>>num;
while(num!=0)
{
int k=num%2;
a.push(k);
num/=k;
}
while(!a.empty())
cout<<a.pop();
cout<<endl;

}

//#include "stdafx.h"

#include<iostream>
#include <stack>
using namespace std;//改

void main()
{ int num;
stack<int>a; //改
cin>>num;
while(num!=0)
{
int k=num%2;
a.push(k);
num/=2; //改为这样

}
while(!a.empty())
{
cout<<a.top(); //改
a.pop();
}
cout<<endl;

}

你这几句想做什么能解释一下么

k = num%2; k是余数
a.push(k); 这句无所谓
num /= k; 这句理解不能啊。。

如果num是个偶数,那么k=0, 于是第三句完蛋, 如果num是个奇数, k=1,第三句num没变化,于是死循环

第三句你应该是想写 num /= 2; 吧