大家帮忙看一下,这两个程序为什么有不同结果?

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:43:51
问题是求s=a+aa+aaa+aaaa+……的值,其中a是一个数字,n表示a的位数,都由键盘输入
例如:2+22+222+2222+2222(此时n=5)

我编了两个程序,其中第一个很正常,
但是第二个程序,老是会和标准差一点,
比如说:
输入2 (空格) 3
结果是245,事实上是246,
输入2(空格)5
结果是24686,事实上是24690。
这是为什么啊?

第一个:
#include <stdio.h>
#include <math.h>
int main()
{
int a,n,i=1;
long s=0,m=0;
scanf("%d%d",&a,&n);

while(i<=n)
{
i++;
m+=a;
s+=m;
a*=10;
}
printf("%ld",s);
getchar();getchar();
}
×××××××××××××××××××
×××××××××××××××××××
第二个:
#include <stdio.h>
#include <math.h>
int main()
{
int a,n,i=1;
long s=0,m=0;
scanf("%d%d",&a,&n);
for(i=0;i<n;i++)
{
m+=a*(pow(10,i));
s+=m;
}

printf("%ld",s);

第二个程序应该不是这样的结果才对呀!我觉得你第二个程序少循环一个,结果应该比实际相差很大的!!

我把你的代码复制试了一下,没有问题?2 3就是246,2 5就是24690。

我机子上也没问题。