求Sn = a+aa+aaa+aaaa+aaaaa的和

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 先把每一项求出来,再求和
// 第1项 2
// 第2项 22 = 20 + 2 = 2*10 + 2 = 2*10^1 + 2*10^0
// 第3项 222 = 200 + 20 + 2 = 2*100 + 2*10 +2 = 2*10^2 + 2*10^1 + 2*19^0
// 第4项 2222 = 2*10^3 + 2*10^2 +2*10^1 + 2*10^0

// 创建出第n项的内容
int CreatNum(int a, int n) {
	if (a > 9 || a <= 0 || n<= 0) {
		return 0;
	}
	int num = 0;
	// i:10的指数
	for (int i = 0; i < n; ++i) {
		// pow 返回值是 double,  double*int = double, double+int = int,丢失精度
		num += a*(int)pow(10, i);
	}
	return num;
}
int main() {
	printf("%d\n", CreatNum(2, 5));
	int a = 1;
	int sum = 0;
	for (int i = 1; i <= 5; ++i) {
		sum += CreatNum(a, i);
	}
	printf("sum = %d\n", sum);
	system("pause");
	return 0;
}

具体这个代码是是可以通过改变CreatNum的参数来计算不同数字的任意多项的和。还有本题需要注意的一点是power的返回值是double类型,而double*int = double, double+int = int,这样会丢失精度,所以为了避免出现这个警告,可以加上一个强转类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值