c语言循环的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:50:16
求sn=a+aa+aaa+...+aa...a的值,其中a是一个数字。a,n由键盘
输入。

正确答案:#include<stdio.H>
main()
{ int a,n,i=1,sn=0,tn=0;
scanf("%d%d",&a,&n);
while(i<=n)
{ tn=tn+a;
sn=sn+tn;
a*=10;
i++;
}
printf("%d",sn);
}
结果是24600
我的第一个程序:
#include<stdio.H>
main()
{ int a,n,i,t=1,s=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{t=t+a;
s=s+t;
a*=10;}
printf("%d\n",s);
}
思路是:先将个位数上的a相加,再加上n-1个10*a,。。。以此类推,但结果是25695

我的第二个程序:
#include<stdio.H>
main()
{ int a,n,i=1,sn=0,tn=0;
scanf("%d%d",&a,&n);
while(i<=n)
{ tn=tn+a;
sn=sn+tn;
a*=10;
i++;
}
printf("%d",sn);
}
是复杂一点,可是道理和第一个一样。结果是927

请问我错在哪里了,谢谢!

j=n;
for(i=1;i<=n;i++)
{
t=a*(j--); //j*a表示个位数字之和。个位上有N个A,所以是N*A不是相加/
s=s+t;
a*=10;
}

第二个一样的错误。

int tn=0,sn=0,i;
for(i =1;i<=n;i++)
{
tn=tn*10+a;
sn+=tn;
}

printf("%d\n",sn);

第二个没错啊……