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

一、C语言分支语句:掌控程序流程的关键

        在C语言中,分支语句允许我们根据条件选择性地执行代码块。它们是我们构建逻辑严谨、流程控制灵活程序的重要工具。C语言提供了三种主要的分支语句:ifswitch条件运算符。让我们一起来了解这些分支语句的特性和用法。

1. If语句

if语句允许我们根据一个条件来决定是否执行一段代码。它的基本语法如下:

if (condition){  
    // 条件为true时要执行的代码
}

        如果condition为真,if语句会执行其内部的代码块。否则,它将跳过这部分代码并继续执行if语句之后的代码。

例如,下面的代码段将检查一个整数是否为正数、负数或零:

#include <stdio.h>
int main(){
    int num = 10;
    if (num > 0){
        printf("这个数字是正数.\n");
    }
    if (num < 0){
        printf("数字为负数.\n");
    }
    if (num == 0){
        printf("数字为零.\n");
    }
	return 0;
}

2. Switch语句

当我们需要基于多种可能的值来执行代码时,switch语句就派上用场了。它的基本语法如下:

switch (expression){  
    case constant1:  
        // 如果表达式==constant1,则要执行的代码;  
        break;  
    case constant2:  
        // 如果表达式==constant2,则要执行的代码;
        break;  
    // 你可以有任意数量的案例陈述;
    default:  
        // 如果表达式与任何常量都不匹配,则要执行的代码;
}

        在switch语句中,我们首先将一个表达式传递给switch关键字。然后,在每个case关键字之后,我们提供一个常量表达式。如果表达式的值与某个case的常量相匹配,则执行相应的代码块。如果没有任何case的常量与表达式的值相匹配,那么会执行default代码块(如果存在)。

例如,下面的代码使用switch语句来根据一个整数的值输出不同的消息:

#include <stdio.h>
int main(){
    int num = 2;
    switch (num){
        case 1:{
            printf("数字为1.\n");
            break;
        }
        case 2:{
            printf("数字为2.\n");
            break;
        }
        default:{
            printf("这个数字既不是1也不是2.\n");
        }
    }
	return 0;
}

再比如,我们可以使用switch语句根据一周的日期打印不同的消息:

#include <stdio.h>
int main(){
	int day = 3;  // 代表星期一、星期二等。
	switch (day){
		case 1:{
			printf("星期一\n");
			break;
		}
		case 2:{
			printf("星期二\n");
			break;
		}
		case 3:{
			printf("星期三\n");
			break;
		}
		case 4:{
			printf("星期四\n");
			break;
		}
		case 5:{
			printf("星期五\n");
			break;
		}
		case 6:{
			printf("星期六\n");
			break;
		}
		case 7:{
			printf("星期日\n");
			break;
		}
	}
	return 0;
}

代码解释:

1.如果switch语句正确退出,并且在每种情况下都有一个break语句,则不会执行默认情况。在这种情况下,这是必要的,因为最后一个case语句没有break语句。如果break语句不在这里,它将进入下一个案例。请注意,从一个案例到另一个案例的失败与“else”语句不同。失败的案例一直持续到下一个案例,没有中断。如果您想要一个“else”语句,您应该在switch语句的末尾使用一个默认大小写。只有在不满足任何其他情况的情况下,才会执行此默认情况。

2.如果在任何情况下都没有匹配的表达式,并且没有“default”语句,那么switch语句中的任何代码都不会被执行。如果在任何情况下都没有匹配的表达式,并且有一个“default”语句,那么将执行“default”声明中的代码。在这个例子中,如果day不等于1、2、3、4、5、6或7,那么将不执行默认情况,因为每个情况都有一个break语句,该语句在执行该情况中的相应代码后终止switch语句。这样可以确保不会发生故障。

3.此示例使用switch语句将一周中的某一天与特定日期(月中的某天)相匹配。它使用switch语句根据自月初以来经过的天数来确定星期几。switch语句有一周中每一天(星期一到星期日)的事例,每个事例都会打印出一条消息,指示它是一周中的哪一天。如果没有一个事例匹配,则转到默认事例,默认事例会打印出消息,指示这不是一周中有效的一天。请注意,在本例中,每个case的末尾都有一个break语句,用于在执行该case中的相应代码后终止switch语句。这样可以确保不会发生故障。换句话说,如果switch表达式匹配一个case,但末尾没有break语句。

3. 总结 

        C语言提供了三种主要的分支语句,它们分别是if、switch和条件运算符。这些语句使我们能够根据特定条件来控制程序的执行流程。
        if语句是最基本的分支语句,它根据一个条件来决定是否执行一段代码。如果条件为真,if语句会执行内部的代码块;否则,它将跳过这部分代码并继续执行if语句之后的代码。
        switch语句适用于多种可能的值的情况,它根据一个表达式的值来选择执行对应的代码块。在switch语句中,每个case关键字后跟随一个常量表达式,如果表达式的值与某个case的常量相匹配,则执行相应的代码块。如果没有任何case的常量与表达式的值相匹配,那么会执行default代码块(如果存在)。
        条件运算符(也称为三元运算符)是另一种简单的分支语句,它根据一个条件来选择执行两个代码块中的一个。条件运算符的语法是“条件 ? 表达式1 : 表达式2”。如果条件为真,则执行表达式1;否则,执行表达式2。
        在编写C语言程序时,灵活使用这些分支语句可以帮助我们实现复杂的逻辑和控制流程,从而创建高效、可靠的代码。

二、C语言循环语句:掌控程序流程的核心 

        在C语言中,循环语句允许我们反复执行一段代码,根据需要来重复执行一系列操作。这种重复执行的能力使我们在处理大量数据、实现复杂算法或进行条件判断时更加高效。C语言提供了几种类型的循环语句,包括for循环、while循环和do-while循环。接下来,我们将详细介绍这些循环语句的特性和用法。

1. For循环

for循环是一种最常见的循环结构,适用于在已知迭代次数的情况下重复执行代码。它的基本语法如下:

for (initialization; condition; increment){  
    // 条件为true时会重复执行的代码
}

        在for循环中,我们首先声明一个初始化表达式,这个表达式只在循环开始时执行一次。然后是条件表达式,只要条件为真,就会执行循环体内的代码。最后是增量表达式,在每次循环迭代之后执行。

例如,下面的代码使用for循环打印数字1到10:

#include <stdio.h>
int main(){
	for (int i = 1; i <= 10; i++){
		printf("%d\n", i);
	}
	return 0;
}

        在这个例子中,我们首先声明一个整数变量i并初始化为1。然后,只要i的值小于或等于10,就打印当前i的值并将i增加1。这个循环将一直执行,直到i的值大于10为止。与for循环不同的是,我们在循环体内手动更新i的值。

2. While循环

while循环适用于未知迭代次数的情况,只要给定的条件为真,就会一直执行循环。它的基本语法如下:

while (condition){  
    // 条件为true时会重复执行的代码
}

        只要条件为真,while循环就会一直执行循环体内的代码。当条件变为假时,循环将终止。

例如,下面的代码使用while循环打印数字1到10:

#include <stdio.h>
int main(){
    int i = 1;
    while(i <= 10){
        printf("%d\n", i);
        i++;
    }	return 0;
}

        在这个例子中,我们首先声明一个整数变量i并初始化为1。然后,只要i的值小于或等于10,就打印当前i的值并将i增加1。这个循环将一直执行,直到i的值大于10为止。与for循环不同的是,我们在循环体内手动更新i的值。

3. do-while循环

do-while循环是一种特殊类型的循环,它至少会执行一次循环体内的代码,然后根据给定的条件决定是否继续执行。它的基本语法如下:

do {  
    // 条件为true时要重复执行的代码
}while(condition);

        在do-while循环中,无论条件是否为真,循环体内的代码至少会执行一次。然后,根据条件的结果,决定是否继续执行循环。只要条件为真,就会一直执行循环体内的代码。当条件变为假时,循环将终止。

例如,下面的代码使用do-while循环打印数字1到10:

#include <stdio.h>  
int main(){
    int i = 1;
    do{
        printf("%d ", i);
        i++;
    }while(i <= 10);
    return 0;
}

        在这个例子中,我们首先声明一个整数变量i并将其初始化为1。然后,在do-while循环中,我们首先打印出i的值,然后增加i的值。循环会一直执行,直到i的值大于10为止。

4. 补充 

4.1 循环嵌套

        循环嵌套是指在循环内部再放置另一个循环,形成多层循环结构。这种结构可以处理更复杂的问题,但需要注意控制嵌套的深度,避免出现逻辑混乱和性能问题。

例如,下面的代码使用嵌套循环打印一个 3x3 的矩阵:

#include <stdio.h>  
int main(){
    int i, j;
    for(i = 1; i <= 3; i++){
        for (j = 1; j <= 3; j++){
            printf("%d ", i * j);
        }
        printf("\n");
    }
    return 0;
}

        在这个例子中,外部循环控制行数,内部循环控制列数。每次内部循环执行完毕后,会换行打印下一行的内容。

这个嵌套循环将打印出如下矩阵:

1 2 3   
2 4 6   
3 6 9

4.2 跳出循环

        在循环过程中,我们可以使用break语句来跳出当前循环,直接进入循环之后的下一条语句。break语句常用于处理特殊情况或提前结束循环。

例如,下面的代码使用break语句在找到目标元素后立即跳出循环:

#include <stdio.h>  
int main(){
    int arr[] = { 1, 2, 3, 4, 5 };
    int target = 3;
    int i;
    for (i = 0; i < 5; i++){
        if (arr[i] == target){
            printf("Found target at index %d\n", i);
            break;
        }
    }
    return 0;
}

         在这个例子中,我们遍历一个整数数组并查找目标元素。当找到目标元素时,我们打印出它的索引并使用break语句跳出循环。这个循环只会执行一次,因为我们已经在找到目标元素后结束了循环。


5.总结

        C语言循环语句包括三种基本类型:for循环、while循环和do-while循环。这些循环语句允许我们重复执行一段代码,根据需要来控制程序的执行流程。
        for循环适用于已知迭代次数的情况,它由初始化表达式、条件表达式和增量表达式组成。在每次循环迭代之前,条件表达式会被评估,只要条件为真,就会执行循环体内的代码。在每次循环迭代之后,增量表达式会被执行。
        while循环适用于未知迭代次数的情况,只要给定的条件为真,就会一直执行循环。在进入循环之前,我们需要将变量初始化为一个合适的值,然后在循环体内手动更新变量的值。
        do-while循环是一种特殊类型的循环,它至少会执行一次循环体内的代码,然后根据给定的条件决定是否继续执行。无论条件是否为真,循环体内的代码至少会执行一次。在每次循环迭代之后,条件表达式会被评估。
        除了这三种基本的循环语句,C语言还提供了跳出循环的语句break,允许我们在满足特定条件时提前结束循环。
        通过合理使用这些循环语句和跳出循环的语句,我们可以控制程序的执行流程并处理各种复杂问题。

文章最后

        本篇文章的有关知识内容借鉴参考了《C Primer Plus》、《《C语言程序设计》(【第五版】谭浩强)》等书籍,以及相关百度次词条搜索。

        管见所及,仅供参考。有错误疏漏之处还望批评指正,谢谢!

  • 47
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值