题目:
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
1、题目分析
我们观察这5个数
- 22=2*10+2
- 222=22*10+2
- 2222=222*10+2
- 22222=2222*10+2
通过以上列举,我们可以发现规律:每次得到的新a就是a*10+2(原始的a)。我们要构造一个变量记录原始的a。
方法一:
定义变量a、base = a。
进入循环操作,每次循环的核心操作是a*10+base,执行4次循环就可以得到这样的5个数。我们利用变量i控制循环次数,利用for构造循环体
定义变量sum用于每次循环的累加,得到最终结果。
方法二:
定义变量a、base = a、temp、count。
进入循环操作,每次循环的核心操作是a*10+base,执行循环就得到5个新a。循环结束的条件是得到的新a位数为5 。变量temp是得到的新a的一份临时拷贝,用于计算新a的位数,count充当计数器的作用求位数。
定义变量sum用于每次循环的累加,得到最终结果。
2、代码演示
c
//方法一
int main()
{
int a = 0;
scanf("%d", &a);
int base = a;
int sum = a;
int i = 0;
for (i;i < 4;i++)//循环4次
{
a = a * 10 + base;//得到新a
sum += a;//累加
}
printf("%d", sum);
return 0;
}

c
//方法2
int main()
{
int a = 0;
scanf("%d", &a);
int base = a;
int sum = a;
while (1)//进入循环
{
a = a * 10 + base;//得到新a
sum += a;//累加
int temp = a;//临时拷贝a(新a)
int count = 0;//构造计数器
while (temp)//计算新a的位数
{
temp /= 10;
count++;
}
if (count == 5)//新a的位数为5,跳出循环
{
break;
}
}
printf("%d", sum);
return 0;
}