这是我自己写的关于求 一个数位数 以及 各位数字 的程序 但是现在刚学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.
第二条是错误,说num=t%pow(10,j);中%的右边是浮点数是非法操作。
第一条可以改成num=int(num/(pow(10,j)));
第二条可以改成num=t%(int)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;
}本回答被网友采纳
num=t%pow(10,j);这是19行,错误产生的原因是:你的pow(10,j)返回 的是doulbe类型的值,而取余操作的被除数应该是整型的,因此报错。