FOR循环 c++

本文介绍了C++中的for循环,强调其作为一种计数控制循环的特性,详细讲解了for循环的格式和工作原理,并通过多个实例展示了如何使用for循环进行编程,包括计算平均年龄、求奇数和以及特殊序列的求和问题。

for循环引入:

现实生活中,有许多重复执行的事件,大家还记得小学学习算盘时,有一题需要计算:

1+2+…+100 = 5050

计算过程:我们从1一直累加到100,对于每个数我们都做相同的操作,即累加到 算盘 上。


其实计算机特别擅长做重复的事,对于算盘计算问题,我们用c++来实现就特别简单:

int ans = 0;
for (int i = 1;i <= 100;i ++){
	ans += i;
}

他们的执行过程完全一样,但是计算机代替我们做了重复的事情,这就是循环

学习for循环:
        for循环是一种计数控制循环,即我们知道循环执行的确切次数,重复特定次数的循环就称为计数控制循环。
        例如,算盘例子中,我们知道求和需要重复累加100次,这实际上意味着,循环数为 12。

计数控制循环必须具有 3 个要素:

1、必须将循环变量初始化为起始值。
2、必须通过将其与最终值进行比较来测试循环变量。当循环变量达到其最终值时,循环终止。
3、必须在每次迭代期间更新循环变量。这通常通过变量递增或递减来完成。

for 循环专门用于初始化、测试和更新循环变量。

 for循环有格式!!!

以下是 for 循环的格式:

for (初始化;测试;更新)
{
    语句;
    语句;
    //根据需要在此放置更多语句
}

      如果循环体中只有一个语句,则可以省略大括号。

      for 循环的第一行是循环头。在关键词 for 之后,括号内有 3 个表达式,用分号分隔(注意第 3 个表达式之后没有分号):

      第一个表达式是初始化表达式,它通常用于将循环变量初始化为其起始值。这是循环执行的第一个动作,只做一次。

      第二个表达式是测试循环变量。它控制循环的执行。只要这个条件为 true,for 循环的主体将重复,它在每次迭代之前判断测试表达式。

       第三个表达式是更新表达式。它在每次迭代结束时执行。通常,这是一个递增循环计数器变量的语句。

简单的例子:

以下是一个简单的 for 循环示例,将打印“Hello”字符串 5 次:

for (count = 1; count <= 5; count++)
    cout << "Hello" << endl;

     在该循环中,初始化表达式为 count = 1,测试表达式为“count <= 5”,更新表达式为 count++。循环的主体只有一个语句,即 cout 语句。下图说明了循环执行过程中发生的事件顺序。

      请注意,只要测试表达式为真,就重复步骤 3〜4。图 2 以流程图形式显示了 for 循环的一般逻辑。

      请注意如何使用计数器变量 count 来控制循环迭代的次数。它的值从 1 开始,每次循环迭代之后递增 1。只要表达式 "count <= 5" 保持为 true,循环将重复迭代。但是,在 5 次迭代之后,count 将变成 6,这导致测试表达式变为 false,所以循环终止。

      还要注意的是,在这个例子中,count 变量仅在循环头中使用,以控制循环迭代的次数。它不用于任何其他目的。当然,也可以在循环体内使用计数器变量。例如,来看下面的代码:

for (number = 1; number <= 5; number++)
    cout << number << " ";

      此循环中的计数器变量为 number。除了控制迭代次数之外,它也被用在循环体中

简单的例题:

       

first:       

        班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入格式:

第一行有一个整数n(1≤ n ≤ 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。

输出格式:

输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

限制:

空间限制:128MByte

时间限制:1秒

样例:

输入:
2
18
17
输出:
17.50

         分析:

                就是单纯的输入然后计算输出即可。

        代码:

                

#include <bits/stdc++.h>
  using namespace std;
int main(){
	int n,sum=0;
	int age[100];
	float b;
	cin >> n;
	for(int i=0;i<n;i++){
		scanf("%d",&age[i]);
		sum+=age[i];
	}
	b=(float)sum/n;
	printf("%.2lf",b);
    return 0;
}

second:

        计算非负整数m到n(包括m和n)之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。

输入格式:

两个数 m 和 n,两个数以一个空格分开,其中 0 ≤ m ≤ n ≤ 300 。

输出格式:

输出一行,包含一个整数,表示m到n(包括m和n)之间的所有奇数的和。

限制:

空间限制:128MByte
时间限制:1秒

样例:

输入:
7 15
输出:
55

 分析:

        从m到n的单数相加,有two种方法:

        (1):遍历m到n,判断是不是单数,是那就加

          (2):遍历m到n的单数,如果m是单数,直接i+=2,反之 把m+1后遍历。

代码:

        方法1:

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int m ,n ,sum = 0;
	cin >> m >> n;
	for(int i = m;i <= n;i++)
	{
		if(i% 2 != 0)
		{
			sum += i;
		}
	}
	cout<<sum;
	return 0;	
}

        方法2:

        

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int m ,n ,sum = 0;
	cin >> m >> n;
  if(m % 2 == 0)
  {
     m += 1;
  }
	for(int i = m;i <= n;i+=2)
	{
			sum += i;
	}
	cout<<sum;
	return 0;	
}

Finally:

编写程序,输入n的值,求 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + … + (-1)n-1·1/n 的值。

输入格式:

输入一个正整数n。1 <= n <= 1000。

输出格式:

输出一个实数,为表达式的值,保留到小数点后四位。

限制:

空间限制:128MByte
时间限制:1秒

样例:

输入:
2
输出:
0.5000

 分析:

        按照数学思想计算即可。

代码:

#include<iostream>
int main()
{
	int n,a=1,b=2;
	double c=0;
	scanf("%d",&n);
	for(int i=1;i<n;i++)
    {
		c+=1.0/a-1.0/b;
		a=b+1,b=a+1;
	}
	printf("%.4lf",c);
	return 0;
}

总结:

for循环十分重要,也有很多可以优化的地方,要持续的学才行。

C++ 中,`for` 循环是一种常用的控制结构,用于在特定条件下重复执行代码块。它的语法灵活,适用于已知循环次数或需要精确控制循环变量的场景。 ### 基本语法 `for` 循环的基本语法如下: ```cpp for (初始化表达式; 条件表达式; 迭代表达式) { // 循环体代码 } ``` - **初始化表达式**:在循环开始时执行一次,通常用于声明循环变量(如 `int i = 0`)。 - **条件表达式**:每次循环前检查,若为 `true` 则执行循环体,否则退出循环。 - **迭代表达式**:每次循环体执行后触发,通常用于更新循环变量(如 `i++`)。 ### 执行流程 1. 执行初始化表达式(仅一次)。 2. 检查条件表达式: - 若为 `true`,执行循环体。 - 若为 `false`,退出循环。 3. 执行迭代表达式,回到第2步。 ### 示例 #### 示例 1:打印数字 0-4 ```cpp for (int i = 0; i < 5; i++) { std::cout << i << " "; // 输出: 0 1 2 3 4 } ``` #### 示例 2:遍历数组 ```cpp int arr[] = {10, 20, 30}; for (int i = 0; i < 3; i++) { std::cout << arr[i] << " "; // 输出: 10 20 30 } ``` ### C++11 基于范围的 for 循环 C++11 引入了基于范围的 `for` 循环,简化了对容器或数组的遍历操作。语法如下: ```cpp for (类型 变量 : 数组或容器) { // 循环体代码 } ``` #### 示例 3:使用基于范围的 for 循环遍历数组 ```cpp int arr[] = {10, 20, 30}; for (int num : arr) { std::cout << num << " "; // 输出: 10 20 30 } ``` ### C++17 结构化绑定的 for 循环 C++17 引入了结构化绑定,允许在 `for` 循环中直接解包元组或结构体。语法如下: ```cpp for (auto [key, value] : container) { // 循环体代码 } ``` #### 示例 4:使用结构化绑定遍历 `std::map` ```cpp #include <iostream> #include <map> int main() { std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}}; for (const auto &[key, value] : myMap) { std::cout << key << ": " << value << std::endl; } return 0; } ``` ### 带有初始化列表的 for 循环C++11) C++11 还支持在 `for` 循环中使用初始化列表,语法如下: ```cpp for (初始化列表; 条件表达式; 迭代表达式) { // 循环体代码 } ``` #### 示例 5:使用初始化列表的 for 循环 ```cpp for (int i : {1, 2, 3, 4, 5}) { std::cout << i << " "; // 输出: 1 2 3 4 5 } ``` ### 总结 `for` 循环C++ 中非常灵活且强大,能够满足多种循环需求,从基本的计数循环到基于范围的容器遍历,再到结构化绑定的高级用法[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值