c语言中如何保存一个位数不限的小数?
发布网友
发布时间:2022-05-11 06:58
我来回答
共5个回答
热心网友
时间:2023-10-06 04:23
输入的时候用字符串的形式读入,然后把该字符串当中的每一个字符减去'0',用整型数组保存即可
不知道长度就可以动态申请内存空间啊,malloc就行了哈
热心网友
时间:2023-10-06 04:24
我编了一个用字符串来存储小数的程序,你试试。但是输入的小数位数n不能太长,否则计算8^(-n)时会溢出
/*
输入示例:0.1234
*/
#include <stdio.h>
#include <math.h>
int main()
{
char a[]="\0";
char *p=a;
int i=0;
double sum=0;
scanf("0.%s",a);
while (*(p+i)!='\0')
{
sum+=(double)(*(p+i)-48)*(double)pow(8,-(i+1));
/*
*(p+i)-48表示输入的数字字符(如‘1’)的整形数值
*/
i++;
}
printf("the result is %lf\n",sum);
return 0;
}
热心网友
时间:2023-10-06 04:24
可以用字符数值,你把数组长度定义大点就是
即使是用链表,长度也不可能无限长,毕竟内存是有限的
热心网友
时间:2023-10-06 04:25
有长度规定啊,超过的长度只能自己写个struct
热心网友
时间:2023-10-06 04:25
用数组即可。
用malloc()/realloc()动态分配数组空间即可:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i=0;
char ch,*num=NULL;
while ((ch=getchar())!='\n') /*读取字符并存入num数组,以回车结束输入*/
{
num=num?realloc(num,sizeof(char)*++i):malloc(sizeof(char)*++i);
num[i-1]=ch;
}
num=num?realloc(num,sizeof(char)*++i):NULL;
num[i-1]='\0';
puts(num); /*输出字符串*/
free(num);
return 0;
}
//---------------------------------------------------------------------------