#include<stdio.h>
#include<math.h>
int main()
{
int a,n;
scanf("%d %d",&a,&n);
int i,sum=0,t=0;
for(i=0;i<n;i++){
t=t+pow(10,i);
printf("t=%d\n",t);
sum+=a*t;
printf("s = %d\n", sum);
}
printf("s = %d\n", sum);
return 0;
}
2 3
t=1
s = 2
t=11
s = 24
t=110
s = 244
s = 244
--------------------------------
Process exited with return value 0
Press any key to continue . . .
問下,為什么那個t第三次的時候就掉了個1,不應該是111嗎
uj5u.com熱心網友回復:
難道是編譯器的問題 。。。uj5u.com熱心網友回復:
修改如下,供參考:#include<stdio.h>
int main()
{
int a,n;
scanf("%d %d",&a,&n);
int i,sum=0,t=0;
for(i=0;i<n;i++){
t = t*10 + 1; //t=t+pow(10,i);
printf("t=%d\n",t);
sum+=a*t;
printf("s = %d\n", sum);
}
printf("s = %d\n", sum);
return 0;
}
兩種方式結果相同:
uj5u.com熱心網友回復:
很多初學者老是把截斷當成誤差,其實它是錯誤。浮點數賦值給整型的時候不是四舍五入,是截斷的。
賦值前先加上0.5才是對自己負責。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243707.html
標籤:C語言
下一篇:求助
