C语言关于double与int

这是我自己写的关于求 一个数位数 以及 各位数字 的程序 但是现在刚学C不知道怎么改 求告知,多谢了啊!!!

#include<stdio.h>
#include<math.h>
int main()
{
int i,j,t,num;
scanf("%d",&num);
for(i=1;;i++)
{
num=num/10;
if(num==0) break;
}
printf("num是%d位数\n",i);
printf("num的各位数字为:\n");
for(j=i-1;j>=0;j--)
{
t=num;
num=num/(pow(10,j));
printf("%3d\n",num);
num=t%pow(10,j);
}
}
错误提示:
Compiling...
H2.c
C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\cc程序\H2.c(17) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\cc程序\H2.c(19) : error C2297: '%' : illegal, right operand has type 'double '
Error executing cl.exe.

第1个回答  2014-03-17
第一条是警告,说你的num=num/(pow(10,j));这一句把一个double值赋给了一个int值会丢失精度。

第二条是错误,说num=t%pow(10,j);中%的右边是浮点数是非法操作。

第一条可以改成num=int(num/(pow(10,j)));
第二条可以改成num=t%(int)pow(10,j);
第2个回答  2014-03-17
pow(10,j) 返回的是double类型,而不是int类型, %取余两边只能是int类型,所以 num=t%pow(10,j);

就提示错误了。

//可以进行如下修改。
for(j=i-1;j>=0;j--)
{
int k=0;
int tenpow=1;
while(k<j) //自己计算pow。
{
tenpow = tenpow*10;
k++;
}
t=num;
num=num/tenpow; //
printf("%3d\n",num);
num=t%tenpow;
}本回答被网友采纳
第3个回答  2014-03-17
num=num/(pow(10,j));这是17行,警告的产生是因为:你的pow(10,j)返回的是double类型的值,因此,执行num/pow(10,j)的结果也是double类型的,但是将一个double类型的数据赋值给整型会截取整数部分,所以提示可能丢失数据。

num=t%pow(10,j);这是19行,错误产生的原因是:你的pow(10,j)返回 的是doulbe类型的值,而取余操作的被除数应该是整型的,因此报错。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网