• [一篇读懂]C语言三讲:选择、循环



    1. 选择if-else讲解

    1 关系表达式与逻辑表达式

    • 算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等。

    计算表达式的过程

    计算表达式 5 > 3 & & 8 < 4 − ! 0 5>3\&\&8<4-!0 5>3&&8<4!0
    1

    2 if-else语句

    • if 判断条件(表达式)为真,就执行某个语句,反之不执行这个语句。
    • if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句。
      if
    • if后面不能加分号。
      如果有else分支语句,加分号导致编译不通过;
      如果没有else分支语句,加分号导致i无论取何值,都执行if语句。

    【例】判断输入值是否大于0

    #include 
    //练习if与else
    int main()
    {
    	int i;
    	while (scanf("%d", &i))
    	{
    		if (i > 0)//不要在if后加分号
    		{
    			printf("i is bigger than 0\n");//为了避免加代码时出现问题 - 加大括号!
    			//不加大括号的问题1:新加的语句不属于if语句!
    			//不加大括号的问题2:悬空的else和那个if配对?
    		}
    		else
    		{
    			printf("i is not bigger than 0\n");
    		}
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • if 语句和else语句也可以多个同时使用(多分支语句)。
    • 无论有多少个if语句和else if语句,程序都只会执行其中的一个语句。
    • if语句支持多层嵌套。
      注意,使用if嵌套语句时,要考虑“悬空的else”问题。例如,
    if(i > 1)
    	if(i < 10)
    		printf("i > 1 and i < 10\n");
    	else 
    		printf("no,they are not\n")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • C语言中的else子句从属于最靠近它的不完整if语句。
    • 上例中的else子句从属于第二个if语句,如果想让它从属于第一个if语句,那么可以用一个花括号把第二个if语句包含在一个单独的代码块内:
    if(i > 1)
    {
    	if(i < 10)
    		printf("i > 1 and i < 10\n");
    }
    	else
    		printf("no,they are not\n");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 在if语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误。

    2. 循环while,for讲解,continue,break讲解

    1 while循环

    • 当while表达式的值非0时,执行while语句中的内嵌语句,从而实现语句多次执行的效果。。
    • 先判断表达式,后执行语句。
    • 为了避免程序进入死循环(不停地进行循环操作),在语句中需要有让表达式趋近于假的操作来使程序跳出循环。
      while
    • while后面不能加分号,程序会发生死循环。
    • while语句应使用花括号,可使程序更加清晰,避免向循环内添加语句时出错。

    【例】计算1到100之间所有整数之和

    #include 
    //计算从1到100的和
    int main()
    {
    	int i = 1, total = 0;
    	//while后加分号 - 死循环
    	//循环体内没有让while趋于假的操作 - 死循环
    	while (i <= 100)//while后不能加分号 - 否则死循环
    	{
    		total = total + i;//把i加到total上
    		i++;//i++即 - i=i+1 - 让语句趋于假
    	}
    	printf("total = %d\n", total);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2 for循环

    • for循环语句使用最为灵活,可用于循环次数已经确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况。
    • for语句完全可以替代while循环语句。
    for(表达式1;表达式2;表达式3) 语句;
    
    • 1
    1. 先求解表达式1.
    2. 求解表达式2,若其值为真(值为非0),则先执行for语句中指定的内嵌语句,后执行第(3)步。若其值为假(值为0),则结束循环,转到第(5)步。
    3. 求解表达式3。
    4. 转回第(2)步继续执行。
    5. 循环结束,执行for语句下面的语句。
      for
    • for循环语句中必须且只能有两个分号。
    • for循环语句后加分号不会死循环,会结果不对。

    【例】for循环语句实现计算1到100之间的所有整数之和

    #include 
    
    int main()
    {
    	int i, total;
    	for (i = 1, total = 0; i <= 100; i++)//必须有两个分号 - 不能加分号 - 不会死循环,会结果不对
    	{
    		total += i;
    	}
    	printf("total = % d\n", total);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • for循环的可读性要比while循环的好,能使用for循环时不要强制改为while循环。

    3 continue语句

    • continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断。
    • 当continue用于while和do while循环中时,注意不要跳过让循环趋近于假的语句。
      【例】对1到100之间的奇数进行求和
    #include 
    //for 循环实现从1加到100
    //使用continue求奇数的和
    int main()
    {
    	int i, total;
    	for (i = 1, total = 0; i <= 100; i++)//for小括号后不要加分号
    	{
    		if(i % 2 == 0)
    		{
    			continue;//continue下面的代码均不会得到执行
    		}
    		total += i;
    	}
    	printf("total = %d\n", total);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4 break语句

    • break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立。
    • break语句也可用在while循环和do while循环中,起结束对应循环的作用。
      【例】break语句实例
    #include 
    //使用break跳出循环
    int main()
    {
    	int i, total;
    	for (i = 1, total = 0; i <= 100; i++)//for小括号后不要加分号
    	{
    		if (total > 2000)
    		{
    			break;//当和大于两千时,循环结束
    		}
    		total += i;
    	}
    	printf("total = %d,i = %d\n", total,i);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    总结

    1.1

    • 算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等。

    1.2

    • if 判断条件(表达式)为真,就执行某个语句,反之不执行这个语句。

    • if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句。

    • if后面不能加分号。
      如果有else分支语句,加分号导致编译不通过;
      如果没有else分支语句,加分号导致i无论取何值,都执行if语句。

    • if 语句和else语句也可以多个同时使用(多分支语句)。

    • 无论有多少个if语句和else if语句,程序都只会执行其中的一个语句。

    • if语句支持多层嵌套。

    • C语言中的else子句从属于最靠近它的不完整if语句。

    • 在if语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误。

    2.1

    • 当while表达式的值非0时,执行while语句中的内嵌语句,从而实现语句多次执行的效果。。
    • 先判断表达式,后执行语句。
    • 为了避免程序进入死循环(不停地进行循环操作),在语句中需要有让表达式趋近于假的操作来使程序跳出循环。
    • while后面不能加分号,程序会发生死循环。
    • while语句应使用花括号,可使程序更加清晰,避免向循环内添加语句时出错。

    2.2

    • for循环语句使用最为灵活,可用于循环次数已经确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况。
    • for语句完全可以替代while循环语句,for循环的可读性要比while循环的好,能使用for循环时不要强制改为while循环。
    • for循环语句中必须且只能有两个分号。
    • for循环语句后加分号不会死循环,会结果不对。

    2.3

    • continue语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断。
    • 当continue用于while和do while循环中时,注意不要跳过让循环趋近于假的语句。

    2.4

    • break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立。
    • break语句也可用在while循环和do while循环中,起结束对应循环的作用。
  • 相关阅读:
    GEE开发之Modis_NDVI数据分析获取大总结
    Java面试过程中高频基础面试题
    计算几何(待填坑)
    大数据高级开发工程师——Spark学习笔记(6)
    上海高考语文命题趋势和备考建议?附1990年-2023年高考语文真题和答案资源
    Vivado下阻塞赋值和非阻塞赋值的对比
    php连接上mysql数据库该的配置方法
    Nacos Config
    微机原理:汇编语言语句类型与格式
    线性代数学习笔记11-1:总复习Part1(CR分解、LU分解、QR分解)
  • 原文地址:https://blog.csdn.net/m0_58991879/article/details/127934844