当前位置 博文首页 > HyDraZya的博客:【C语言基础】分支和循环初步理解

    HyDraZya的博客:【C语言基础】分支和循环初步理解

    作者:[db:作者] 时间:2021-09-05 09:45

    结构体:

    • struck - 结构体关键字
    • 结构体:属于复杂对象,是我们自己创造出来的一种类型
    • strcpy(string copy):字符串拷贝-用到库函数-string.h
    • 赋值按照定义的变量顺序进行
    #include <stdio.h>
    #include <string.h>
    //创建一个结构体类型
    struct Book
    {
        char name[20];
        short price;//55
    };
    int main()
    {
        //利用结构体类型创建一个该类型的结构体变量
        struct Book b1 = {"C语言程序设计", 55};
        struct Book* pb = &b1;
        //利用pb打印出我的书名和价格
    
        // -> 结构体指针使用->
        printf("%s\n",pb->name);
        printf("%d\n",pb->price);
    
        // .  结构体实用变量使用.成员
        printf("%s\n", b1.name);
        printf("%d\n", b1.price);
        //同理用*指针
        printf("%s\n",(*pb).name);
        printf("%d\n",(*pb).price);
    
        b1.price = 15;
        printf("%d\n", b1.price);
        //赋值按照定义的变量顺序进行
    
        strcpy(b1.name, "C++");
        printf("%s\n", b1.name);
    
        return 0;
    }

    分支和循环

    一、分支

    • if语句
    • swithc语句

    1.代码结构:

    • 循环语句
    • 选择语句
    • 顺序语句

    2.分支结构 -?if语句

    (1)if语句-单分支

    说明:要么执行,要么不执行,当表达式成立的之后,则执行语句;如果表达式不成立,则直接跳过整个if语句继续执行后面的代码

    语法结构:

    if(表达式)

    ? ? ? ? 执行语句;

    练习:

    #include <stdio.h>
    int main()
    {
        int age = 0;
        scanf("%d", &age);
        if(age<18);
        {
            printf("未成年\n");
        }
        return 0;
    }

    注:表达式必须为真才执行语句

    (2)if语句-双分支

    说明:如果表达式成立,则执行语句1;如果不成立,则执行语句2

    语法结构:

    if(表达式1)

    ? ? ? ? 执行语句1;

    else

    ? ? ? ? 执行语句2;

    练习:

    #include <stdio.h>
    int main()
    {
        int age = 0;
        scanf("%d", &age);
        if(age<18);
        {
            printf("未成年\n");
        }
        else
        {
            printf("成年\n");
        }
        return 0;
    }

    (3)if语句-多分支

    说明:实现了多选一的操作,会根据不同的条件从上往下来进行匹配,如果匹配上了,则执行对应的语句,然后直接结束整个if-elif语句,但是,如果所有的条件都不成立的话,则执行else后面的语句

    语法结构:

    if(表达式1)

    ? ? ? ? 执行语句1;

    else if(表达式2)

    ? ? ? ? 执行语句2;

    else

    ? ? ? ? 执行语句3;

    练习:

    #include <stdio.h>
    int main()
    {
        int age = 0;
        scanf("%d", &age);
        if(age<18)
        {
            printf("少年\n");
        }
        else if(age >= 18 && age < 30)
        {
            printf("青年\n");
        }
        else if(age >= 30 && age < 50)
        {
            printf("中年\n");
        }
        else if(age >= 50 && age < 80)
        {
            printf("老年\n");
        }
        else
        {
            printf("老不死\n");
        }
    
        return 0;
    }

    注:不管if-elif-else有多少个分支,都只会执行其中的一个分支

    (4)嵌套if语句

    说明:说明:if语句的嵌套,可以在单分支,双分支,多分支之间进行任意组合

    语法结构:
    if(表达式1)

    ? ? ? ? 执行语句1;

    if(表达式2)

    ? ? ? ? 执行语句2;

    注:从语法角度来说,嵌套的层数没有任何的限制,但是,为了代码的可读性和可维护性,嵌套层数不要超过3层

    3.分支结构 - Switch语句?

    语法结构:

    swtich(整型表达式)

    {

    ? ? ? ? 语句项;

    }

    语句项:case?语句

    case 整型常量表达式;

    ? ? ? ? 执行语句;

    练习:?

    #include <stdio.h>
    int main()
    {
        int day = 0;
        switch(day)
       {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                printf("weekday\n");
                break;
            case 6:
            case 7:
                printf("weekend\n");
                break;
       }
        return 0;
    }
    

    编程好习惯

    在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break 。?

    例题:

    #include <stdio.h>
    int main()
    {
        int n = 1;
        int m = 2;
        switch (n)
       {
        case 1:
                m++;
        case 2:
                n++;
        case 3:
                 switch (n)
               {//switch允许嵌套使用
                 case 1:
                        n++;
                 case 2:
                        m++;
                        n++;
                        break;
               }
        case 4:
                m++;
                 break;
        default:
                 break;
       }
        printf("m = %d, n = %d\n", m, n);
        return 0;
    }
    

    二、循环?

    • while循环
    • for循环
    • do while循环

    1.while循环

    while语法结构:
    while (条件表达式)
    ????????循环语句;

    ?练习:

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

    while语句中的break和continue?

    break:

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

    ?总结: breakwhile 循环中的作用:

    其实在循环中只要遇到 break,就停止后期的所有循环,直接中止循环。所以:while 中的 break 是用于永久终止循环的

    continue:?

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

    ?总结: continue?在?while?循环中的作用就是:

    continue?是用于终止本次循环的,也就是本次循环中?continue?后边的代码不会再执行,而是直接 跳转到?while?语句的判断部分。进行下一次循环的入口判断。

    2.for循环

    for语法结构:

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

    ????????循环语句;

    表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断 循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。

    练习:

    #include <stdio.h>
    int main()
    {
    	int i = 0;
    	//for(i=1 - 初始化; i<=10 - 判断部分;i++ - 调整部分)
    	for (i = 1; i <= 10; i++)
    	{
    		printf("%d ", i);
    	}
    	return 0;
    }

    for语句中的break和continue??

    break:

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

    continue:

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

    ?for语句的循环控制变量

    1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。

    2. 建议 for 语句的循环控制变量的取值采用“前闭后开区间”写法。

    int i = 0;
    //前闭后开的写法
    for(i=0; i<10; i++)
    {}
    //两边都是闭区间
    for(i=0; i<=9; i++)
    {}
    

    3.do...while()循环

    do语句的语法结构:

    do

    ????????循环语句;

    while(表达式);

    练习:

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

    do while循环中的break和continue

    break:

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

    continue:

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

    特点:循环至少执行一次,使用的场景有限,所以不是经常使用。?

    cs
    下一篇:没有了