C语言for语句用法详解

 更新时间:2015年11月24日 09:16:55   投稿:hebedich  
今天,小编讲诉C语言中循环语句(for)的使用方法,作为示例,以一个简单的例子讲诉for语法。

首先,这里所提到的类C语言指的是如C、C++、C#和Java等语法和C语言一样或类似的程序设计语言。这些语言中,for语句的语法和执行流程都是一样的。本文将就这一语句的用法进行一个较为深入的讨论。

for语句:

复制代码 代码如下:
for (表达式1;表达式2;表达式3)
{
  循环语句
}

表达式1 给循环变量赋初值
表达式2 为循环条件
表达式3 用来修改循环变量的值,称为循环步长。

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

// 打印出所有的水仙花数
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值。

相关文章

  • C语言 bind()函数案例详解

    C语言 bind()函数案例详解

    这篇文章主要介绍了C语言 bind()函数案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++中函数模板与类模板的简单使用及区别介绍

    C++中函数模板与类模板的简单使用及区别介绍

    这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,文章还讨论了模板的关键区别、注意事项以及它们在实际编程中的应用,感兴趣的朋友一起看看吧
    2025-03-03
  • C语言中二级指针解析(指向指针的指针)

    C语言中二级指针解析(指向指针的指针)

    这篇文章主要介绍了C语言中二级指针(指向指针的指针),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 详解C++异常处理三个重要组成部分

    详解C++异常处理三个重要组成部分

    这篇文章主要为大家介绍了C++异常处理的三个重要组成部分示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 详解C++中OpenSSL动态链接库的使用

    详解C++中OpenSSL动态链接库的使用

    这篇文章主要介绍了OpenSSL动态链接库的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 用C语言实现猜数字游戏

    用C语言实现猜数字游戏

    这篇文章主要为大家详细介绍了用C语言实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • C++ opencv实现在图片上画一条线示例代码

    C++ opencv实现在图片上画一条线示例代码

    这篇文章主要为大家介绍了C++ opencv实现在图片上画一条线的示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C语言 while for do while循环体详解用法

    C语言 while for do while循环体详解用法

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件
    2021-10-10
  • c++之time_t和struct tm及时间戳的正确使用方式

    c++之time_t和struct tm及时间戳的正确使用方式

    C++中处理时间的常用数据类型有time_t和struct tm,time_t通常用来表示时间戳,即从1970年1月1日至今的秒数,struct tm是一个结构体,用来存储年、月、日、时、分、秒等信息,时间戳可以通过gmtime()转换为struct tm类型,反之亦然
    2024-10-10
  • c语言动态内存分配知识点及实例

    c语言动态内存分配知识点及实例

    在本篇文章里小编给大家整理的是关于c语言动态内存分配知识点及实例,需要的朋友们可以学习下。
    2020-03-03

最新评论