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.所以我用累积的方法,每次给数的最左侧加一位,因为单纯只有位数的变化,所以这样处理更简便,但是程序复用性很低(不太能改改就用到别的程序里面)
链接跳转:
例题链接:
推荐文章: