【C语言】-循环结构-for语句

for语句:

for (表达式1;表达式2;表达式3)
{
  循环语句
}
  • 表达式1 给循环变量赋初值
  • 表达式2 为循环条件
  • 表达式3 用来修改循环变量的值,称为循环步长。算法

    for语句的执行流程:

    for语句的执行流程

    例:编程计算:1+2+3+...+99+100的结果。

    这是累加问题,累加问题的通用表达式为:S = S + T;
    其中,S是一个变量,用来存储累加最后的结果,称之为累加器;T是一个表达式,表明每次须要加入累加器的中的值。
    累加通常是经过循环结构实现的。循环以前要设置累加器S的初始值为0。
    累加项T能够是很简单的表达式,也有多是一个经过分析获得的较复杂的表达式。
int S = 0;
for (int i = 1; i <= 100; i++)
{
   S = S + i;
}
printf("%d\n",S);

注意:

1)对于已经肯定是累加算法的题目,首先肯定累加项与循环变量的关系;
2)而后,考虑第一个累加项的值是多少,以肯定循环变量的初值;
3)其次,肯定最后一个累加项的值,肯定循环条件;
4)最后,考虑每一个累加项之间的关系,以肯定循环变量的变化(步长值)。编程

例:编程计算S = a + aa + aaa + aaaa + ... 的前n项之和。

例如:若是a = 3,n = 5,则表达式为:S = 3 + 33 + 333 + 3333 + 33333。设计

int S = 0;
int t = 0;
for (int i = 0;i < 5;i++ )
{
   t = t * 10 + 3;
   S = S + t;
}
printf("%d\n",S);
累加算法也能够演化为连乘的形式:S = 1 * 2 * 3 * ... * n。
连乘的算法和累加算法类似,循环体实现的是S = S * T的形式。须要注意的S的初值不是0,而是要设为1。
在求连乘时,因为每乘一次结果增加都很是快,因此应该注意是否会出现溢出的问题。

循环程序设计思路:

(1)输入是什么?用来肯定原始值。

(2)输出是什么?肯定应该输出的结果。

(3)从输入转换为输出须要怎样的步骤,是否须要重复(肯定是否须要使用循环语句以及循环语句的内容)。

(4)若是须要重复,可否提早预知重复的次数?用来肯定使用while、do while、for中的哪一种循环语句。

(5)什么时候再也不须要重复?用来肯定循环条件以及循环体中使循环条件趋近于0的语句。

例:水仙花数、四叶玫瑰数、五角星数、六位数的问题。

水仙花数:每位数字的3次幂之和等于它自己。例:1^3 + 5^3 + 3^3 = 153。
四叶玫瑰数:每位数字的4次幂之和等于它自己。
五角星数:每位数字的5次幂之和等于它自己。
六位数:每位数字的6次幂之和等于它自己。code

// 打印出全部的水仙花数
int i,j,k,n,s;
for(i = 1;i <= 9;i++)
   for(j = 0;j <= 9;j++)
      for(k = 0;k <= 9;k++)
      {
         n = k * k * k + j * j * j + i * i * i;
         s = i * 100 + j * 10 + k;
         if (n == s)
         {
            printf("%d\n",n);
         }
       }

或:

// 打印出全部水仙花数
        int i,j,k,n,s;
        printf("水仙花数有:\n");
        for(n = 100;n < 1000;n++)
        {
            i = n / 100;          /*分解出百位*/
            j = n / 10 % 10;     /*分解出十位*/
            k = n % 10;          /*分解出个位*/
            s = i * i * i + j * j * j + k * k * k;
            if(s == n)
            {
                printf("%d\n",n);
            }
        }
相关文章
相关标签/搜索