主题:请教高手
以下是在一本书里看到的计算:1+11+111+1111.......数列的程序,但经验证感觉有错,修改了一下,程序二,但还是错,找不到原因,求各位高手指点一下,谢谢!
书上原程序:
#include"stdio.h"
#include"math.h"
main()
{
int a,x,n=1;
long i=1,tn,sum=0;
scanf("%d%d",&a,&x);
tn=a;
while(n<=x)
{
sum+=tn;
tn=tn*10+x;
n++;
}
printf("result is %ld",sum);
getch();
}
[color=FF0000]此程序运行:当a=1,x=2时,输出为13,结果显然是错误的;[/color]
修改后程序二:
#include"stdio.h"
#include"math.h"
main()
{
int a,x,n=1;
long tn;
scanf("%d%d",&a,&x);
tn=a;
while(n<x[color=FF0000])/*去掉了“=”*/[/color]
{
tn=tn*10+x[color=800000];/*去掉了sum一行,直接用tn代替*/[/color]
n++;
}
printf("result is %ld",tn);/[color=FF0000]*用tn代替sum输出*/[/color]
getch();
}
本人觉得tn=tn*10+x就能达到求和sum的功能,因此去掉了sum,但是当x>=3时还是有错误,不知何故?
书上原程序:
#include"stdio.h"
#include"math.h"
main()
{
int a,x,n=1;
long i=1,tn,sum=0;
scanf("%d%d",&a,&x);
tn=a;
while(n<=x)
{
sum+=tn;
tn=tn*10+x;
n++;
}
printf("result is %ld",sum);
getch();
}
[color=FF0000]此程序运行:当a=1,x=2时,输出为13,结果显然是错误的;[/color]
修改后程序二:
#include"stdio.h"
#include"math.h"
main()
{
int a,x,n=1;
long tn;
scanf("%d%d",&a,&x);
tn=a;
while(n<x[color=FF0000])/*去掉了“=”*/[/color]
{
tn=tn*10+x[color=800000];/*去掉了sum一行,直接用tn代替*/[/color]
n++;
}
printf("result is %ld",tn);/[color=FF0000]*用tn代替sum输出*/[/color]
getch();
}
本人觉得tn=tn*10+x就能达到求和sum的功能,因此去掉了sum,但是当x>=3时还是有错误,不知何故?