C语言学习-分支和循环语句

语句简介

    C语句可分为五类,分别为表达式语句、函数调用语句、控制语句、复合语句、空语句。分支和循环语句都属于控制语句,控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句,分为三类分别为分支语句(条件判断语句):if语句、switch语句;循环执行语句:for语句、while语句、do...while语句;转向语句:break语句、goto语句、continue语句、return语句。

分支语句

if语句

        分支语句就是让程序有选择的执行,分为三类:单分支、双分支、多分支。

        单分支

                语法结构:

                                if(表达式)

                                        语句;

                说明:如果表达式为真,则执行语句块;如果表达式为假,则不执行。在C语言中,零表示假,非零表示真。若要执行多条语句,则需要在if(表达式)后加上{},{}内为要执行的语句。举例说明:

#include <stdio.h>

int main()
{
    //编写一个程序,如果年龄大于等于18岁,则输出“你已成年”
    //分析:1、使用int age接收输入的年龄,2、使用if语句判断年龄是否大于等于18
    
    int age = 0;
    printf("请输入您的年龄:");
    scanf("%d",&age);
    
    if(age >= 18){
        printf("你已成年\n"); 

    }       //该if语句中只包含一条语句,所以可写{},也可以不写,若有多条语句,则必须加上{}


    //编写一个程序,如果年龄大于等于18岁,使用两条语句输出“你已成年” “需对自己的言行举止负责”
    int age = 0;
    printf("请输入您的年龄:");
    scanf("%d",&age);
    
    if(age >= 18){
        printf("你已成年\n"); 
        printf("需对自己的言行举止负责\n");

    }       //该if语句中只包含两条语句,所以必须加上{}

    return 0 ;
}

       输出结果为

 

 

         双分支

                语法结构:

                        if(表达式)

                                语句1;

                        else

                                语句2;

                说明:如果表达式为真,则执行语句1;如果表达式为假,则执行语句2。

举例说明:

#include <stdio.h>

int main()
{
    //编写一个程序,输入年龄,若大于等于18,则输出“您已成年”,若小于18,则输出“您还未成年”
    //分析:1、使用int age 接收输入的年龄,2、使用if...else语句进行判断
    int age = 0;
    printf("请输入您的年龄:");
    scanf("%d",&age);
    
    if(age >= 18)
    {
        printf("您已成年\n");
   
    }
    else
    {
        printf("您还未成年\n");
    }

    return 0;
}

   输出结果为:

 

 

            多分支

                语法结构:

                        if(表达式1)

                                语句1;

                        else if(表达式2)

                                语句2;

                        else

                                语句3;

        说明:如果表达式1为真,则执行语句1;如果表达式1为假,则判断表达式2,若表达式2为真,则执行语句2;若表达式2为假,则执行语句3。多分支语句中可以有多个表达式。

举例说明:

#include <stdio.h>

int main()
{
    //编写一个程序,输入一个分数,判断该分数的等级,若90分<=分数<=100分为优秀,若70分<=分数<90分为良好, 
    //若60分<=分数<80分为及格,若0<=分数<60分为不及格,
    //分析:1、使用double score接收输入的分数,2、用if...else if...else语句判断
    double score = 0.0;
    printf("请输入您的成绩:");
    scanf("%lf",&score);
    
    if(score <= 100 && score >= 90)
    {
        printf("优秀\n");
    }
    else if(score < 90 && score >= 70)
    {
        printf("良好\n");
    }
    else if(score < 70 && score >= 60)
    {
        printf("及格\n");
    }
    else if(score < 60 && score >= 0)    
    {
        printf("不及格\n");
    }
    else
    {
        printf("输入错误,请重新输入\n");
    }
    return 0;
}

输出结果为:

 

switch语句

        switch语句多用于多分支

        语法结构:

                switch(表达式)

                {

                 case 整形常量表达式1:

                        语句1;

                        break;

                 case 整形常量表达式2:

                        语句2;

                         break;

                  ......       

                  case 整形常量表达式n:

                         语句n;

                         break;

                  default:

                        default语句;

                         break;

                }

        说明:

 举例说明:

#include <stdio.h>

int main() {
	//编写一个程序,打印月份所属的季节,3、4、5春季;6、7、8夏季;9、10、11秋季;12、1、2冬季
	//分析:1、用int month接收输入的月份,使用switch进行判断

	int month = 0;
	printf("请输入月份:");
	scanf("%d", &month);

	switch (month) {
	case 3:
		printf("春季\n");
		break;   //break表示完成一个case分支后跳出switch循环
	case 4:
		printf("春季\n");
		break;
	case 5:
		printf("春季\n");
		break;
	case 6:
		printf("夏季\n");
		break;
	case 7:
		printf("夏季\n");
		break;
	case 8:
		printf("夏季\n");
		break;
	case 9:
		printf("秋季\n");
		break;
	case 10:
		printf("秋季\n");
		break;
	case 11:
		printf("秋季\n");
		break;
	case 12:
		printf("冬季\n");
		break;
	case 1:
		printf("冬季\n");
		break;
	case 2:
		printf("冬季\n");
		break;
	default:        //default语句可写可不写,若没有匹配的case时,会执行default语句
		printf("您的输入错误,请重新输入\n");
		break;
	}
	return 0;
}

 输出结果为:

 若不加break则会在执行完上一个case之后继续执行下一个case

#include <stdio.h>

int main() {
	
	int month = 0;
	printf("请输入月份:");
	scanf("%d", &month);

	switch (month) {
	case 3:
		printf("春季\n");
	case 4:
		printf("春季\n");
	case 5:
		printf("春季\n");
	case 6:
		printf("夏季\n");
	case 7:
		printf("夏季\n");
	case 8:
		printf("夏季\n");
	case 9:
		printf("秋季\n");
	case 10:
		printf("秋季\n");
	case 11:
		printf("秋季\n");
	case 12:
		printf("冬季\n");
	case 1:
		printf("冬季\n");
	case 2:
		printf("冬季\n");
	default:        
		printf("您的输入错误,请重新输入\n");
	}
	return 0;
}

输出结果为:

        该程序还可以通过break来简化:

#include <stdio.h>

int main() {

	int month = 0;
	printf("请输入月份:");
	scanf("%d", &month);

	switch (month) {
	case 3:
	case 4:
	case 5:
		printf("春季\n");
		break;
	case 6:
	case 7:
	case 8:
		printf("夏季\n");
		break;
	case 9:
	case 10:
	case 11:
		printf("秋季\n");
		break;
	case 12:
	case 1:
	case 2:
		printf("冬季\n");
		break;
	default:
		printf("您的输入错误,请重新输入\n");
		break;
	}
	return 0;
}

输出结果为:

 

循环语句

for语句

        语法结构

                for(表达式1;表达式2;表达式3)

                {

                        循环语句(可以是多条语句);

                }

        说明:表达式1为初始化,用于初始化循环变量;表达式2为条件判断,用于判断循环是否终止;表达式3为调整部分,用于循环条件的调整。for语句的执行顺序为:表达式1—表达式2—循环语句—表达式3—表达式2—循环语句—表达式3......   先表达式1(初始化循环变量),再表达式2(判断条件),若条件成立,则执行循环语句,再执行表达式3(调整循环条件),再表达式2(判断条件)是否成立,若成立则一直循环下去;若表达式2(不成立),则退出循环。

举例说明:

#include <stdio.h>

//编写一个程序,打印1-100之间所有的奇数
//分析:1、用int i 存放变量;2、使用for循环判断100以内的数字;3、for循环里嵌套if语句判断i是否为奇数
int main() {

	int i = 0;

	for (i = 0; i <= 100; i++) {
		if (i % 2 != 0) {         
			printf("%d    ", i);
		}

	}

	return 0;
}

输出结果为:

         在for语句中可以使用break和continue语句。break是用来永久终止循环的;continue是用来终止本次循环的。

举例说明:

#include <stdio.h>

int main() {

	int i = 0;

	for (i = 0; i <= 10; i++) {
		printf("%d    ", i);
	}

	return 0;
}

输出结果为:

 若使用break语句:

#include <stdio.h>

int main() {

	int i = 0;

	for (i = 0; i <= 10; i++) {

		if (i == 5) {
			break;
		}
		printf("%d    ", i);
	}

	return 0;
}

输出结果为:

 若使用continue语句

#include <stdio.h>

int main() {

	int i = 0;

	for (i = 0; i <= 10; i++) {

		if (i == 5) {
			continue;
		}
		printf("%d    ", i);
	}

	return 0;
}

输出结果为:

 while语句

        语法结构

                表达式1;

                while(表达式2)

                {

                        循环语句(可以是多条语句);

                        表达式3;

                }

        while语句的句法功能与for语句相同

举例说明:

#include <stdio.h>

//编写一个程序,打印20-200之间所有的偶数的和
//分析:1.使用int i 存放变量,int sum存放变量的和;2、使用for循环判断20-200之间的数字;
//3、在for循环内部嵌套if语句panduan偶数;4、将符合条件的变量i的值再加上sum的值赋值给sum

int main() {

	int i = 20;
	int sum = 0;

	while (i <= 200) {

		if (i % 2 == 0) {
			sum += i;
		}
		i++;
	}
	printf("%d", sum);

	return 0;
}

输出结果为:

 在while语句中break和continue的用法与for语句中一致。

do...while语句

        语法结构

                表达式1;

                do

                {

                        循环语句(可以是多条语句);

                        表达式3;

                }while(表达式2);

        说明:do...while语句是先执行,后判断。至少会执行一次。而for语句和while语句是先判断后执行。

举例说明:

#include <stdio.h>

//编写一个程序,计算1-200之间,能被5整除,不能被3整除的个数
//分析:1|用int i存放变量;2、使用do...while语句筛选出1-200的数字;
//3、在do...while语句内部嵌套if语句判断符合条件的数字;4、若数字符合条件则num加1



int main() {

	int i = 1;
	int num = 0;

	do {
		if (i % 5 == 0 && i % 3 != 0) {
			num++;
		}
		i++;
	} while (i <= 200);
	printf("%d", num);

	return 0;
}

输出结果为:

 目前我仅仅了解了以上几种控制语句的用法,goto语句暂时还没有学习到。对于上面的知识点我也做了一份思维导图,可能做的不太好,希望看到这篇文章的各位能指点一二。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值