C语言一道题很奇怪,哪位高手帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:31:35
吉大课程一道题,输出这东西:
1+11+111+1111...+111111111=
2+22+222+2222...+222222222=
9+99+999+9999...+999999999=
我用了个POW函数
#include <stdio.h>
#include <math.h>
main ()
{
int i,n;
long s=0,k=0,m;
for(n=1;n<=9;n++)
for(i=0;i<=9;i++)
{m=pow(10,i);
k=k+n*m;
s=s+k;
if(i==9)
printf("%ld=%ld\n",k,s);
else
printf("%ld+",k);
}
}
但是出来的玩意儿很恐怖..不知道哪里错了啊

for(n=1;n<=9;n++)
for(i=0;i<=9;i++)
{m=pow(10,i);
k=k+n*m;
s=s+k;
if(i==9)
printf("%ld=%ld\n",k,s);
else
printf("%ld+",k);
} 里面的for循环结束时要再给s和k赋初值,不然就带到下次的循环里了
你要求的是9位的 但是你做的是10位的 我给改了下

改为:
#include <stdio.h>
#include <math.h>
main ()
{
int i,n;
long s=0,k=0,m;
for(n=1;n<=9;n++)
{for(i=0;i<=8;i++)
{m=pow(10,i);
k=k+n*m;
s=s+k;
if(i==8)
printf("%ld=%ld\n",k,s);
else
printf("%ld+",k);
}s=0;k=0;
}
}