C语言求一个数的整数位数与小数位数

我知道,利用字符串来做很简单,但是我想试试利用数能不能解决。
看了很久后,发现了一个很好用的函数modf,但是该函数只能做double类运算,所以输入量必须是duoble,然后利用循环求解即可。

编写一个程序,允许用户输入值,并打印出其中整数的个数和浮点数的个量。将循环设计为标记控制循环,使用零作为标记值。

这个是原题,不知道我有没有理解错

附上代码
#include <stdio.h>
#include <math.h>
int main()
{
double a,b;
int d=0,e=0;
scanf("%lf",&a);
double c;
c = modf(a,&b);

while((int)b !=0)
{
	b = b/10.0;
	d++;
}	

while((a-(int)a) !=0)
{
	a=a*10;
	e++;
}

printf("%d,%d",d,e);

return 0;
}

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以为您提供这个函的代码。以下是一个简单的实现,假设被除和除都是正: ```c #include <stdio.h> void divide(double dividend, double divisor, int *integerPart, double *fractionalPart, int *integerDigits, int *fractionalDigits) { *integerPart = (int)(dividend / divisor); *fractionalPart = dividend / divisor - *integerPart; // Count integer digits *integerDigits = 1; // At least one digit for the integer part int n = *integerPart; while (n >= 10) { n /= 10; (*integerDigits)++; } // Count fractional digits *fractionalDigits = 0; double f = *fractionalPart; while (f != 0 && *fractionalDigits < 6) { // Limit to 6 decimal places f *= 10; (*fractionalDigits)++; } } int main() { double dividend = 1234.5678; double divisor = 12.34; int integerPart; double fractionalPart; int integerDigits; int fractionalDigits; divide(dividend, divisor, &integerPart, &fractionalPart, &integerDigits, &fractionalDigits); printf("Dividend = %.4f\n", dividend); printf("Divisor = %.2f\n", divisor); printf("Integer part of quotient = %d\n", integerPart); printf("Fractional part of quotient = %.6f\n", fractionalPart); printf("Number of digits in integer part = %d\n", integerDigits); printf("Number of digits in fractional part = %d\n", fractionalDigits); return 0; } ``` 这个函将被除和除作为参传入,同时将整数部分、小部分、整数位数小数位存储在指针变量中。请注意,这个函只适用于正的情况。如果被除或除为负,则需要在函中进行额外的处理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值