1. 什么是for循环
在编写程序时,我们经常需要多次执行同一段代码,这时候就需要循环结构。在C语言中,循环结构有三种:while、do-while和for循环,本篇文章将主要介绍C语言中的for循环。
2. for循环的语法
for循环的语法如下:
for (初始化表达式; 条件表达式; 更新表达式)
{
//需要重复执行的代码
}
其中,初始化表达式只在循环开始前执行一次,条件表达式在每次循环开始前被测试,更新表达式在每次循环之后被执行。
2.1 初始化表达式
初始化表达式可以是一个赋值语句,也可以是多个语句,它们之间以逗号隔开。这些语句用于初始化循环控制变量,在循环开始前执行一次。
for (int i = 1, j = 1; i <= 10; i++, j += 2)
{
printf("i = %d, j = %d\n", i, j);
}
上面的代码中,i和j分别被初始化为1和1,之后i的值每次增加1,j的值每次增加2,直到i的值大于10。
2.2 条件表达式
条件表达式是循环的控制条件,每次循环开始前,都会首先被测试。如果它的值为真,循环将继续执行;如果它的值为假,循环将结束。
for (int i = 0; i < 10; i++)
{
printf("%d\n", i);
}
上面的代码中,条件表达式为i < 10,意味着当i的值小于10时,循环将继续执行。
2.3 更新表达式
更新表达式用于更新循环控制变量的值,在循环体执行完之后被执行。
for (int i = 1; i <= 10; i++)
{
printf("%d\n", i);
i++; // 每次增加2
}
在上面的代码中,i的值每次增加1,但在循环体内还有一个i++操作,所以实际上i的值每次增加2。
3. for循环的实例
下面是一些for循环的实例,用于帮助你理解它的用法:
3.1 从1加到100的和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
printf("1+2+...+100=%d\n", sum);
在上面的代码中,我们使用循环控制变量i从1开始循环,每次循环将i加到sum中,循环结束后,输出sum的值即可。
3.2 输出九九乘法表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%d\t", j, i, i * j);
}
printf("\n");
}
在上面的代码中,我们使用两个循环控制变量i和j,i从1循环到9,j从1循环到i,每次输出j * i的值(格式化输出使用了\t制表符,使结果对齐)。
3.3 判断一个数是否为素数
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
bool isPrime = true;
for (int i = 2; i <= sqrt(num); i++)
{
if (num % i == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
printf("%d是素数\n", num);
}
else
{
printf("%d不是素数\n", num);
}
在上面的代码中,我们输入一个正整数num,然后从2开始循环到sqrt(num),如果num能够整除i,则说明num不是素数。如果循环中没有找到num的因子,isPrime为真,表示num是素数。
4. for循环中的注意事项
在使用for循环时,需要注意以下几点:
4.1 循环控制变量作用域
在for循环中声明的循环控制变量其作用域仅限于for循环内部,出了循环后就不能使用了。
for (int i = 0; i < 10; i++)
{
//...
}
// 下面这句语句将会编译错误:undeclared identifier 'i'
printf("%d\n", i);
4.2 嵌套循环
在for循环中可以嵌套其他循环,但是需要注意循环变量的名称不能重复。
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d*%d=%d\n", i, j, i * j);
}
}
上面的代码中,我们使用两个循环控制变量i和j,i从0到4循环,j从0到4循环,输出i和j的乘积。
4.3 循环控制语句
在循环中,可以使用break和continue语句来控制循环的执行顺序。
break语句用于跳出整个循环,跳出之后将不再执行该循环的任何代码。
continue语句用于跳过当前循环,直接进入下一次循环。
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break; // 当i等于5时跳出循环
}
if (i == 3 || i == 7)
{
continue; // 当i等于3或7时跳过本次循环
}
printf("%d\n", i);
}
上面的代码中,当i等于5时,跳出循环,当i等于3或7时,跳过本次循环,直接进入下一次循环。
5. 总结
使用for循环可以简化大量的重复代码,让程序更加简洁和易读。在使用for循环时,需要注意循环变量的作用域、循环嵌套和循环控制语句的使用。