1.问题描述
输入两个正整数a和n,然后计算并输出以下公式的结果:
a+aa+aaa+...+a...a
其中,a是一个一位数,n是a重复的次数,例如,当a=2,n=3时,公式为:
2+22+222
2.源代码
#include <stdio.h>
int main()
{
int a,n;
int i;
int sum=0;
int total=0;
int count=0;
scanf("%d,%d",&a,&n);
for(i=1;i<=n;i++){
sum=sum*10+a;
count++;
if(count<n){
printf("%d+",sum);
}
else{
printf("%d",sum);
}
total=total+sum;
}
printf("=%d",total);
return 0;
}
3.代码思路
- 在main函数中,首先定义六个整数变量a,n,i,sum,total,count。a和n用来存储输入的值,i用来控制循环次数,sum用来存储每一项的值,total用来存储总和的值,count用来记录已经输出的项数。
- 使用scanf函数从标准输入读取a和n的值,以逗号分隔。
- 使用一个for循环,从1开始,每次加1,直到n,每次执行以下操作:
- 计算sum的值,它是公式中的第i项,即
a...a
。它利用了上一项的值,乘以10,再加上a,避免重复计算。 - 增加count的值,表示已经输出了一项。
- 判断count是否小于n,如果是,说明还有后续的项,就输出sum的值,并加上一个加号。如果不是,说明已经是最后一项,就输出sum的值,不加加号。
- 计算total的值,它是公式的前i项之和,即
a+aa+...+a...a
。它利用了上一次的值,加上sum的值,避免重复计算。
- 计算sum的值,它是公式中的第i项,即
- 输出一个等号,表示公式的结果。
- 输出total的值,表示公式的结果。
- 返回0,表示程序正常结束。