学习啦>学习英语>专业英语>计算机英语>

c语言for语句的用法

时间: 长思709 分享

  C、C++、C#和Java这些语言中,for语句的语法和执行流程都是一样的。本文将就这一语句的在C语言中的用法进行一个较为深入的讨论。

  c语言for语句的用法:

  复制代码 代码如下:

  for (表达式1;表达式2;表达式3)

  {

  循环语句

  }

  表达式1 给循环变量赋初值

  表达式2 为循环条件

  表达式3 用来修改循环变量的值,称为循环步长。

  for语句的执行流程:

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

  这是累加问题,累加问题的通用表达式为:S = S + T;

  其中,S是一个变量,用来存储累加最后的结果,称之为累加器;T是一个表达式,代表每次需要加入累加器的中的值。

  累加一般是通过循环结构实现的。循环之前要设置累加器S的初始值为0。

  累加项T可以是很简单的表达式,也有可能是一个通过分析得到的较复杂的表达式。

  ?

  1

  2

  3

  4

  5

  6int 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。

  ?

  1

  2

  3

  4

  5

  6

  7

  8int 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次幂之和等于它本身。

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28// 打印出所有的水仙花数

  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);

  }

  }

  最后我用例子来总结一下吧! 下面的例子是一个对1-10这10个数求和的例子。

  复制代码 代码如下:

  int i, sum = 0, num = 10; // 声明几个变量:i 计数, sum 存储最后的总和, num 表示多少个数,用来控制边界。

  for(i = 1; i <= num; i++) // for语句包含三个语句,用;隔开。

  { //1设置初始值,2边界控制,3通常用来调整计数值。

  sum += i; // 相当于 sum = sum + i; 表示不断地加i。 {}内的语句均为循环体,用4表示。

  } // for循环的执行顺序为 1-2-4-3-2-4-3-2-4-3-2................直到i > num.这时,将退出循环。

  printf("The sum from 1 to 10 is ", sum); // 打印输出sum值。

512642