【习题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;
}
相关推荐
躺柒13 小时前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
十月的皮皮13 小时前
STM32从零到量产开发:四路继电器工业控制模块开发— 继电器模块bsp_di.h与 bsp_di.c文件
c语言·stm32·stm32cubemx·hal库
wuyk55515 小时前
67.嵌入式C语言进阶:结构体指针实战指南——STM32外设、传感器数据访问的高效技巧
c语言·开发语言·stm32·单片机
我不管我就要叫小猪15 小时前
C/C++----命名空间
c语言·开发语言·c++
白白白小纯16 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
无忧.芙桃16 小时前
数据结构之堆
c语言·数据结构·c++·算法·
2301_7779983416 小时前
Linux线程控制——从线程创建到线程分离(第三部分:线程等待 pthread_join)
linux·运维·服务器·c语言·c++
LONGZETECH16 小时前
新能源汽车动力系统仿真硬核拆解:五系统分层架构的设计逻辑与技术权衡
c语言·开发语言·架构·汽车·汽车仿真教学软件·汽车教学软件
白白白小纯17 小时前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
麻瓜老宋18 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十步,魔法数修复、测试分隔符、位运算截断检查、进制溢出检查
c语言·开发语言·atomcode