c语言问题 高手请进~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/29 02:40:04
有一道这样的题:
求Sn=a+aa+aaa+...+aa...a(共n个a),其中a是一个数字,n表示a的位数,
例如,2+22+222+2222+22222(此时n=5)
n有键盘输入
书上的程序如下:
#include<stdio.h>
void main()
{
int a,n,count=1,sn=0,tn=0;
printf("请输入a和n的值\n");
scanf("%d,%d",&a,&n);
while(count<=n)
{
tn=tn+a;/*tn为n个a组成数的值*/
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+aaa+...=%d\n",sn);
}
但是我看不懂,请各位高手帮忙看看,分析分析,要详细点~~~~谢谢!!!

#include<stdio.h>
void main()
{
int a,n,count=1,sn=0,tn=0;
printf("请输入a和n的值\n");
scanf("%d,%d",&a,&n);
while(count<=n)
{
tn=tn+a;/*tn为n个a组成数的值*/
sn=sn+tn;//sn是每次加法后的结果
a=a*10;//每次循环a变为原来的十倍
++count;//count记录循环次数
}
printf("a+aa+aaa+...=%d\n",sn);
}
举个例子,比如a=2,n=3;
1.tn=2,sn=0+2=2,a=2*10=20,count=2
2.tn=20+2=22,sn=2+22, a=200, count=3
3.tn=200+22=222,sn=222+22+2,a=2000,count=4
4.n>3,跳出while
最后输出sn=2+22+222

楼上说对,
基本意思就是11111=1+ 1*10 + (1*10)*10 + ((1*10)*10)*10 + (((1*10)*10)*10 )*10