【习题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。

方法一:

定义变量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;
}
相关推荐
HUANGZHENXUAN1236 小时前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
§ꦿCFོ༉9 小时前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
David猪大卫18 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Zwawa1 天前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
武子康1 天前
h3.c 的两个权重槽,怎样把内存压力换成 SSD 等待
c语言·人工智能·agent
§ꦿCFོ༉2 天前
嵌入式八股—C语言入门学习(一)
c语言·编程语言·嵌入式八股文
沐晓时光2 天前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
智者知已应修善业2 天前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
布莱克6053 天前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
揽星河..3 天前
【C语言】底层程序设计
c语言·开发语言