注册 登录
编程论坛 C++教室

新手请教,为什么下面程序得不到正确结果?

Nostalgia 发布于 2008-10-23 23:14, 788 次点击
#include<iostream>
using namespace std;
const int N=100;
void binary(int n)
{
    int i=0,j,m,s[N];
    cout<<"该十进制正整数转化为二进制为:";
    for(i=0;n>0;i++)
       {    s[i]=n%2;
            m=n/2;
            n=m;
       }
    for(j=i;j>=0;j--)
       cout<<s[j];
       cout<<endl;
}
void octal(int n)
{     
     int i=0,j,m,s[N];
     cout<<"该十进制正整数转化为八进制为:";
     for(i=0;n>0;i++)
       {    s[i]=n%8;
            m=n/8;
            n=m;
       }
     for(j=i;j>=0;j--)
        cout<<s[j];
    cout<<endl;
}

void main()
{  

      int n;
      cout<<"Please input a positive integer :";
      cin>>n;
      binary(n);
      octal(n);
}
4 回复
#2
blueboy820062008-10-23 23:25
就看了你第一个;
后面那个也类似改吧...
void binary(int n)
{
    int i=0,j,m,s[N];
    cout<<"该十进制正整数转化为二进制为:";
    for(i=0;n>0;i++)
       {   
        s[i]=n%2;
            m=n/2;
            n=m;
            cout<<n<<endl;
       }
    for(j=i-1;j>=0;j--)
       cout<<s[j];
       cout<<endl;
}
#3
blueboy820062008-10-23 23:26
仔细考虑好,循环结束时i的值...
#4
he52202008-10-24 21:38
很显然,结果只有一位
#5
petera2008-10-24 22:41
for(i=0;n>0;i++)
       {    s[i]=n%2;
            m=n/2;
            n=m;
       }
    for(j=i;j>=0;j--)
       cout<<s[j];
       cout<<endl;
第二个for应j=i-1;   因为在n<0时执行了一次i++.
1