C语言中的分支和循环语句

在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);

		}

	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ljhohhh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值