标准C语言day02

一、常量

    什么是常量:程序运行期间数值不能变化的叫常量

    100     默认int

    100u    unsigned int

    100lu   unsigned long

    100llu  unsigned long long

    100l    long

    100ll   long long

    3.14    默认double

    3.14f   float

    3,14l   long double


 

    问题:100年有多少秒?

        #define SEC (3600*24*365*100u)

二、格式化输入输出

    %nd     显示n个字符宽度,不够则补空格,右对齐

    %-nd    显示n个字符宽度,不够则补空格,左对齐

    %0nd    显示n个字符宽度,不够则补0,右对齐

    %n.mf   显示n个字符宽度(小数点算以为),不够则补空格,m表示小数点后位数(四舍五入)

    %g      不显示小数点后多余的0;


 

三、运算符

    自变运算符: ++/-- 使变量的值自动+1/-1

        前自变:++num  --num    立即有效

        后自变:num++  num--    下一行语句生效

        注意:不要在一行内多次使用自变运算符



 

    算术运算符:+ - * / %

        a%b 求余数

        

        整数/整数   结果没有小数点,只保留整数部分,不四舍五入

        / % 除数不能为0   出现错误:浮点数例外  (核心已转储)



 

    关系运算符:> < >= <= == !=

        比较结果必须是0或者1,比较结果还能继续参与运算

        int num = -5

        if(1<num<10)

        永远为真,运算规则与数学不一样

        //建议常量放左边



 

    逻辑运算符:&&  ||  !

        会先把运算对象转换成逻辑值,0转换成逻辑假,非0转换成逻辑真

        A && B  一假即假

        A || B  一真即真

        !A      求反

        && || 具有短路特性:当左边的运算对象已经能够确定整个表达式的结果时,右边的所有运算对象不再计算



 

    三目运算符:运算对象有三个部分

        A ? B : C 

        判断A的值是否为真,如果为真执行B,否则执行C

        该语句不能使用流程控制语句,因为他必须要有运算结果。



 

    赋值运算符:=  +=

        a += b;     a = a+b;

        a -= b;     a = a-b;

        a *= b;     

        a /= b;

        ...


 

    位运算符:   &   |   ~   >>  <<

    sizeof 也是运算符,但其内部的表达式不会计算




 

四、类型转换

    自动类型转换:

        只有相同类型的数据才能运算,不同类型的数据必须转换成相同的类型才能继续计算

        转换规则:(以不丢失数据为基础,适当的牺牲一些空间)

            1、字节少的向字节多的转

            2、有符号的向无符号的转

            3、整型向浮点型转

    强制类型转换:

        (新类型)数据

        有丢失数据的风险,要慎重使用


 

五、分支语句

    if(表达式)//单分支

    {

        当表达式为真时,执行此处代码

    }

    if (表达式1) //多分支

    {

        当表达式为真时,执行此处代码

    }

    else if(表达式2)

    {

        当表达式2为真时,执行此处代码

    }

    else

    {

        当表达式都为假时,最后执行此处代码

    }


 

    注意:大括号建议上下对齐

         当分支语句只有一条时,大括号可以省略,但不建议省略


 

    练习1:输入三个整数,从大到小显示

    练习2:输入一个年份,判断是闰年还是平年

            四闰白白不闰,四百闰

    练习3:输入一个年份和月份,判断该月有多少天?

    练习4:输入一个三位整数,判断是否是水仙花数?

    练习5:输入一个成绩,判断等级

            [90,100]    A

            [80,90)     B 

            [70,80)     C 

            [60,70)     D 

            [0,60)      E 

            other       输入成绩有误



 

六、开关语句

    switch(n)  //可以是数值也、表达式,运算的结果必须是整数

    {

        case val:   //val 必须是整常量,如果val等于n,则打开执行开关

                ...

                break;  //关闭执行开关

        case val 

                ...

        default:

                ...

                // 如果所有的case都没有匹配成功,则打开该执行开关,并且放在任何位置都会最后执行

    }

    注意:如果每个case后都有break,就形成了分支结构

        switch不能与continue配合使用

    注意: case a ... b:可以表示一个范围a~b,但是属于GNU编译器独有的语法,不建议使用



 

    练习六:输入一个月份,判断季节;

            1 2 3       春天

            4 5 6       夏天

            7 8 9       秋天

            10 11 12    冬天

            other       输入月份有误



 

七、循环语句

        循环就是让一段代码反复执行,最终达到想要的效果

     for循环语句:

        for 是一种比较灵活且较危险(与其他循环相比)的一种循环

        一般用一个变量来引导for循环的运行,这个变量叫做循环变量 i 

        for([1];[2];[3])

        {

            [4];

        }

        1、给循环变量赋初值,C99标准才可以在此处定义循环变量

        2、判断循环条件,一般判断循环变量是否到达了边界

        4、条件2为真,则执行此处代码,也叫循环体

        3、改变循环变量,防止出现死循环,一般对循环变量进行自加或自减

            1 2 4 3 2 4 3 2 4 3  ...  2 4 3 ...


 

        for 循环的多种写法:

            for(;;)

            {

                //死循环

            }

            ------------------

            int i=0;

            for(;i<10;i++)

            {

            }

            ------------------

            for(int i;i<0;)

            {

                ...

                i++;

            }

            ------------------




 

    while循环:

        while(条件)  //当条件为真时执行循环体,为假时结束循环

        {

            //循环体

        }

        while循环相当于for循环的精简版本 for(;条件;)

        for循环负责解决明确知道循环次数的问题

        while循环负责解决只知道结束条件,而不确定循环次数的问题






 

    do while循环:

        do{

            //循环体

        }while(条件);  //分号不能少

        先执行循环体,才判断循环条件是否为真,该循环至少执行一次

        适合先干活,再检查的特殊情况,例如:输入判断密码



 

        /*问题:for、while、do-while 有什么区别

            1、初始化变量。

                    for循环当中定义的初始化变量,只有自己才能用;while和do-while循环,初始化变量本来就在外面,所以外面也照样可以使用(定义在循环体里的局部变量,在栈内运行完释放,并不保存)。

            

            2、执行次数。

                    for循环和while循环是【先判断后执行】,但是do-while循环是【先执行后判断】。

            

            3、使用的普遍性不同。

                    绝大多数情况下,三种循环可以来回转换。但是凡是次数确定、范围确定的情况,使用for循环。*/





 

    循环嵌套:

        循环语句中包含循环语句

        外层循环执行一次,内层循环执行n次









 

    作业1:计算出所有的水仙花数

    作业2:输入一个正整数,判断是否是素数

    作业3:输入一个正整数,判断是否是回文数  12321   

    作业4:输入一个6位密码,输入正确显示"登陆成功",输入错误提示"还剩几次机会",可以继续输入,最多输错三次,否则显示"账号已锁定",并结束

    作业5:输入一个整数,分解显示

           -12234    - 1 2 3 4 






 

-------------------------------------------------------------------------------------------------------------------------------






 

           复习:

           1、C代码变成可执行程序的过程

                预处理:查看宏函数的替换结果,检查宏函数

                    gcc -E

                编译:理解C代码的底层原理,函数重载

                    gcc -S

                汇编:生成代码库、静态库、共享库

                    gcc -c

                链接:是多文件编程的基础

                    gcc a.o b.o c.o ...

            2、gcc编译器常用参数

                -E -S -c -std=gnu99 -o -I -l -Wall -Werror -D(命令行定义宏)


 

            3、C语言文件类型

                .h  .h.gch  .c  .i  .s  .o  .a(静态库)  .so(共享库)  


 

            4、数据类型

                signed char             1       %hhd            -128~127

                signed short            2       %hd             -32768~32767

                signed int              4       %d              正负20亿

                signed long             4/8     %ld    //32位操作系统是4,64位操作系统是8

                signed long long        8       %lld            正负9开头的19位数


 

                unsigned char           1       %hhu            0~255

                unsigned short          2       %hu             0~65535

                unsigned int            4       %u              0~40亿

                unsigned long           4/8     %lu    //32位操作系统是4,64位操作系统是8

                unsigned long long      8       %llu            0~1开头的20位整数

                


 

                float                   4       %f

                double                  8       %lf

                long double             12/16   %LF

                小数点后6位数

                问:有float x; 如何判断x与零值是否相等

                if(0==x)

                if(x<0.000001 && x>-0.000001)



 

            5、 C变量名取名规则

                (1) 必须由字母、数字、下划线组成

                (2) 必须由字母或下划线开头

                (3) 不能与32个关键词重名

                (4) 见名知意



 

            6、变量输入输出

                printf 提示信息+占位符+变量名列表

                scanf  占位符+变量地址列表

                %nd   %-nd   %n.mf(5舍6入)   %g





 

            7、运算符

                / %     除数不能为0,浮点数例外(核心已转储)

                ==      变量尽量在右边

                ++/--   尽量不要在一行内多次使用

                &&/||   具有短路特性    

                注意:运算符也是有优先级的




 

            8、类型转换

                自动类型转换:不同类型数据之间需要先转换为相同的类型数据才能进行运算

                    1)字节少的向字节多的转

                    2)有符号的向无符号的转

                    3)整型向浮点型转

                注意:以不丢失数据为基础,可以适当地牺牲空间

                强制类型转换:

                    (新类型)数据    有丢失数据的风险,谨慎使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值