C语言问题
如何将2进制转换为10进制的,大数范围的啊
追问:问题是用一个num装不下10进制的数,需用数组储存10进制的,在输出数组,怎么做的啊?大哥,会的话,就没这问题啦
如何将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