三、C语言中的分支与循环—for循环 (6)

 本章分支结构的学习内容如下:

三、C语言中的分支与循环—if语句 (1)

三、C语言中的分支与循环—关系操作符 (2)

三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)

三、C语言中的分支与循环—switch语句(4)分支结构 完


本章循环结构的学习内容如下:

三、C语言中的分支与循环—while循环 (5)

三、C语言中的分支与循环—for循环 (6)

三、C语言中的分支与循环—do-while循环 (7)

三、C语言中的分支与循环—break和continue语句(8)循环结构 完  


接下来我们开始for循环的学习,为什么有了while循环还要引入for循环呢?

  • for 循环:由于它将所有循环相关的元素(初始化、条件、更新)封装在一个语句中,因此通常更容易阅读和理解,特别是对于迭代过程。
  • while 循环:可能需要在循环体外初始化变量,在循环体内更新变量。这可能使得跟踪循环的状态和控制变量更加困难。

 我们一起来看看for循环是怎样工作的吧!

1.基本语法

for 循环在C语言中是一种常用的循环控制结构,用于在已知循环次数的情况下重复执行一段代码。

for (初始化表达式; 循环条件表达式; 更新表达式) {
    // 循环体
}
  • 初始化表达式:在循环开始之前执行一次。通常用于初始化循环控制变量。
  • 循环条件表达式:在每次循环迭代之前评估。如果为真(非零),则执行循环体。
  • 更新表达式:在每次循环迭代后执行。通常用于更新循环控制变量。
  • 循环体:如果循环条件为真,则执行的代码块。

2.执行流程 

  1. 初始化:首先执行初始化表达式。
  2. 条件检查:评估循环条件表达式。如果为真,进入循环体;如果为假,退出循环。
  3. 执行循环体:执行循环体内的代码。
  4. 更新表达式执行:执行更新表达式。
  5. 回到步骤2:再次检查循环条件表达式。

 3.while循环和for循环的对比

4.代码示例 

1)使用 for 循环从1打印到10

#include <stdio.h>

int main() {
    for (int i = 1; i <= 10; i++) {
        printf("%d\n", i);
    }
    return 0;
}

2)数组遍历

如何安全地输入数组,见二、C语言数据类型与变量(scanf和printf (4)完)scanf的安全用法

数组长度计算


数组遍历,我们首先需要知道数组的长度,再用“数组名[数组下标]”这种方法取出每一个元素

例如 初始化数组int arr[] = { 1, 2, 3, 4, 5 }; 我们想打印第一个元素,数组下标从0开始,即可以执行语句

int arr[] = { 1, 2, 3, 4, 5 }; 
printf("%d",arr[0]);

那么C语言中计算数组的元素个数的常见用法是:

int length = sizeof(arr) / sizeof(arr[0]);
  1. sizeof(arr):这部分计算整个数组 arr 在内存中占用的总字节数。

  2. sizeof(arr[0]):这部分计算数组中第一个元素的大小(字节数)。由于数组的所有元素都是同一类型,因此任何一个元素的大小都代表数组中每个元素的大小。

  3. 除法操作:将数组的总大小除以单个元素的大小,得到的结果就是数组中元素的数量。

arr是一个 int 类型的数组,每个 int 元素通常占用4个字节(这可能根据不同的系统和编译器而有所不同)。如果数组总共占用了40个字节,那么 sizeof(arr) / sizeof(arr[0]) 就是 40 / 4,结果是10,意味着这个数组有10个元素。

这种方法在计算静态数组(在编译时大小已知的数组)的长度时特别有用。但请注意,这种方法不适用于动态分配的数组(如使用 malloc 分配的数组)或指针,因为 sizeof 对于指针只会返回指针本身的大小,而不是它指向的内存区域的大小。动态数组我们以后再讨论。


遍历数组的代码如下: 

#include <stdio.h>
int main() {
    int arr[] = { 1, 2, 3, 4, 5 };//初始化一个数组
    int length = sizeof(arr) / sizeof(arr[0]);//整型变量length
    for (int i = 0; i < length; i++) {
        printf("%d\n", arr[i]);
    }
    return 0;
}

我们看一下结果,数组元素被成功打印。 


5.代码练习题

计算1~100之间3的倍数的数字之和

解法1 

#include <stdio.h>
int main()
{
	int sum = 0;//初始化变量和
	for (int i = 0; i <= 100; i++)
	{
		if (i % 3 == 0)
			sum += i;//如果i是3的倍数,就把i加进和里面
	}
	printf("%d", sum);
	return 0;
}

 结果如下:

优化解法

//如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{
 int i = 0;
 int sum = 0;
 for(i=3; i<=100; i+=3)
 {
 sum += i;
 }
 printf("%d\n", sum);
 return 0;
}

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林采采学编程+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值