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

十转二中的问题

xinshou1991 发布于 2011-08-11 15:28, 328 次点击
#include <iostream.h>
#define MAXLEN 1024
void bin(char *des,int n)
{
    int j,i=0;
    char temp;
    while(n!=0)
    {
        des[i]=n%2+'0';
        n=n/2;
        i++;
    }
    des[i]=NULL;//这里为什么要赋为空呢?
    for(j=0;j<i/2;j++)
    {
        temp=des[j];
        des[j]=des[i-1-j];
        des[i-1-j]=temp;
    }
}
void main()
{
    char des[MAXLEN];
    int n=120;
    bin(des,n);
    cout<<des<<endl;
    return;
}
3 回复
#2
玩出来的代码2011-08-11 19:38
也就是为字符数组赋一个结束符,不过NULL一般用于指针表示不指向任何地方。在C++中NULL应该是定义为0了,而0又可以转换为其他的内置类型。
#3
loveshuang2011-08-11 22:39
等效于C字符串的结尾'\0';
楼主的程序可以简化一下:
#include <iostream.h>
#define MAXLEN 1024
int bin(char *des,int n)
{
    int i=MAXLEN-2;
    while(n!=0)
    {
        des[i]=n%2+'0';
        n=n/2;
        i--;
    }
    return i+1;
}
void main()
{
    char des[MAXLEN];
    int n=120;
    des[MAXLEN-1]='\0';  
    cout<<des+bin(des,n)<<endl;
    return;
}
#4
xinshou19912011-08-12 11:55
3楼的高手偶是菜鸟啊!你能详细说下吗?越细越好啊
1