if分支语句

if(判断表达式){

        判别表达式为真,执行得代吗

}

else

{

    判别表达式为假,执行代码

}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <time.h>

int main(void)
{
    int a;
    printf("请输入一个数:");
    int ret = scanf("%d\n",&a);
    if(a > 0)
    {
        printf("a > 0\n");
    }
    else
    {
        printf("a <= 0\n");
    }
	return EXIT_SUCCESS;
}
多分支逻辑

if(判断表达式1)

{

    判别表达式1为真,执行代码

}

else if (判断表达式2)

{

    判别表达式1为假,判断表达式2为真,执行代码

}

else if (判断表达式3)

{

    判别表达式1为假,判断表达式2为假,判断表达式3为真,执行代码

}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <time.h>

int main(void)
{
    //表示学生成绩
    int score;
    printf("请输入学生成绩:");
    scanf("%d", &score);
    if(score >= 90)    //表示优的成绩
    {
        printf("优\n");
    }
    else if(score >= 70 && score < 90)
    {
        printf("良\n");
    }
    else if(score >= 60 && score 70)
    {
        printf("及格\n");
    }
    else
    {
        printf("不及格\n")
    }
	return EXIT_SUCCESS;
}
编写程序,实现3只小猪称体重,屏幕输出3只小猪的重量,使用if分支,算出最重的那只小猪?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <time.h>

int main(void)
{
    int pig1, pig2, pig3;
    printf("请输入3只小猪的重量:");
    scanf("%d %d %d", &pig1, &pig2, &pig3);
    if(pig1 > pig2)
    {
        printf("第一只小猪最重,体重为:%d\n", pig1);
    }
    else
    {
        printf("第3只小猪最重,体重为:%d\n", pig2);
    }
    else
    {
        if(pig1 > pig3)
        {
            printf("第2只小猪最重,体重为:%d\n", pig2);
        }
        else
        {
            printf("第3只小猪最重,体重为:%d\n", pig3);
        }
    }

	return EXIT_SUCCESS;
}
switch 分支语句

switch(判别表达式)

{

        case 1:

        执行语句;

        break;//表示一个分支语句执行结束,跳出switch

        case 2:

        执行语句

        break;

        ......

        case n:

        执行语句

        break;

     default;

        break;

}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>

int main(void)
{
	//获取学生成绩
    int score;
    printf("请输入学生成绩:");
    scanf("%d", &score);
    switch(score / 10)
    {
        case 10:
            printf("优\n");
            break;
        case 9:
            printf("优\n");
            break;
        case 8:
            printf("良\n");
            break;
        case 7:
            printf("良\n");
            break;
        case 6:
            printf("及格\n");
            break;
        default:
            printf("不及格\n");
            
    }
	return EXIT_SUCCESS;
}

精确匹配,机构较清晰,较if语句执行效果较高

case穿透

一个case分支,如果没有break,每执行完,case的代码,会继续向下,执行下一个case分支代码,这称之为case穿透

大多情况下,一个case分支,应该对应一个break利用case传统
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>

int main(void)
{
	//获取学生成绩
    int score;
    printf("请输入学生成绩:");
    scanf("%d", &score);
    switch(score / 10)
    {
        case 10:    //让switch发生case穿透
        case 9:
            printf("优\n");
            break;
        case 8:
        case 7:
            printf("良\n");
            break;
        case 6:
            printf("及格\n");
            break;
        default:
            printf("不及格\n");
            
    }
	return EXIT_SUCCESS;
}
while 循环语句

语法:while( 判断表达式)    //如果为真,执行循环体,如果为假,跳出循环

{

        循环体

}
练习:从1-100数数,逢7和7的倍数,敲桌子
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>

int main(void)
{
    int num =1;
    while(num <= 100)
    { 
        //判断
        if(num % 7==0 || num % 10 ==7 || num / 10==7)
        {
            printf("敲桌子\n");
        }
        else
        {
            printf("%d\n", num)
        }
        num++;
    }
	return EXIT_SUCCESS;
}
do ...while 循环语句

语法:do{

                    循环体

}while ( 判断表达式);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <time.h>

int main(void)
{
	/*求水仙花,一个三位数(100-999)各个位上的数子的立方和等于数字
	分析:3的陪数:100-999
		 个为数:int a = num % 10
		 十位数:int b = num  / 10 % 10
		 百位数:int c = num / 100
	*/
	int num = 100;	//从100开始
	int a, b, c;	//定义个位,十位,百位的变量
	do {
		a = num % 10;	//求个位数
		b = num / 10 % 10;	//求十位数
		c = num / 100;	//求百位数
		//判断这个数字是否是水仙花数
		if (a * a * a + b * b * b + c * c * c == num)
		{
			printf("水仙花:%d\n", num);
		}
		num++;
	} while (num <= 999);

	return EXIT_SUCCESS;
}