C语言整理-2

分支结构

在学分支结构之前,要知道一点就是C89标准中没有BOOl这个类型,因此需要将标准升级为C99标准。

 

C99标准在Xcode中,在新建一个工程的时候,选择type时,选择foundation。

创建工程之后,会发现,与之前的main.c的后缀已经变为main.m。这是objective-C环境下的后缀。

与之前.c的页面中,还有不同的是:

#include<stdio.h>换成

#import <Foundation/Foundation.h>

//importoc语法,作用和include是一样的。都是引入一个文件。

 

//Foundation/Foundation.h 是系统提供的一些功能,可以直接用,比stdio.h所包含的东西多得多。

 

 

1、bool数据类型

bool数据类型,只有yes和no两个值,非真即假。在C语言中,认为,非0即为真。

用处:用于if语句的时候和循环判断的时候。

 

在编译过程中,C语言将bool的yes值编译成1存在内存中,将no值编译成0,保存在内存中。

#define yes 1

#define no 0

 

 

2、关系运算符

关系运算符主要就是两者之间的比较,> (大于),>= (大于等于),< (小于),<= (小于等于),== (等于),!=(不等于)。比较得出的结果是bool类型的值,用bool类型变量来存储。其他没什么了。

3、逻辑运算符

 

逻辑运算符就三个:与(&&),或(||),非(!)

参与运算的数,在符号两边都是bool值。得出的结果不是真就是假。

 

&& 逻辑与:只要有一个为假,全都为假。

|| 逻辑或:只要有一个为真,结果都为真。

!逻辑非:取反。

短路现象:

逻辑与运算的时候,如果系统检测到&&前的值是no,那么将不再去判断&&号后面的值,此时,如果&&后的值有赋值运算,赋值运算也不执行。

逻辑或运算的时候,如果系统检测到 || 号前的值是yes ,那么将不再去判断 || 号后面的值,此时,如果 || 后的值有赋值运算,赋值运算也不执行。

    //短路现象

    //逻辑与,如果前面判断是假,后面的判断不再执行。

//    int num1 = -1 ;

//    int num2 = -1;

//    BOOL b3 = (num1 = 0) && (num2 = 2);//

//   

//    printf("%d",b3);//0

//    printf("num1 = %d \n",num1);// 0

//    printf("num2 = %d]\n",num2); // -1

   

    //短路现象

    //逻辑或,如果前面判断是真,后面的判断不再执行。

//    int num1 = -1 ;

//    int num2 = -1;

//    BOOL b3 = (num1 = 2) || (num2 = 0);//

//   

//    printf("%d",b3);//1

//    printf("num1 = %d \n",num1);// 2

//    printf("num2 = %d)\n",num2); // -1

 

 

4、if语句

程序的三种结构:

顺序结构:按顺序执行程序,直到完事为止。

分支结构:if语句和switch

循环结构:循环的执行一段语句。直到循环条件结束为止。

分支结构有两个: if语句和switch语句

if语句有三种方式:

(1)if(条件表达式){

}

    //分支结构

    //if的(第一种形式)

   

//    BOOL b1 = NO;

//    if (/*条件表达式:要明确的表明条件是真是假*/b1){

//        printf("你个大骗子。。。");

//    }

    //练习

    /*

     从控制台输入一个整数。

     判断这个整数是否>100

     如果大于100,输出:这个数大于100”

     */

//    int num = 0;

//    printf("请输入一个整数,按回车结束:\n");

//    scanf("%d",&num);

//    if(num > 100){

//        printf("你输入的数为:%d \n",num);

//        printf("这个整数大于100\n");

//    }

//    char c1 = 0;

//    printf("输入一个字符,按回车结束:\n");

//    scanf("%c",&c1);

//    BOOL b1 ='m' == c1;

//    if(b1){

//        printf("输入的是男性");

//    }

 

 

(2)if(条件表达式){

}else{

}

 

/    char c2 = 0;

//    printf("请输入字符:");

//    scanf("%c",&c2);

//    if ('m' == c2) {

//       

//        printf("正太");

//    }else{

//        printf("萝莉");

//    }

   

//    int year = 0;

//    printf("请输入年份,按回车结束:");

//    scanf("%d",&year);

//   

//   //判断闰年的条件

//    BOOL b1 = (year % 400 == 0 ) ;

//    BOOL b2 =(year % 100 !=0) && (year % 4==0);

//    if(b1 || b2){

//       

//        printf("%d\t是闰年\n",year);

//       

//    }else{

//        printf("%d\t是平年!",year);

//    }

 

 

(3)if(条件表达式){

}else if(条件表达式){

}else{

}

   

//    char c3 = 0;

//    printf("输入一个字符:");

//    scanf("%c",&c3);

//   

//    if('m' == c3){

//        printf("男性");

//    }else if ('f' == c3){

//        printf("女性");

//    }else{

//        printf("春哥");

//    }

   

    /*

     输入一个字符,判断

     s:春天

     m:夏天

     a:秋天

     w:冬天

     其他:输入有误。

     */

//    char c1 = 0;

//   

//    printf("输入一个字符,按回车结束:");

//   

//    scanf("%c",&c1);

//   

//    if('s' == c1){

//        printf("我是春天!");

//    }else if('m' == c1 ){

//        printf("我是夏天!");

//       

//    }else if('a' == c1){

//        printf("我是秋天!");

//       

//    }else if ('w' == c1){

//        printf("我是冬天!");

//    }else{

//        printf("输入有误!!");

//    }

 

 

5、条件表达式

    //条件表达式

//    int num1 = 10;

//    int num2 = 20;

//   

//    int num3 = num1>num2 ? num1 : num2;

//   

//    printf("num3 = %d",num3);

   

    //课后练习题

    /*

     使用条件运算符,选择出三个数中,哪个最大。

    */

 

Switch 分支语句

Switch分支语句就是为了优化if(){}elseif(){}过多条件。

    //switch分支语句

//    switch (apple) {

//        case apple:

//            printf("我是苹果也!");

//            //break:终止往后继续执行

//            break;

//        case banana:

//            printf("我是香蕉也!");

//            break;

//        case orange:

//            printf("我是橘子也!");

//            break;

//        case watermelon:

//            printf("我是西瓜也!");

//            break;

//        default:

//            printf("我不是水果也!");

//    }

 

与else if一样的效果。

注意的是:switch ()括号中的条件必须为整型条件表达式。在每一个case下的语句代码,最后都要加上break,用来跳出switch语句。

    //练习

   

//    int season = 0;

//    printf("请输入一个数字,按回车结束:");

//    scanf("%d",&season);

//   

//    switch (season) {

//        case 1:

//            printf("春天啊我是!spring");

//            break;

//        case 2:

//            printf("夏天啊我是!summer");

//            break;

//        case 3:

//            printf("秋天啊我是!autumn");

//            break;

//        case 4:

//            printf("冬天啊我是!winter");

//            break;

//           

//        default:

//            printf("啥也不是啊我!nothing");

//            break;

//    }

 

6、枚举enum

#import <Foundation/Foundation.h>

//枚举,建议写在这个地方。

enum season{

    //第一个元素,默认为0.后面元素依次+1.spring自动被赋值为0summer1.

    //每个值都可以改变默认值,后面的数还是依次+1.初始化过的默认值,后面的数还是依次+1

    spring = 100,//100

    summer = 200,// 200

    autumn,//201

    winter//202

 

};

// 练习,定义一个枚举

 

//定义五个水果:苹果(10),香蕉,橘子,西瓜

enum fruits{

    apple = 10,

    banana,

    orange,

    watermelon

};

int main(){

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值