C语言入门

一,输入和输出

1,输出

    int printf(const char *format, ...);
    //参数:format ---- 字符串常量,表示输出的格式
    //参数: ...  ------ 变参,表示要输出的数据,数据的个数和类型都不固定
    
    例如: 
    int main(void)
    {
        int a;
        float b;
        double c;

        a = 120;
        b = 43.21;
        c = 43.21;

        printf("%d\n",a);
        printf("%f\n",c);
        printf("%d,%f\n",a,b);
        printf("a = %d,b = %f\n",a,b);
        printf("%d\n",120);
        printf("%d,%f\n",120,34.56);
        printf("%d\n",a+100);
        printf("%d%%\n",120);
        
        return 0;
    }

    
    转换说明符的含义 
    %d    有符号十进制整数
    %o    无符号八进制整数
    %u    无符号十进制整数
    %x    无符号十六进制整数
    %c    一个字符
    %s    字符串
    %f    十进制计数法的浮点数
    %e    E-计数法的浮点数
    %p    指针

    在使用printf时需要注意以下几个问题:
    1》转换说明符和变参的个数要相同
    2》转换说明符和变参的类型要一致
    3》输出的变参可以是常量,变量,表达式等
    4》输出float数据和double数据时,都用%f 
    5》输出%时,需要用%%

    //printf的修饰符
    例如: 
    #include <stdio.h>

    int main(void)
    {
        int a = 123;
        float b = 12.34;

        printf("%7d\n",a);  //7-表示输出的数据最小的字段宽度为7
        printf("%07d\n",a);  //0-表示如果实际宽度不够7则在左边用0填充

        printf("%-7d\n",a);  //负号-表示左对齐

        printf("%.2f\n",b);  //.2 - 表示保留小数后2位
        printf("%10.2f\n",b);  //.2 - 表示保留小数后2位

        printf("%d\n",-129);
        printf("%+d\n",+120);  //+ -在数据前显示+号


        char c = 'A';
        short s = 10; 
        long l = 100;
        long long ll = 10000;

        printf("%c\n",c);
        printf("%hhd\n",c);  // %hhd ---输出char型整数
        printf("%hd\n",s);   // %hd --- 输出short型整数
        printf("%ld\n",l);  // %ld --- 输出long型整数
        printf("%lld\n",ll);// %lld --- 输出long long型整数

        return 0;
    }

2,输入 
    
    int scanf(const char *format, ...);
    //参数:format ---- 字符串常量,表示输入的格式
    //参数: ...  ------ 变参,表示要输入的数据保存的数据地址,数据的个数和类型都不固定
    
    例如: 
    int main(void) 
    {
        int a;
        float b;
        double c;
        char ch;

        /*
        //scanf("%d",&a);   //&a --表示变量a的地址
        scanf("%d%f%lf",&a,&b,&c);
        //scanf("a=%d,b=%f",&a,&b);  //不推荐使用
    */
        scanf("%d%c%f",&a,&ch,&b);
        printf("a = %d,b = %.2f,ch = %c\n",a,b,ch);

        return 0;
    }

    当使用scanf时,需要注意以下几点:
    1》转换说明符和变参的个数要相同
    2》转换说明符和变参的类型要一致
    3》输入的变参必须是变量的地址,或者内存空间的地址
    4》输入float数据,则用%f,如果输入为double数据,则用%lf 
    5》如果输入多个数据时,数据之间需要用空白符隔开(空白符:空格,换行,tab)
    6》如果输入数据中有字符,则字符和前面的数据之间不能用空白符隔开,必须紧挨着输入
    
    //scanf的返回值
    int main(void)
    {
        int a;
        float b;
        int ret;

        printf("请输入a和b:");
        ret = scanf("%d%f",&a,&b);
        printf("ret = %d\n",ret);
        printf("a = %d,b = %.2f\n",a,b);

        return 0;
    }
    //运行结果:
    farsight@farsight:~/2206/day02_code$ ./scanf02 
    请输入a和b:120 3.4
    ret = 2
    a = 120.b = 3.40
    farsight@farsight:~/2206/day02_code$ ./scanf02 
    请输入a和b:120 r
    ret = 1
    a = 120.b = 0.00
    farsight@farsight:~/2206/day02_code$ ./scanf02 
    请输入a和b:r 2.4
    ret = 0
    a = 21849.b = -0.00
    
二、运算符,表达式和语句

1,运算符 
    1》赋值运算:=
        作用:将一个数值保存到某个变量中
        左值:在赋值号左边的数据
            必须时变量,表示该变量在内存中的空间
        右值:在赋值号右边的数据
            可以是常量,变量,表达式等,表示一个数值
        
        例如: 
            int a,b,c;

            a = 10;
            b = a;
            c = a + c;
        
    2》算术运算: + - * / %  ++ --
        
        %  -----  取余数,两边的数据必须是整数。
        ++/--  ---- 自加1,或自减1,
        
        例如: 
        int a = 4,b = 6,c;
        
        c = a + b++;     //先取出b的值,和a相加,然后赋给c,最后b自加1
        或 
        c = a + ++b;    //先对b自加1,取出b的值,和a相加,然后赋给c
        
    3》逻辑(真假)运算:  !   &&   ||
    
        
        逻辑与:
           表达式1  && 表达式2   结果
           --------------------------
            真             真        真 
            真             假           假
            假             真        假
            假             假          假
        
        逻辑或:
            表达式1  || 表达式2   结果
           ---------------------------
            假              假            假
            假             真         真 
            真              假            真
            真              真         真
        
    4》关系运算: > >= < <= == != 
        作用:比较两个数大小,或者是否相等
        
        关系运算的结果为逻辑值
        例如: 
        int main(void)
        {
            int a,b,c;
            bool bl;

            a = 10;
            b = a;
            c = a + c;

            bl = a > b;
            printf("bl = %d\n",bl);      //bl = 0

            bl = a == b;
            printf("bl = %d\n",bl);  // bl = 1

            return 0;
        }
    5》位运算: ~   &  | ^  << >> 
        作用:按每个整数的二进制存储值的位进行运算
        
        int main(void)
        {
            char a,b;

            a = 5;
            b = 3;

            printf("~a = %hhd\n",~a);
            printf("a & b = %hhd\n",a & b); 
            printf("a | b = %hhd\n",a | b); 
            printf("a ^ b = %hhd\n",a ^ b); 
            printf("a << 2 = %hhd\n",a<<2);
            printf("a >> 2 = %hhd\n",a>>2);
            printf("-6 >> 2 = %hhd\n",-6>>2);

            return 0;
        }
    
    6》复合运算:把算术运算或位运算和赋值运算合并
        例如: += *= |= &= 等
        
        int a = 6, b = 3, c;
        
        a = a + b;  可以使用复合运算:a += b;
    
    7》条件运算:   ? : 
        
        格式: 表达式1 ? 表达式2 : 表达式3 
        例如: 
        int a = 6;
        int b = 3;
        
        a > b ? a : b      //运算过程:如果a > b 则结果为a,否则结果为b    
    
    8》逗号运算: ,
        格式:  表达式1,表达式2,表达式3      //逗号运算结果取最后一个表达式的值
        例如: 
        int a,b,c;
        
        a = 4,b = 2, a+b      //运算结果为6
        例如: 
        int main(void)
        {
            int a,b,c;
                
            c = (a=3,b=5,a+b);
            printf("c = %d\n",c);

            return 0;
        }
        
    9》sizeof运算
        
        作用: 计算类型的长度或者计算数据占用内存的空间大小
        
        例如:
        int main(void)
        {
            long len;

            len = sizeof(short);
            printf("len = %ld\n",len);
            len = sizeof(int);
            printf("len = %ld\n",len);
            len = sizeof(long);
            printf("len = %ld\n",len);
            len = sizeof(long long);
            printf("len = %ld\n",len);
            len = sizeof(float);
            printf("len = %ld\n",len);
            len = sizeof(double);
            printf("len = %ld\n",len);
            len = sizeof(long double);
            printf("len = %ld\n",len);


            short s;
            int i;
            float f;

            len = sizeof(s);
            printf("len = %ld\n",len);
            len = sizeof(i);
            printf("len = %ld\n",len);
            len = sizeof(f);
            printf("len = %ld\n",len);

            return 0;
        }

    

2,表达式和语句     
    
    1》表达式 
        所谓表达式就是指由运算符、运算量和标点符号组成的有效序列,其目的是用来描述一个计算过程。
        
        每一个表达式都有一个运算的结果,该结果或者是数值,或者是逻辑值
        
        表达式        值
        -4+6        2
        c=3+8        11
        5>3            1
        6+(c=3+8)    17
        
    2》语句
        表达式 + ; 就是语句,语句是c程序执行的最小单位
    
三,控制流 ------控制计算机执行程序的次序

1,循环控制
    1》while语句
        格式: 
            while(表达式){    //如果表达式为真,则执行一次循环体,如果表达式为假,则结束循环
                要循环执行的代码
            }
        例如:
         int main(void)
        {
            int age = 0;

            while(age < 30){
                printf("请输入你的年龄:");
                scanf("%d",&age);
                printf("你的年龄为%d\n",age);
            }   
            return 0;
        }
    2》do-while语句 
        格式: 
        do{
                要循环执行的代码
        }while(表达式);   //如果表达式为真,则执行一次循环体,如果表达式为假,则结束循环
        
        例如: 
        int main(void)
        {
            int age = 0;

            do{
                printf("请输入你的年龄:");
                scanf("%d",&age);
                printf("你的年龄为%d\n",age);
            }while(age < 30);

            return 0;
        }
        
    3》for语句 
        格式: 
            for(表达式1 ; 表达式2 ;表达式3){    先执行表达式1,然后判断表达式2,如果为真,则执行循环体,执行完循环体,则执行表达式3,然后再判断表达式2,如果表达式2位假,则退出
                要循环执行的代码
            }
        例如: 
            int main(void)
            {
                int age;

                for(age = 0; age < 20; age++){
                    printf("你的年龄为%d\n",age);
                }   
                return 0;
            }

2,分支控制
    1》if语句
        格式: 
            if(表达式){   //表达式为真,则执行,表达式为假,不执行
                满足条件执行的代码
            }
        
        例如: 
        int main(void)
        {
            int age = 0;

            while(1){
                printf("请输入你的年龄:");
                scanf("%d",&age);
                printf("你的年龄为%d\n",age);
                if(age < 18){
                    printf("未成年,禁止入内\n");
                }   
            }   
            return 0;
        }
    
    2》if-else语句 
        格式: 
            if(表达式1){   //表达式1为真,则执行,表达式1为假,不执且判断表达式2
                满足条件1执行的代码
            }else if(表达式2){     //表达式2为真,则执行,表达式2为假,不执且判断表达式3
                满足条件2执行的代码
            .......
            }else{
                以上条件都不满足执行的代码
            }
        例如: 
        int main(void)
        {
            int age = 0;

            printf("请输入年龄:");
            scanf("%d",&age);

            if(age < 0){ 
                printf("输入错误!\n");
            }else if(age < 18){
                printf("未成年人,禁止入内!\n");
            }else if(age < 45){
                printf("欢迎观赏!\n");
            }else{
                printf("不宜过渡运动!\n");
            }   

            return 0;

        }
    3》switch-case语句 
        格式:
        switch(表达式){        //计算表达式的值 
            case 整型常量:        //从第一个case开始,用表达式的值与case后的常量比较,如果相等则从该 case语句下面开始执行整个代码
                代码块A
            case 整型常量:
                代码块B
            ........
            case 整型常量:
                代码块N
            default:
                代码块X
        }
        例如:
        int main(void)
        {
            int day;

            printf("请输入day:");
            scanf("%d",&day);

            switch(day){
                case 1:
                    printf("今天是星期一!\n");
                case 2:
                    printf("今天是星期二!\n");
                case 3:
                    printf("今天是星期三!\n");
                case 4:
                    printf("今天是星期四!\n");
                case 5:
                    printf("今天是星期五!\n");
                case 6:
                    printf("今天是星期六!\n");
                case 7:
                    printf("今天是星期天!\n");
                default:
                    printf("输入错误!\n");
            }   

            return 0;
        }


3,跳转控制
    1》continue语句
        只能用于循环语句中,表示结束某一次循环体的执行
        例如: 
        int main(void)
        {
            int i;

            i = 0;
            while( i < 50){
                i++;
                if(i % 2 != 0)
                    continue;  //从此跳转到while头部,执行下一次循环
                printf("%d\n",i);
            }   

            return 0;
        }

    
    2》break语句 
        跳出循环
        例如: 
        int main(void)
        {
            int age = 0;

            while(1){
                printf("请输入你的年龄:");
                scanf("%d",&age);
                printf("你的年龄为%d\n",age);
                if(age < 18){
                    printf("未成年,禁止入内\n");
                    break;
                }   
                printf("欢迎光临!\n");
            }   
            return 0;
        }

        
        跳出switch语句
        int main(void)
        {
            int day;

            printf("请输入day:");
            scanf("%d",&day);

            switch(day){
                case 1:
                    printf("今天是星期一!\n");
                    break;
                case 2:
                    printf("今天是星期二!\n");
                    break;
                case 3:
                    printf("今天是星期三!\n");
                    break;
                case 4:
                    printf("今天是星期四!\n");
                    break;
                case 5:
                    printf("今天是星期五!\n");
                    break;
                case 6:
                    printf("今天是星期六!\n");
                    break;
                case 7:
                    printf("今天是星期天!\n");
                    break;
                default:
                    printf("输入错误!\n");
            }   

            return 0;
        }

    3》goto语句 -----无条件跳转
    
        例如: 
        int main(void)
        {
            int age;


        w:
            printf("请输入你的年龄:");
            scanf("%d",&age);
            printf("你的年龄为%d\n",age);
            goto e;
            printf("hello world\n");
        e:
            printf("farsight\n");
            return 0;
        }
        ~             
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值