当前位置: 代码迷 >> C语言 >> [求助]如何将这段错误的代码修改正确?
  详细解决方案

[求助]如何将这段错误的代码修改正确?

热度:234   发布时间:2006-04-18 18:44:00.0
[求助]如何将这段错误的代码修改正确?
老师布置了一道作业,题目如下:求:Sn=a+aa+aaa+...+aaa.....a之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
我写的代码如下:
#include<stdio.h>
#include<math.h>
main()
{
long i,n,c,s=0,f=0,a;
long pow = 1;
scanf("%ld %ld",&n,&a);
for(c=1;c<n;c++)
{
s=0;
for(i=1;i<c;i++)
{
s+=pow*a;
pow*=10;
}
f+=s;
}
printf("s=%ld\n",s);
}
可是得不到正确结果,应该怎么修改才对?
搜索更多相关的解决方案: 代码  

----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
long i,n,c,s=0,f=0,a;
long pow=1;
scanf("%ld%ld",&n,&a);
for(c=1;c<=n;c++)
{
s=0;
pow=1;
for(i=0;i<c;i++)
{
s+=pow*a;
pow*=10;
}
f+=s;
}
printf("s=%ld\n",f);
}

----------------解决方案--------------------------------------------------------
以下是引用lemd在2006-4-18 18:44:00的发言:
老师布置了一道作业,题目如下:求:Sn=a+aa+aaa+...+aaa.....a之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
我写的代码如下:
#include<stdio.h>
#include<math.h>
main()
{
long i,n,c,s=0,f=0,a;
long pow = 1;
scanf("%ld %ld",&n,&a);
for(c=1;c<=n;c++)//注意等号
{
s=0;
pow=1;//添上这句,不然POW的值随下面*10增加;
for(i=1;i<=c;i++)//注意等号
{
s+=pow*a;
pow*=10;
}
f+=s;
}
printf("s=%ld\n",s); //应该是F,因为你用F来累加;
}
可是得不到正确结果,应该怎么修改才对?


----------------解决方案--------------------------------------------------------

  相关解决方案