在C语言中,分支和循环语句是程序控制的重要组成部分。它们使得程序能够根据条件执行不同的代码块,以及重复执行特定的代码段。
一、分支语句
C语言中的分支语句包括if语句和switch语句。
1.if语句
if语句用于根据条件执行不同的代码块。它的基本语法如下:
if (condition)
{
// code to be executed if condition is true
}
如果条件为真,则执行if语句后面的代码块;否则,跳过if语句后面的代码块。
例如,下面的代码将检查一个整数是否为正数、负数或零,并打印相应的消息:
int num = 10;
if (num > 0)
{
printf("The number is positive.\n");
}
else if (num < 0)
{
printf("The number is negative.\n");
}
else
{
printf("The number is zero.\n");
}
2.switch语句
switch语句用于根据表达式的值执行不同的代码块。它的基本语法如下:
switch (expression)
{
case value1:
// code to be executed if expression is equal to value1
break;
case value2:
// code to be executed if expression is equal to value2
break;
...
default:
// code to be executed if expression is not equal to any case value
}
在switch语句中,expression是要检查的表达式,而value1、value2等是要比较的值。如果expression的值与某个case的值相匹配,则执行该case后面的代码块,直到遇到break语句或switch语句结束为止。如果没有任何case的值与expression的值相匹配,则执行default后面的代码块(如果有)。如果没有default代码块,则整个switch语句将被跳过。
例如,下面的代码将根据一个整数的值打印相应的星期几:
int day = 3;
switch (day)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
...
default:
printf("Invalid day\n");
}
二、循环语句
C语言中的循环语句包括for循环、while循环和do-while循环。
1.for循环
for循环用于重复执行指定的代码块,直到满足某个条件。它的基本语法如下:
for (initialization; condition; increment)
{
// code to be executed repeatedly until condition is false
}
在for循环中,initialization是循环开始前的初始化语句,condition是每次循环开始前都要检查的条件,increment是每次循环结束后都要执行的语句。如果condition为真,则执行for循环后面的代码块;否则,跳出循环。
例如,下面的代码将打印1到10之间的所有整数:
for (int i = 1; i <= 10; i++)
{
printf("%d ", i);
}
2.while循环
while循环用于根据条件重复执行指定的代码块。它的基本语法如下:
while (condition)
{
// code to be executed repeatedly until condition is false
}
在while循环中,condition是每次循环开始前都要检查的条件。如果condition为真,则执行while循环后面的代码块;否则,跳出循环。
例如,下面的代码将计算1到10之间的所有整数的和:
int sum = 0;
int i = 1;
while (i <= 10)
{
sum += i;
i++;
}
printf("Sum is %d\n", sum);
3.do-while循环
do-while循环用于根据条件重复执行指定的代码块,且至少会执行一次。它的基本语法如下:
do
{
// code to be executed repeatedly until condition is false
} while (condition);
在do-while循环中,condition是每次循环结束时都要检查的条件。无论条件是否为真,do-while循环至少会执行一次。如果condition为真,则继续执行do-while循环后面的代码块;否则,跳出循环。
4.嵌套循环
在C语言中,你可以在一个循环内部放置另一个循环,这称为嵌套循环。嵌套循环可以使你的代码更有效地执行,同时也能使代码更复杂。
例如,下面的代码使用嵌套循环打印一个5x5的矩阵:
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5; j++) {
printf("%d ", i*j);
}
printf("\n");
}
return 0;
}
在这个例子中,外部循环控制行,内部循环控制列。每次外部循环迭代时,内部循环都会执行其全部代码,打印出一个5x5的矩阵。
5.break语句
在某些情况下,你可能想要提前结束循环,而不是等到循环条件不再满足。为此,你可以使用break
语句。一旦执行到break
语句,程序会立即跳出当前循环,继续执行循环后面的代码。
例如,下面的代码使用break
语句打印1到10之间的所有奇数:
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
break;
}
printf("%d ", i);
}
在这个例子中,如果i是偶数,break
语句会被执行,导致程序跳出循环。因此,只有奇数会被打印出来。
6.continue语句
语句在C语言(以及许多其他编程语言)中用于控制循环结构。当在循环中遇到continue
语句时,当前迭代会立即结束,并跳转至下一次迭代。
常用于跳过循环中不需要的部分,或者用于满足特定条件时跳过当前迭代。
以下是一个简单的例子:
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
printf("%d ", i);
}
在这个例子中,循环会遍历0到9的整数。但是当i
等于5时,continue
语句会被执行,当前迭代立即结束,然后开始下一次迭代。因此,输出将不包括数字5。
7.循环的效率
在编写循环语句时,应注意提高代码的效率。这包括减少循环内部的计算、避免在循环内部进行不必要的内存访问,以及尽量减少循环次数。
例如,下面的代码使用了一个简单而高效的循环来计算一个数组的元素之和:
int array[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < sizeof(array)/sizeof(array[0]); i++) {
sum += array[i];
}
printf("Sum is %d\n", sum);
在这个例子中,循环的次数被计算为数组的长度除以一个元素的长度。这种方法避免了在循环中使用一个计数器变量,从而提高了代码的效率。
8.循环的终止条件
在编写循环语句时,必须确定一个终止条件,以便循环不会无限地执行下去。这通常是通过检查一个布尔变量或计算某个结果来实现的。
例如,下面的代码使用一个布尔变量来控制循环的终止条件:
int i = 0;
while (i < 10) {
printf("%d ", i);
i++;
}
在这个例子中,循环会一直执行,直到i的值达到10。一旦i的值达到10,循环就会终止。
三、练习
找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。
int main()
{
int n = 0;
int m = 0;
int flag = 0;
for (n = 101; n <= 200; n+=2)
{
int flag = 1;
for (m = 2; m < n; m++)
{
if (n % m == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", n);
}
}
}