5.1<常用算法>迭代法(累和、累积)(C语言)

1 累和(累加):i += j;【i  = i + j】

1)初始化

i=0;

2)对迭代过程进行控制。

  确定在什么时候结束迭代过程。

【算法的有穷性】

2 累积:i *= j; 【i  = i * j】

1)初始化

i=1;

(如果累积的 i 初始化为0,那么结果总为0)

2)对迭代过程进行控制。

  确定在什么时候结束迭代过程。

【算法的有穷性】

引入题目:

//求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
//例如2+22+222+2222+22222(此时共有5个数相加),
//几个数相加由键盘控制。


#include<stdio.h>

void main() {
	int a=0,b=0,i, j=0,num=0;

	printf("请输入你想要几个数相加!");
	scanf("%d", &a);

	printf("请输入你想要什么数相加!");
	scanf("%d", &b);

	for (i = 1; i < a + 1; i++) {
		j += b;			//j为本轮的数字
		b *= 10;		//b = b * 10;	b的值依次为2,20,200...
		num += j;		//num = num + j;  num为每一轮数的累和
		
		printf("第%d个数为:%d\n",i, j);	//便于检查和读者理解
		
	}
	printf("最后的结果是:%d\n", num);

}

在下面的例题链接,菜鸟用while循环的方式解题,这里我用自己的思路,感觉更好理解一点

我的解题思路:

1.依照题意,累加的数都是整数,我们可以判断数据的类型为整型int。

2.设置a,b用于存放我们需要键盘输入的两个变量,个数,数。

3.设置i用来控制循环的次数,我给i初始化为1,是为了便于初学者理解,i<a+1 也就是循环a次。如果初始化i=0,那么就是 i < a 就是循环a次。如果难以理解,给a代入3或者其他较小的数,就能理解了。

4.在程序运行过程中a被键盘赋值后,是不能再改变的,所以后面不能再用a来存放其它数据。

5.依据题意,每轮的数字,最后的结果都需要单独存放,所以我又定义了j用来放每轮的数,num用来放最终的结果。

6.通过对题的观察,发现每个数的每一位都是一样的,只有位数每次加1.

7.所以我用累积的方法,每次给数的最左侧加一位,因为单纯只有位数的变化,所以这样处理更简便,但是程序复用性很低(不太能改改就用到别的程序里面)

链接跳转:

迭代法 详解 - youxin - 博客园 (cnblogs.com)

C语言函数---递归与迭代_分别用迭代和递归方法编写函数,求 baseexp。-CSDN博客

例题链接:

C 练习实例18 | 菜鸟教程 (runoob.com)

推荐文章:

杨辉三角(输出靠左聚拢版)-CSDN博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
<form class="ant-form ant-form-horizontal"><div class="ant-row ant-form-item"style="row-gap: 0px;"><div class="ant-col ant-form-item-label"style="width: 100px;"><label for="form_item_licDetailType"class="ant-form-item-required"title="license类型">license类型<!----></label></div><div class="ant-col ant-form-item-control"><div class="ant-form-item-control-input"><div class="ant-form-item-control-input-content"><div class="ant-select ant-select-single ant-select-allow-clear ant-select-show-arrow"><!----><div class="ant-select-selector"><span class="ant-select-selection-search"><input type="search"id="form_item_licDetailType"autocomplete="off"class="ant-select-selection-search-input"role="combobox"aria-haspopup="listbox"aria-owns="form_item_licDetailType_list"aria-autocomplete="list"aria-controls="form_item_licDetailType_list"aria-activedescendant="form_item_licDetailType_list_0"readonly=""unselectable="on"style="opacity: 0;"aria-expanded="false"></span><!----><span class="ant-select-selection-placeholder">请选择</span></div><span class="ant-select-arrow"unselectable="on"aria-hidden="true"style="user-select: none;"><span role="img"aria-label="down"class="anticon anticon-down ant-select-suffix"><svg focusable="false"class=""data-icon="down"width="1em"height="1em"fill="currentColor"aria-hidden="true"viewBox="64 64 896 896"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></span></span><!----></div></div><!----></div><!----><!----></div></div></form> 请进行selemiu 元素定位
07-13
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值