当前位置:编程学习 > C/C++ >>

C语言问题

如何将2进制转换为10进制的,大数范围的啊
追问:问题是用一个num装不下10进制的数,需用数组储存10进制的,在输出数组,怎么做的啊?大哥,会的话,就没这问题啦
答案:你好!

大数范围……
请参考: 

#include <stdio.h> 
#include <malloc.h> 
typedef   struct   node 
                { 
                int   num10; 
                struct   node*   next; 
                }Node; 
void   print(Node*   p) 
{ 
                if(p-> next) 
                                print(p-> next); 
                printf( "%d ",p-> num10); 
} 
Node*   create(int*   num2,int   m) 
{ 
                int   i; 
                Node*     head,*   p,*   temp; 
                head   =   (Node   *)malloc(sizeof(Node)); 
                head-> num10   =   num2[0]; 
                head-> next   =   NULL; 
                for(i=1;i <m;i++) 
                { 
                                p   =   head; 
                                while(p)                                                        
                                {               
                                                p-> num10   =   p-> num10*2; 
                                                p   =   p-> next; 
                                } 
                                p   =   head; 
                                p-> num10   +=   num2[i]; 
                                while(p) 
                                { 
                                                if(p-> num10> 9) 
                                                                if(p-> next) 
                                                                                { 
                                                                                p-> next-> num10   +=   p-> num10/10; 
                                                                                p-> num10   %=   10; 
                                                                                } 
                                                                else 
                                                                                {temp   =   (Node   *)malloc(sizeof(Node)); 
                                                                                  temp-> num10   =   p-> num10/10; 
                                                                                  temp-> next   =   NULL; 
                                                                                  p-> num10   %=   10;
                                                                                  p-> next   =   temp;
                                                                                } 

                                p   =   p-> next; 
                                } 
                } 
return   head; 
} 
int   main() 
{ 
    int   bignum2[37]   =   {   1,0,1,0,0,1,1,1,1,0,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0}; 
    Node*   head; 
    head   =   create(bignum2,37); 
    print(head); 
    return   0; 
}
其他:将大数用字符串形式读入,然后每个字符减去'0'就可以了
例如    int b[i]=char a[i]-'0' 自己编段程序呗

上一个:c语言中:for循环语句,for(表达式)下面用加{}吗?不加是不是只能循环下面第一条语句?就像if和else一样
下一个:郝斌C语言的课件发我一份吧,万分感谢! justemem@gmail.com

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,