【习题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;
}
相关推荐
dnbug Blog31 分钟前
C程序 基本语法
c语言·基本语法
AI科技星1 小时前
数术工坊・八卷全书(番外・实战升华副卷)【终极典藏定稿|完整无删减】
c语言·开发语言·网络·量子计算·agi
LuminousCPP2 小时前
数据结构 - 单链表第一篇:单链表基础操作
c语言·数据结构·经验分享·笔记·学习
WL学习笔记2 小时前
通讯录(顺序表实现)
c语言·数据结构·算法
不会C语言的男孩2 小时前
Linux 系统编程 · 第 1 章:Linux 系统概述
c语言·开发语言
2601_951645742 小时前
C语言环境搭建指南
c语言·编译器·开发环境·helloworld·集成开发环境
SongYuLong的博客2 小时前
openWRT补丁文件生成
c语言
小糯米6013 小时前
C语言文件操作
c语言·开发语言·数据结构
玖玥拾3 小时前
C/C++ 数据结构(四)链表与STL容器
c语言·数据结构·c++·链表·stl库
玖玥拾4 小时前
C/C++ 数据结构(一)基础概念、线性表链表
c语言·数据结构·c++·链表