满满的干货,想学C语言又不知道从何入手的朋友们,关注我吧,每天分享C语言知识或者代码,跟我一起学习起来吧!
一、常量 ? ? 什么是常量:程序运行期间数据不能变化的叫常量 ? ? ? ? 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*100)U ? ?
二、格式化输入输出 ? ? %nd ? ? 显示n个字符宽度,不够则补空格,右对齐 ? ? %-nd ? ?显示n个字符宽度,不够则补空格,左对齐 ? ? %0nd ? ?显示n个字符宽度,不够则补0,右对齐 ? ? %n.mf ? 显示n个字符宽度(小数点算一位),不够则补空格,m表示小数点后的位数(四舍五入) ? ? %g ? ? ?不显示小数点后多余的0
三、运算符 ? ? 自变运算符:++/-- ? 使变量的值自动+1或者-1 ? ? ? ? 前自变:++num --num ? ? 立即有效 ? ? ? ? 后自变:num++ num-- ? ? 下一行语句生效 ? ? ? ? 注意:不要在一行内多少使用自变运算符
? ? 算数运算符:+ - * / % ? ? ? ? 整数/整数 ? 结果没有小数 5/2=2 ? ? ? ? / % 除数不能为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; ? ? ? ? ...
? ? 位运算符:& | ~ >> <<
? ? ? ? sizeo 也是运算符,但是sizeof括号内的表达式不会计算
四、类型转换: ? ? 自动类型转换: ? ? ? ? 只有相同类型的数据才能运算,不同类型的数据必须转换成相同的类型才能进行计算 ? ? ? ? 转换规则:(以不丢失数据为基础,适当地牺牲一些空间) ? ? ? ? ? ? 1、字节少的向字节多的转 ? ? ? ? ? ? 2、有符号的向无符号的转 ? ? ? ? ? ? 3、整型向浮点型转 ? ? 强制类型转换: ? ? ? ? (新类型)数据 ? ? ? ? 有丢失数据的风险,要慎用
五、分支语句 ? ? if(表达式) // 单分支 ? ? { ? ? ? ? 表达式为真时,执行此处代码 ? ? }
? ? ?if(表达式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: ? ? ? ? ? ? ... ? ? ? ? default: ? ? ? ? ? ? ... ? ? ? ? ? ? // 如果所有的case都没有匹配成功,则打开该执行开关,并且放在任何位置都会最后执行 ? ? } ? ? 注意:如果每个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 2 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 有什么区别?
? ?? ? ? 循环嵌套: ? ? ? ? 循环语句中包含循环语句 ? ? ? ? 外层循环执行一次,内层循环执行n次
作业1:计算出所有的水仙花数 作业2:输入一个正整数,判断是否是素数(只能被1和本身整除的数)? 作业3:输入一个正整数,判断是否是回文数? 12321 123321 作业4:输入一个6位数密码,输入正确显示"登录成功",输入错误提示"还剩几次机会",可以进行输入,最多三次,否则显示"账号已锁定",并结束 作业5:输入一个整数,分解显示 ? ? -1234 ? ? - 1 2 3 4
|