我是靠谱客的博主 温柔大叔,最近开发中收集的这篇文章主要介绍C语言归纳三-C语言循环结构和选择结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 

一、关系运算符的优先级

二、逻辑运算符

2.1 &&,||,!。

2.2 逻辑符的优先级

三、switch语句

四、条件运算符

五、循环

5.1 while循环

5.2 do while循环

5.3 for循环

六、break和continue解释

6.1 break

6.2 continue语句


一、关系运算符的优先级

关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。

理解一下下面的代码:

#include <stdio.h>
int main(){
    char c='k';
    int i=1, j=2, k=3;
    float x=3e+5, y=0.85;
    int result_1 = 'a'+5<c, result_2 = x-5.25<=x+y;
    printf( "%d, %dn", result_1, -i-2*j>=k+1 );
    printf( "%d, %dn", 1<j<5, result_2 );
    printf( "%d, %dn", i+j+k==-2*j, k==j==i+5 );
    return 0;

输出结果:

1, 0
1, 1
0, 0
对于含多个关系运算符的表达式,如 k==j==i+5,根据运算符的左结合性,
先计算k==j,该式不成立,其值为0,再计算0==i+5,也不成立,故表达式值为0。

下面的这个代码有点意思,是while((c=getchar())!='n'&&c!=EOF)的解释。代码如下:

if(a=b)
    printf("%d",a);
else
    printf("a=0");

意思是,把 b 的值赋予 a,如果为非0输出a的值。这种用法在后面的程序中会经常出现。

二、逻辑运算符

2.1 &&,||,!。

&&:参与运算的两个表达式都为真时,结果才为真,否则为假。例如:

5&&0

5为真,0为假,相与的结果为假,也就是 0。

2.2 逻辑符的优先级

赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)

&& 和 || 低于关系运算符,! 高于算术运算符。

按照运算符的优先顺序可以得出:

  • a>b && c>d  等价于  (a>b)&&(c>d)
  • !b==c||d<a  等价于  ((!b)==c)||(d<a)
  • a+b>c&&x+y<b  等价于  ((a+b)>c)&&((x+y)<b)

逻辑运算符举例:

#include <stdio.h>
int main(){
    char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf( "%d,%dn", !x*!y, !!!x );
    printf( "%d,%dn", i&&j-3, i<j&&x<y );
    先计算j-3的值为非0,再求i && j-3的逻辑值为1.
    printf( "%d,%dn", i==5&&c&&(j=8), x+y||i+j+k );
    return 0;
}
运行结果:
0,0
1,0
0,1

三、switch语句

首先一个示例代码:

#include <stdio.h>
int main(){
    int a;
    printf("Input integer number:");
    scanf("%d",&a);
    switch(a){
        case 1: printf("Mondayn"); break;
        case 2: printf("Tuesdayn"); break;
        case 3: printf("Wednesdayn"); break;
        case 4: printf("Thursdayn"); break;
        case 5: printf("Fridayn"); break;
        case 6: printf("Saturdayn"); break;
        case 7: printf("Sundayn"); break;
        default:printf("errorn"); break;
    }
    return 0;
}

接下来是需要注意的点:

(1)switch后面是一个表达式,可以有变量。

但是case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

(2)break必须存在,default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

四、条件运算符

max = (a>b) ? a : b;

该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。

条件运算符(?:)的优先级低于关系运算符和算术运算符,但高于赋值符。因此上述代码可以去掉括号应用。

条件运算符的结合方向是自右至左。例如:

a>b ? a : c>d ? c : d;
应理解为:
a>b ? a : ( c>d ? c : d );

五、循环

5.1 while循环

5.2 do while循环

do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。格式如下,注意while括号后面有分号。

do{
        sum+=i;
        i++;
    }while(i<=100);

5.3 for循环

思想:1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

特殊点:

for( ; ; )  语句     相当于:   while(1)  语句

六、break和continue解释

6.1 break

If break和while(1)真的是一个不错的搭配。

在多层循环中,一个 break 语句只向外跳一层。

简单举例:

#include <stdio.h>
int main(){
    int i=1, j;
    while(1){  // 外层循环
        j=1;
        while(1){  // 内层循环
            printf("%-4d", i*j);
            j++;
            if(j>4) break;  //跳出内层循环
        }
        printf("n");
        i++;
        if(i>4) break;  // 跳出外层循环
    }
    return 0;
}
运行结果:
1   2   3   4
2   4   6   8
3   6   9   12
4   8   12  16

6.2 continue语句

break是直接离它最近的一层循环就终止了。

continue是离它最近的一层循环仍然继续,只不过这层循环的该次continue后面的语句不再执行了,直接跳到下一次。

break和它的区别就是break不跳到下一次了,没得跳了,终止了。不想举例子,算了还是举例子吧。

#include <stdio.h>
int main(){
    char c = 0;
    while(c!='n'){  //回车键结束循环
        c=getchar();
        if(c=='4' || c=='5'){  //按下的是数字键4或5
            continue;  //跳过当次循环,进入下次循环
        }
        putchar(c);
    }
    return 0;
}
运行结果:
0123456789↙
01236789

C语言求π的值:http://c.biancheng.net/cpp/html/2813.html

 

 

 

 

 

 

 

 

 

 

最后

以上就是温柔大叔为你收集整理的C语言归纳三-C语言循环结构和选择结构的全部内容,希望文章能够帮你解决C语言归纳三-C语言循环结构和选择结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部