C语言常量、格式化输入输出、运算符、类型转换、分支语句、开关语句、循环语句

目录

一、常量(const)        

二、格式化输入输出

三、运算符(存在优先级)

        自变运算符  ++/--   使变量自动+1或-1

        算术运算符  + - * / %

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

        逻辑运算符  && || !

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

        赋值运算符  = += -= *= /=

        位运算符        & | ~ >> <<

四、类型转换

        自动类型转换:

        强制类型转换:

五、分支语句

六、开关语句(也属于分支语句)

七、循环语句


一、常量(const)        

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

        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 

                有符号与无符号运算,全都转为无符号,结果不会小于0

        问题:100年有多少秒(忽略闰年)

                超出 signed int 范围,使用 unsigned int

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

二、格式化输入输出

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

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

        %0nd        显示n个字符宽度,不够则补0,右对齐(补0没有左对齐)

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

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

三、运算符(存在优先级)

        自变运算符  ++/--   使变量自动+1或-1

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

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

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

        算术运算符  + - * / %

                整数/整数   结果没有小数点(四舍五入)

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

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

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

        int num = -5;

        if(1 < num < 10)

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

        注意:建议常量放左边

        逻辑运算符  && || !

                会先把运算对象转换成逻辑值,0转换为假,非0转换为真(包括负数)

                A && B  一假即假

                A || B  一真即真

                !A          求反

                && || 具有短路特性:当左边的运算对象已经能够确定整个表达式的结果时,右边的所有运算对象不再计算(可用于精简if判断)

                (num != 0) && (num1 = 100)

                if(num != 0)

                {

                        num1 = 100;

                }

                        

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

                A ? B : C

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

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

        赋值运算符  = += -= *= /=

        a += b; a = a + b;

        a -= b; a = a - b;

        a *= b;

        a /= b;

        ...

        位运算符        & | ~ >> <<

        sizeof 也是运算符,但是sizeof括号内的表达式不会计算(只考虑括号内字节数最大的数值)

四、类型转换

        自动类型转换:

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

                意不丢失数据为基础,适当地牺牲一些空间

                转换规则:(存在优先级)

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

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

                        3、整型向浮点型转

        强制类型转换:

                (新类型)数据

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

五、分支语句

        

    if(表达式)  //单分支
    {
        表达式为真时,执行此处代码
    }

    if(表达式)  //双分支
    {
        表达式为真时,执行此处代码
    }
    else
    {
        表达式为假时,执行此处代码
    }

    if(表达式1)  //多分支
    {
        表达式1为真时,执行此处代码
    }
    else if(表达式2)
    {
        表达式2为真时,执行此处代码
    }
    else
    {
        表达式都为假时,执行此处代码
    }

        注意:大括号建议上下对齐,当分支语句只有一条时,大括号可以省略,但不建议省略

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

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

        四闰百不闰,四百闰

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

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

        abc == a*a*a + b*b*b + c*c*c

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

        [100,90]        A

        (90,80]         B

        (80,70]         C

        (70,60]         D

        (60,0]          E

        other           成绩有误

六、开关语句(也属于分支语句)

        

    switch(n)   //n可以使数值、表达式,运算结果必须是整数
    {
        case val:    //val 必须是整常量,如果val等于n,则打开执行开关
        ...
        break;    //关闭执行开关
        case val:
        ...
        break;
        .
        .
        .
        default:    //如果所有的case都没有匹配成功,则打开该执行开关,并且放在任何位置都会最后执行
        ...
        break;
    }

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

                switch 不能和 continue 配合使用

        注意:

                case a ... b: 可以表示一个范围a~b,但是属于gnu编译器独有的语法

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

        1 2 3           春天

        4 5 6           夏天

        7 8 9           秋天

        10 11 12        冬天

        other           月份有误

七、循环语句

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

        for 循环语句

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

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

    for([1];[2],[3])
    {
        [4];
    }

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

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

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

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

                1 2 4 3 4 3 2 ...

                for 循环的多种写法:                       

    for( ; ; )
    {
        //死循环
    }
    int i = 0;
    for( ; i<10; i++)
    {


    }
    for(int i=0; i<10; )
    {
        ...
        i++;
    }

        while 循环                

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

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

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

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

        do while 循环       

    do{
        //循环体
    }while(条件);    //分号不能少

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

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

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

        循环嵌套:

                循环语句中包含循环语句

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

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

作业2:输入一个正整数,判断是否是素数   只能被1和本身整除

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

作业4:输入一个6位密码,正确密码自定,输入正确显示"登陆成功",输入错误提示"还剩几次机会",

                可以继续输入,最多可以输错3次,否则显示"账号已锁定",并结束

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

        -1234        - 1 2 3 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值