gpt4 book ai didi

c - 为什么 return 在此代码中不起作用?

转载 作者:行者123 更新时间:2023-11-30 21:13:07 27 4
gpt4 key购买 nike

我用 C 语言创建了一个代码,用于查找长双数的小数点之外的总位数,这就是代码 -

#include <stdio.h>
int main(void)
{
long double number,temp; int num,count=0;
printf("\nEnter a number=");
scanf("%Lf",&number);
printf("\nEnter multiplication factor=");
scanf("%d",&num);
if(num>10)
{
printf("\nPlease enter a multiplicative factor <10");
return 1;
}
if(number>0)
{
for(int i=0;i<num;i++)
{
number=number*10;
temp=number-(int)number;
printf("\ntemp=%Lf\n",temp);
if(temp!=0)
{
count=count+1;
}
else
{
return 1;
}
}
printf("\nTotal number of decimal points=%d",++count);

}
else if (number<0)
{
number=(-1)*number;
for(int i=0;i<num;i++)
{
number=number*10;
temp=number-(int)number;
printf("\ntemp=%Lf\n",temp);
if(temp!=0)
{
count=count+1;
}
else
{
return 1;
}
}
printf("\nTotal number of decimal points=%d",++count);
}
else
{
printf("\nNumber has no decimal points\n");
}
}

我使用了可以通过示例理解的逻辑 -
如果数字=45.123
乘法因子=5
那么 number=45.123*10=451.23 和 temp=451.23-451=0.23
=451.23*10=4512.3 且温度= 4512.3-4512=0.3
=4512.3*10=45123 且温度= 45123.0-45123=0.0

这是程序应该终止的地方,因为我使用了 return 1,但它并没有以这种方式工作,因为程序将数字乘以 10 的次数,与使用乘法因子的次数相同。

这里是输出 -

aalpanigrahi@aalpanigrahi-HP-Pavilion-g4-Notebook-PC:~/Desktop/Daily programs$ ./decimal

Enter a number=45.123

Enter multiplication factor=5

temp=0.230000

temp=0.300000

temp=0.000000

temp=0.000000

temp=0.000000

Total number of decimal points=6

最佳答案

抱歉,我一开始误解了您的代码。问题是您正在使用 != 比较 float 和 int。你永远不应该这样做。尝试与

进行比较
if(temp!=0.0f)

更好的是与一个非常小的数字进行比较:

if (temp<0.00000001f)

像这样:

if(number>0)
{
for(int i=0;i<num;i++)
{
number=number*10;
temp=number-(int)number;
printf("\ntemp=%Lf\n",temp);
if(temp<0.0000001f)
{
count=count+1;
}
else
{
return 1;
}
}
printf("\nTotal number of decimal points=%d",++count);

}

关于c - 为什么 return 在此代码中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com