ios--c DAY_2

来源:互联网 发布:mac的照片怎么删除 编辑:程序博客网 时间:2024/06/06 05:27

1、BOOL  oc语言                  bool  c语言的

#define  YES  1                     TRUE

#define  NO 0                        FALSE


BOOL类型的:非0则输出本身

bool类型的:非0则输出1


2、关系运算符 >= <=  ==

3、逻辑运算符 && ||  !

4、赋值运算符  =  左侧必须是变量

5、!>算术>关系>逻辑>赋值

6、下午:遇到键盘缓冲区的问题-----

char  ch1,ch2;                                      char  ch1,ch2;  

scanf("%c",&ch1);                                ch1=getchar();

scanf("%c",&ch2);                                ch2=getchar();

printf("%c %c\n",ch1,ch2);                   printf("%c %c\n",ch1,ch2);


scanf()和getchar()的区别:就是一个键盘缓冲区(输入缓冲区)之类的问题。就是在输入的时候,第一次键入一个数,敲一次回车,此时的回车就会停留在键盘缓冲区中,当下次再遇到输入的命令时,系统会先读取缓冲区内的回车符,以至于使用scanf()就会读取不到用户输入的数据。但是getchar()函数就不一样,getchar()函数是以回车符结束,也就是只有遇到回车符时,getchar()才会停止读取这个命令。


7、闰年:400年一润或者4年一润&&100年不润。


今天上课敲的代码:


//
//  main.m
//  LessonTwo
//
//  Created by lanou3g on 15/7/29.
//  Copyright (c) 2015年 lanou3g. All rights reserved.
//

#import <Foundation/Foundation.h>


/*
 //枚举
 
 //1、属于构造类型;
 //2、具有名称的整形常量;
 //3、目的:为了提高代码的可读性;
 
 //4、语法:
 enum 枚举变量名{
 标识符1,  //默认从0开始,也可以自定义
 标识符2,
 标识符3,
 ... //最后一个标识符后面没有逗号
 };(注意这里的分号)
 
 //5、定义枚举,必须写在函数的外面;
 //6、枚举类型的变量,每次只能赋一个数值。
 */
enum colorType{
    red,
    green,
    blue=100,
    yellow
};

enum fruitType{
    apple,
    orienge,
    pear,
    banana
};


int main(int argc, const char * argv[]) {
   
    //接着下午课程,写在这是为了写枚举方便
    enum colorType color=red;  //color叫枚举变量,
    printf("color=%d\n",color);
    enum colorType color1=yellow;
    enum colorType color2=green;
    printf("color1=%d\n",color1);
    printf("color2=%d\n",color2);
    //枚举变量每次只能赋一个值,下面的情况只认准第一个
    enum colorType color3=yellow,red;
    printf("color3=%d\n",color3);
    
    //定义一个枚举类型,使用switch case 输出对应的水果名。
    
    enum fruitType fruit=banana;
    switch (fruit) {
        case 0:
            printf("苹果��\n");
            break;
        case 1:{
            printf("橘子��\n");
            break;
        }
        case 2:{
            printf("梨子��\n");
            break;
        }
        case 3:{
            printf("香蕉��\n");
            break;
        }
            
        default:
            break;
    }
    
 /*上午课程
 
    //BOOL类型  OC语言
    //YES 真
    //NO 假
    
    //bool c语言
    //true   flase
    
    //1、布尔类型只有两种结果
    //2、%d 转换符输出
    //3、作用:用于分支和循环的判断
    
    BOOL a1=YES;
    BOOL a2=NO;
    printf("%d\t",a1);
    printf("%d\n",a2);
    
    //思考一下,和c语言不一样
    BOOL a3=4;  //非0即输出本身,只要不是零,就输出原样
    printf("a3=%d\t",a3);
    
    BOOL a33='r';
    printf("a33=%c\t",a33);
    
    bool a4=3;  //非0即输出1
    printf("a4=%d\n",a4);
    
    //关系运算符
    //1、进行两个数的比较,
    //2、结果只有两种情况:真或假;用布尔类型来接收
    
    //关系表达式
    // 组成:常量、变量、关系运算符;
    
    //大于 小于
    BOOL r1=5>3;
    printf("r1=%d\t",r1);
    
    BOOL r11=10>20;
    printf("r11=%d\t",r11);
    
    BOOL r2=5<3;
    printf("r2=%d\t",r2);

    
    //练习:定义两个变量,分别存储c语言成绩和oc成绩,再定义一个变量,接收两个分数的比较结果。
    int c_score=0;
    int oc_score=0;
    printf("请输入c和oc的考试成绩:\n");
    scanf("%d,%d",&c_score,&oc_score);
    if (c_score>oc_score) {
        BOOL B1=c_score>oc_score;
        printf("c语言成绩大于oc成绩(语句为:%d).\n",B1);
    }else if(c_score==oc_score){
        printf("c和oc的成绩一样(语句为:%d).\n",c_score==oc_score);
    }else{
        printf("c语言成绩低于oc成绩(语句为:%d).\n",c_score<oc_score);
    }
    
    //大于等于  小于等于
    int aa=4;
    BOOL bb=3<aa<6;//一般不建议这么写
    printf("\nbb=%d",bb);
    
    BOOL bb1 = 5>=8;//先运行右边的,赋值运算符的优先级比较低
    printf("bb1=%d\t",bb1);
    BOOL bb2 = 5<=8;
    printf("bb2=%d\t",bb2);
    //== 左右两边可以是常量或者变量
    //=  赋值符,左侧只能是变量
    
    BOOL bb3 = 5==8;
    printf("bb3=%d\t",bb3);
    
    BOOL bb4 = 3.5225==3.5225;
    printf("bb4=%d\t",bb4);
    //浮点数不能用==比较,因为四舍五入有误差
    BOOL bb5 = 6!=9;
    printf("bb5=%d\n",bb5);
    
    //逻辑运算符
    //逻辑与(&&)、逻辑或(||)、逻辑非(!)
    //结果只有两种:真、假(BOOL接收)
    //逻辑表达式:变量,常量,逻辑运算符
    
    //1、逻辑与 &&
    //逻辑与表达式: 表达式1 && 表达式2 ;
    //运算规则:
       //1)、先执行表达式1,再执行表达式2;
       //2)、1假则假,全真才真
       //3)、短路现象:表达式1为假,就不用执行表达式2
    BOOL bbb1 = (8==9) && (9!=8);
    printf("bbb1=%d\n",bbb1);
    
    //短路现象---一定要注意的是表2有没有被执行的问题,以至于变量值是否会改变
    int aaaa=9;
    BOOL bbb2 = (2+3!=5) && (++aaaa);//表1假,表2不执行
    printf("bbb2=%d \t a=%d\n",bbb2,aaaa);
    aaaa=9;
    BOOL bbb3 = (2+3==5) && (++aaaa);//表1真,表2执行
    printf("bbb3=%d \t a=%d\n",bbb3,aaaa);
    
    //2、逻辑或 ||
    //逻辑或表达式:表达式1 || 表达式2
    //运算规则:
        //1)、先执行表1,再执行表2;
        //2)、1真则真,全假才假
        //3)、短路现象:表1为真,就不用执行表2
    
    BOOL bbb4 = (8==9) || (9!=8);
    printf("bbb4=%d\n",bbb4);
    int aaaa1=20;
    BOOL  bbb5 = (8==9) || ++aaaa1;//表1假,表2执行
    printf("bbb5=%d \t aaaa1=%d\n",bbb5,aaaa1);
    
    aaaa1=20;
    BOOL bbb7 = (8==9) || (aaaa1+1);//要注意陷阱,自身不加1
    printf("bbb7=%d \t aaaa1=%d\n",bbb7,aaaa1);
    
    aaaa1=20;
    BOOL bbb6 = (8==8) || ++aaaa1;//表1真,表2不执行
    printf("bbb6=%d \t aaaa1=%d\n",bbb6,aaaa1);
    
    //小插曲:顺序结构、分支结构、循环结构
    int cc=0;
    int cc1=0;
    BOOL s=cc>cc1;
    printf("请输入cc和cc1:\n");//输入23,22,s输出为0;why?因为是顺序执行,之前的s的结果已经在0>0这个表达式中了
    scanf("%d,%d",&cc,&cc1);
    printf("s=%d\n",s);
    
    
    
    //逻辑非
    //就是一个取反运算
    //运算规则:
      //对结果的取反
    
    BOOL y=YES;
    BOOL n=!y;
    printf("n=%d\n",n);
    
    BOOL y1=5;//当y1为真时,输出本身
    BOOL y2=!5;
    printf("y1=%d \t y2=%d\n",y1,y2);
    
    
    */
    
    
    /*
    
    //下午课程
    
    //分支结构
    //if 控制语句的作用:通过条件判断,选择性的执行某个分支语句
    //三种形式
    //1)、if(条件表达式){  语法;}
    //2)、if(){  ;}else{  ;}
    //3)、if(){  ;}else if(){  ;}else{  ;}
    
    //条件表达式:算术运算符、逻辑运算符...结果只有真或者假两种情况。
    //运行逻辑:条件表达式为YES,执行,为NO,跳过执行后面的语句。
    
    int xiawuA=4;
    int xiawuB=5;
    if (xiawuA>xiawuB) {//可以用断点查看执行顺序
        printf("我是分支结构里的语句。\n");//分支结构
    }
    printf("我是分支结构后面的语句。\n");//跟if为顺序结构
    
    if (5>3) {
        printf("条件表达式为真.\n");
    }
    
    //从控制台输入一个整数,判断这个整数是否大于100
    
     //if第二种形式
     
    int xiawuNumber=0;
    printf("请输入一个整数:\n");
    scanf("%d",&xiawuNumber);
    //如果只用scanf,会遇到键盘缓冲区的问题,可以用getchar()来解决这个问题
    //如果这里不加getchar()以及下面不加getchar()的话,下一次的scanf()会读取到这次输入的回车符。
    getchar();
    if(xiawuNumber>100){
        printf("这个数大于‘毛爷爷’.\n");
    }else{
    printf("这个数小于100");
    }
     
   
    //从控制台输入一个数,如果输入的是m,则输出靓仔,否则什么都不输出.
    
    char xiawuChar=0;
    printf("请输入一个字符:\n");
    scanf("%c",&xiawuChar);
    getchar();//解决键盘缓冲区的问题
    if (xiawuChar=='m') {
        printf("靓仔\n");
    }else{
        printf("美女\n");
    }
   
    //输入一个年份,判断该年份是否闰年
    
    int year=0;
    printf("请输入一个年份,例如2008:\n");
    scanf("%d",&year);
    getchar();
    //闰年:4年一润,400年一润,但是100年是不润的。
    if(year%400==0||(year%4==0&&year%100!=0)){
        printf("%d是闰年.\n",year);
    }else{
        printf("%d不是闰年.\n",year);
    }
    
    
    //if第三种形式
    //从键盘输入一个字符,若是小写字母,则显示this is digital;若是大写字母,则显示this is capital letter;若是其他字符,则显示other.
    
    char letter=0;
    printf("请输入一个字符:\n");
    scanf("%c",&letter);
    getchar();
    if (letter>='a'&&letter<='z') {
        printf("This is digital.\n");
    }else if (letter>='A'&&letter<='Z'){
        printf("This is capital letter.\n");
    }else{
        printf("Ohter.\n");
    }
   
    
    //条件运算符  三目运算符
    //条件表达式?表达式1:表达式2;
    //运算规则:谁真,值就取谁。
    
    int numberA = 5<3 ? 5 : 3;
    //相当于if(){ ;}else{ ;}
    printf("numberA=%d\n",numberA);
    
    //练习:比较两个数,定义一个变量接收两个数中的最小值,并输出
    //用if做
    int numberB=10;
    int numberC=20;
    int min=0;
    if (numberB>numberC) {
        min=numberC;
    }else{
        min=numberB;
    }
    printf("min=%d\n",min);
    
    //用?:做
    int min1=numberB<numberC ? numberB : numberC;
    printf("min1=%d\n",min1);
     
    
    //switch(整型或字符型表达式){case 整型或字符型常量:  ;break; default: ;break;}
    //多分支
    //作用:提供多个判断条件,同if else,但是代码来说,可读性更佳
    //语法:同case,defalut,break使用。
    //case 后面 多条语句一定要用{}
    //break 结束某个case或者default,执行switch后面的语句。
    
    //运行逻辑:跟case后面的值相对应,找不到就是default。
    
    char gender=0;
    printf("请输入性别(m或f):");
    scanf("%c",&gender);
    getchar();
    switch (gender) {
        case 'm':
            printf("男性\n");
            break;
            case 'f':
            printf("女性\n");
            break;
        default:
            printf("性别未知\n");
            break;
    }
    //若是忘记break,会继续执行下面的case语句。
    
    //从控制台输入一个数,会输出对应的水果:1、苹果;2、香蕉;3、梨子;4、西瓜;5、橘子
    
    int chooseFruit=0;
    printf("请输入你选择的水果编号(1、苹果;2、香蕉;3、梨子;4、西瓜;5、橘子):\n");
    scanf("%d",&chooseFruit);
    switch (chooseFruit) {
        case 1:{
            printf("��苹果\n");
            break;
        }
        case 2:{
            printf("��香蕉\n");
            break;
        }
        case 3:{
            printf("��梨子\n");
            break;
        }
        case 4:{
            printf("��西瓜\n");
            break;
        }
        case 5:{
            printf("��1橘子\n");
            break;
        }
        default:{
            printf("你选择的编号没有对应的水果.\n");
            break;
        }
    }
    
    //switch case  注意事项:
    //1、default可以省略
    //2、多个case可以共同运行一个代码块
    
    char week=0;
    printf("请输入星期的代号:\n");
    scanf("%c",&week);
    getchar();
    switch (week) {
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':{
            printf("好好学习,天天向上。\n");
            break;
        }
        case '6':
        case '7':{
            printf("终于可以玩了。\n");
        }
            
        default:
            printf("输入有错!\n");
            break;
    }
    
    */
    
    return 0;
}








0 0
原创粉丝点击