Bootstrap

C语言分支语句和循环语句简介

目录

引言

分支语句(选择结构)

if语句

switch语句

循环语句(循环结构)

while语句

for语句

do while语句

一些练习 

n*n乘法表

 最大公约数

 打印100~200之间的素数

结语


引言

        大家好我是行空,今天我来给大家简单的介绍一下C语言中的分支语句和循环语句。希望能帮大家快速了解C语言中的分支语句和循环语句的使用方法。C语言是一种非常强大和灵活的编程语言,它可以用来实现各种功能和结构。在本文中,我将介绍C语言中的分支语句和循环语句,它们是控制程序执行流程的重要工具。

分支语句(选择结构)

        分支语句是根据条件的不同,选择执行不同的语句。C语言中有两种分支语句:if语句和switch语句。

if语句

if语句的一般形式是:

if (表达式) 
{
    语句1;
}
else 
{
    语句2;
}

        其中,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句1,否则执行语句2。else部分可以省略,这时如果表达式为假,则不执行任何语句。

        if语句还可以嵌套使用,即在一个if语句中再包含一个或多个if语句,以实现多重条件的判断。例如:

if (表达式1) 
{
    if (表达式2) 
    {
        语句1;
    }
    else 
    {
        语句2;
    }
}
else 
{
    语句3;
}

        为了简化嵌套的if语句,C语言提供了else if的形式,它可以将多个if语句连成一个链条,每个if语句都有一个对应的条件,只有当前面的条件都不满足时,才会判断下一个条件。例如:

if (表达式1) 
{
    语句1;
}
else if (表达式2)
{
    语句2;
}

在使用if语句时,要注意以下几点:

  • 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
  • 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
  • else必须紧挨着if后要执行的语句,且总是与最近且未匹配的if匹配。为了避免悬空else的问题,建议使用大括号将if和else的语句块括起来。
  • if语句的书写形式要注意逻辑和可读性,尽量避免模棱两可和误解的情况。

switch语句

        switch语句是一种多分支的选择结构,它可以根据一个整型表达式的值,选择执行不同的语句。

switch语句的一般形式是:

switch (表达式) 
{
    case 常量1: 语句1; break;
    case 常量2: 语句2; break;
    ...
    case 常量n: 语句n; break;
    default: 语句; break;
}

         其中,表达式是一个可以求出整数值的表达式,它的值会与每个case后的常量进行比较,如果相等,则执行对应的语句,如果不相等,则继续比较下一个case。如果所有的case都不相等,则执行default后的语句。default部分可以省略,这时如果没有匹配的case,则不执行任何语句。

在使用switch语句时,要注意以下几点:

  • 表达式的值必须是整型,即整数或字符。如果是浮点数或字符串,则不能使用switch语句。
  • case后的常量必须是不同的,不能有重复的值。否则会造成语法错误。
  • 每个case后的语句最好加上break,表示结束本分支的执行,跳出switch语句。如果不加break,则会继续执行下一个case的语句,直到遇到break或switch语句结束为止,这可能会导致逻辑错误。
  • default相当于else,用于处理没有匹配的情况。它可以放在任何位置,但为了保持代码的规范和一致,建议放在最后。

循环语句(循环结构)

        循环语句是用来重复执行一段语句的结构,它可以根据一定的条件,控制循环的次数和结束的时机。C语言中有三种循环语句:while语句,for语句,do while语句。

while语句

while语句的一般形式是:

while (表达式) 
{
    语句;
}

        其中,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句,然后再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。如果一开始表达式就为假,则不执行任何语句。

例如,输出0到9,代码如下:

int i = 0; //定义并初始化变量
while (i <= 9) //判断
{ 
    printf("%d\n", i); //输出
    i++; //更新变量
}

在使用while语句时,要注意以下几点:

  • 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
  • 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
  • 循环变量的定义,更新和判断要合理,避免造成死循环或跳过循环的情况。
  • while语句是先判断后执行,如果一开始条件就不满足,则不会进入循环。

for语句

        for语句是一种更简洁和方便的循环语句,它可以在一行中定义循环变量,判断条件和更新循环变量。

for语句的一般形式是:

for (变量的定义和初始化; 判断表达式; 更新变量) 
{
    语句;
}

        其中,循环变量的定义是在循环开始前执行一次的语句,通常用来定义和初始化循环变量。表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则执行语句,然后执行循环变量的更新,再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。如果一开始表达式就为假,则不执行任何语句。循环变量的更新是在每次循环结束后执行的语句,通常用来改变循环变量的值。

还是输出0到9,代码如下:

for (int i = 0; i <= 9; i++) //定义变量并初始化,判断,更新变量
{ 
    printf("%d\n", i); //输出
}

 这个代码还可以将变量定义在for循环前,例如:

int i;//定义变量
for (i = 0; i <= 9; i++) //初始化变量,判断,更新变量
{ 
    printf("%d\n", i); //输出
}

在使用for语句时,要注意以下几点:

  • 循环变量的定义,更新和判断要合理,避免造成死循环或跳过循环的情况。
  • 如果要执行的语句只有一条,可以省略大括号。但为了保持代码的清晰和一致,建议不要省略。
  • for语句是先判断后执行,如果一开始条件就不满足,则不会进入循环。
  • for语句中的分号是必须的,不能省略。它们用来分隔循环变量的定义,表达式和循环变量的更新。
  • for语句中的三个部分都可以省略,但分号不能省略。如果省略循环变量的定义,则需要在外部定义和初始化循环变量。如果省略表达式,则相当于表达式为真,即无限循环。如果省略循环变量的更新,则需要在循环体内更新循环变量。

do while语句

        do while语句是一种先执行后判断的循环语句,它可以保证循环至少执行一次。

do while语句的一般形式是:

do 
{
    语句;
} while (表达式);

        其中,语句是要重复执行的语句,表达式是一个可以判断为真或假的条件,如果表达式为真(非0),则继续执行语句,然后再次判断表达式,如果仍为真,则继续执行语句,如此反复,直到表达式为假(0),则结束循环。

依旧是熟悉的输出0到9,代码如下:

int i = 0; //定义并初始化变量
do 
{
    printf("%d\n",i); //输出
    i++;//更新变量
} while (i <= 9); //判断

在使用do while语句时,要注意以下几点:

  • 表达式的结果只看真假,不看具体的值。在C语言中,0表示假,非0表示真。
  • do和while之间必须有一个分号,表示循环体的结束。如果省略分号,则会造成语法错误。
  • do while语句是先执行后判断,无论条件是否满足,都会执行一次循环体。

一些练习 

         下面是一些综合练习,可在学会基本语法后尝试写一写。有疑问可在评论区提出。

n*n乘法表

#include <stdio.h>

int main()
{
	int n;
	while (~scanf("%d", &n))
	{
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= i; j++)
			{
				printf("%02d ", i * j);
			}
			printf("\n");
		}
	}
	return 0;
}

 最大公约数

#include <stdio.h>

int main()
{
	int n, m;
	while (~scanf("%d %d", &n, &m))
	{
		不需要确保n>m,下面算法会自动交换位置
		//if (n < m)
		//{
		//	n = n ^ m;
		//	m = n ^ m;
		//	n = n ^ m;
		//}
		//求最大公约数
		int tmp;
		while (m)
		{
			tmp = n % m;
			n = m;
			m = tmp;
		}
		printf("最大公约数为:%d\n", n);
	}
	return 0;
}

 打印100~200之间的素数

#include <stdio.h>
#include <math.h>

int main()
{
    for (int i = 101; i <= 200; i+=2)//素数必定是奇数(除了2);因此,从101开始i每次加2可大幅减小循环次数
    {
        int flag = 1;
        for (int j = 3; j <= sqrt(i); j++)//一般想到j<i,想进一步优化能想到j<i/2,而给i开根号是我能想到的最优解了
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag)
            printf("%d ", i);
    }
    return 0;
}

结语

以上,就是C语言中的分支语句和循环语句的介绍,希望对大家有所帮助!

如有错误,欢迎在评论区指出!

;