热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

目录一、常量(const)二、格式化输入输出三、运算符(存在优先级)自变运算符--使变量自动1或-1算术运算符-*%关系运算符

目录

一、常量(const)        

二、格式化输入输出

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

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

        算术运算符  + - * / %

        关系运算符  > < >&#61; <&#61; &#61;&#61; !&#61;

        逻辑运算符  && || !

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

        赋值运算符  &#61; &#43;&#61; -&#61; *&#61; /&#61;

        位运算符        & | ~ >> <<

四、类型转换

        自动类型转换&#xff1a;

        强制类型转换&#xff1a;

五、分支语句

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

七、循环语句



一、常量(const)        

        什么是常量&#xff1a;程序运行期间数值不能变化的叫常量

        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 

                有符号与无符号运算&#xff0c;全都转为无符号&#xff0c;结果不会小于0

        问题&#xff1a;100年有多少秒(忽略闰年)

                超出 signed int 范围&#xff0c;使用 unsigned int

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


二、格式化输入输出

        %nd         显示n个字符宽度&#xff0c;不够则补空格&#xff0c;右对齐

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

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

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

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


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

        自变运算符  &#43;&#43;/--   使变量自动&#43;1或-1

                前自变&#xff1a;&#43;&#43;num   --num   立即有效

                后自变  num&#43;&#43;   num--   下一行语句生效

                注意&#xff1a;不要在一行内多次使用自变运算符


        算术运算符  &#43; - * / %

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

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


        关系运算符  > < >&#61; <&#61; &#61;&#61; !&#61;

        比较结果必须是0或1&#xff0c;比较结果还能继续参与运算

        int num &#61; -5;

        if(1 < num < 10)

                永远为真&#xff0c;运算规则与数学不一样

        注意&#xff1a;建议常量放左边


        逻辑运算符  && || !

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

                A && B  一假即假

                A || B  一真即真

                !A          求反

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

                (num !&#61; 0) && (num1 &#61; 100)

                if(num !&#61; 0)

                {

                        num1 &#61; 100;

                }

                        


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

                A ? B : C

                判断A的值是否为真&#xff0c;如果为真执行B&#xff0c;否则执行C

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


        赋值运算符  &#61; &#43;&#61; -&#61; *&#61; /&#61;

        a &#43;&#61; b; a &#61; a &#43; b;

        a -&#61; b; a &#61; a - b;

        a *&#61; b;

        a /&#61; b;

        ...


        位运算符        & | ~ >> <<

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


四、类型转换

        自动类型转换&#xff1a;

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

                意不丢失数据为基础&#xff0c;适当地牺牲一些空间

                转换规则&#xff1a;(存在优先级)

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

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

                        3、整型向浮点型转


        强制类型转换&#xff1a;

                (新类型)数据

                有丢失数据的风险&#xff0c;要慎重使用


五、分支语句

        

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

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

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

        注意&#xff1a;大括号建议上下对齐&#xff0c;当分支语句只有一条时&#xff0c;大括号可以省略&#xff0c;但不建议省略

练习1&#xff1a;输入三个整数&#xff0c;从大到小显示

练习2&#xff1a;输入一个年份&#xff0c;判断是闰年还是平年

        四闰百不闰&#xff0c;四百闰

练习3&#xff1a;输入一个年份和月份&#xff0c;判断该月有多少天

练习4&#xff1a;输入一个三位整数&#xff0c;判断是否是水仙花数

        abc &#61;&#61; a*a*a &#43; b*b*b &#43; c*c*c

练习5&#xff1a;输入成绩&#xff0c;判断等级

        [100,90]        A

        (90,80]         B

        (80,70]         C

        (70,60]         D

        (60,0]          E

        other           成绩有误


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

        

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

        注意&#xff1a;如果每个case后都有break&#xff0c;就形成了分支结构

                switch 不能和 continue 配合使用

        注意&#xff1a;

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

练习6&#xff1a;输入一个月份&#xff0c;判断季节&#xff1a;

        1 2 3           春天

        4 5 6           夏天

        7 8 9           秋天

        10 11 12        冬天

        other           月份有误


七、循环语句

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

        for 循环语句

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

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

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

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

                2、判断循环条件&#xff0c;一般判断循环变量是否到达边界

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

                3、改变循环变量&#xff0c;防止出现死循环&#xff0c;一般对循环变量自加或自减

                1 2 4 3 4 3 2 ...

                for 循环的多种写法&#xff1a;                       

for( ; ; ){//死循环}

int i &#61; 0;for( ; i<10; i&#43;&#43;){}

for(int i&#61;0; i<10; ){...i&#43;&#43;;}

        while 循环                

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

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

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

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

        do while 循环       

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

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

                适合先干活&#xff0c;再检查的特殊情况&#xff0c;例如&#xff1a;输入判断密码

        问题&#xff1a;for、while、do-while 有什么区别

        循环嵌套&#xff1a;

                循环语句中包含循环语句

                外层循环执行1次&#xff0c;内层循环执行n次

作业1&#xff1a;计算出所有的水仙花数

作业2&#xff1a;输入一个正整数&#xff0c;判断是否是素数   只能被1和本身整除

作业3&#xff1a;输入一个正整数&#xff0c;判断是会否是回文数   123321  12321

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

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

作业5&#xff1a;输入一个整数&#xff0c;分解显示

        -1234        - 1 2 3 4


推荐阅读
  • x86x64体系探索及编程(对x86处理器介绍得最详尽又最具实践指导意义的一本书)邓志著ISBN978-7-121-18176-42012年10月出版定价:119.00元16开840页对x86处理 ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • 编译原理c语言词法分析器,用C语言实现一个真正的词法分析器
    词法分析,是编译器的第一个模块,也是最简单的模块。最简单,指的是相对于编译器这种大型程序而言,与一般的代码相比还是有点复杂的 ... [详细]
  • IPVlan 详解
    文章目录简介Ipvlan2同节点Ns互通Ns内与宿主机通信第三种方法Ns到节点外部结论Ipvlan31.同节点Ns互通Ns内与宿主机通信Ns内到外部网络总结源码分析ipvlan收包 ... [详细]
  • 883.三维形体投影面积
    题目883.三维形体投影面积题目大意在nxn的网格grid中,我们放置了一些与x,y,z三轴对齐的1x1x1立方体。每个值vgri ... [详细]
  • 好久没玩过C语言了,上一次还是在大二的时候。。。废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下&# ... [详细]
  • 本文小编为大家详细介绍“Java中的逻辑结构模式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的逻辑结构模式有哪些”文章能帮 ... [详细]
  • C++基础 | 从C到C++快速过渡
    一、开发环境c++使用的编译器是g& ... [详细]
  • FroggerTimeLimit:1000MSMemoryLimit:65536KTotalSubmissions:32257Accepted:10396DescriptionFr ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。OpenSSL系列文章:一、AndroidCMake轻松 ... [详细]
  • ———Java培训、Android培训、iOS培训、.Net培训、期待与您交流!———一、引用计数器每个OC对象都有自己的引用计数器,表示“对象被引用 ... [详细]
  • 接上文http:blog.itpub.net29254281viewspace-1318239领导让开发同学鼓捣一个可配置化的后台.又回到了原来的问题如果要灵活,很多参数要 ... [详细]
  • 学生总结内容回复1147div指令,内存寻址,数组用dup设置内存空间重复的值,根据指令,分析操作数的 ... [详细]
  • 六、流程控制语句
    选择结构if只有条件判断结果为真时才执行相应的操作循环结构for、whileuntil反复执行相同操作时,使用循环结构分支结构case根据变量值的匹配结果执行相 ... [详细]
author-avatar
品格优良2003_645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有