【习题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;
}
相关推荐
晓蛋5 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
傲世仙尊5 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿5 天前
重载、重写(覆盖)、重定义区别
c语言
phltxy5 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
phltxy5 天前
C 语言中的数据存储:从类型到二进制位
c语言
wuminyu5 天前
HotSpot的轻量锁与膨胀后的ObjectMonitor状态重建原理
java·linux·c语言·jvm·c++
码不停蹄Zzz5 天前
指针用法篇——malloc和free指针详解
c语言
彧azz5 天前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构
白色的北极熊5 天前
c语言 牛客网 BC15
c语言
老当益壮梁奶奶6 天前
ARM汇编学习笔记(六):【i.MX6ULL】时钟系统与定时器(EPIT & GPT)
c语言·arm开发·嵌入式硬件·学习·51单片机