【习题04】计算求和

题目:

求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。

方法一:

定义变量abase = a

进入循环操作,每次循环的核心操作是a*10+base,执行4次循环就可以得到这样的5个数。我们利用变量i控制循环次数,利用for构造循环体

定义变量sum用于每次循环的累加,得到最终结果。

方法二:

定义变量abase = atempcount

进入循环操作,每次循环的核心操作是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;
}
相关推荐
雨田言炎5 小时前
2026/9/5 C复习笔记(一)
c语言·笔记
wuyk5556 小时前
从零吃透 MQTT 通信|第 5 章 MQTT 心跳保活机制深度优化,断线检测与智能自动重连
c语言·开发语言·stm32·学习
luj_17688 小时前
虚实交融中的真实人物塑造
c语言·开发语言·网络·经验分享·算法
AC赳赳老秦8 小时前
农产品公开数据应用:OpenClaw 抓取农产品价格、产销公开数据,实现农产品行情动态监测
java·c语言·javascript·python·php·deepseek·openclaw
hope_wisdom9 小时前
C/C++数据结构之二叉树的遍历
c语言·数据结构·c++·二叉树·深度优先·广度优先
一木 之林10 小时前
五、C++ 新特性、关键字与编译原理(进阶)(一)
c语言·开发语言·c++
是隼人11 小时前
buuctf-pwn wustctf2020_closed(文件描述符)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
是隼人12 小时前
buuctf-pwn wdb_2018_3rd_soEasy(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
热心网友俣先生1 天前
2026国赛C题:五年命题规律与预测
java·c语言·前端·数学建模
wuminyu1 天前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++