IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2021-7-12 标准C语言基础知识(二) -> 正文阅读

[C++知识库]2021-7-12 标准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
无符号运算,算术运算默认返回无符号数,逻辑运算当然是返回0或1了。

问题:100年有多少秒?
#define SEC (3600*24*365*100u) 

二、格式化输入输出

%nd     显示n个字符宽度,不够则补空格,右对齐
%-nd    显示n个字符宽度,不够则补空格,左对齐
%0nd    显示n个字符宽度,不够则补0,右对齐
%n.mf   显示n个字符宽度(小数点算一位),不够则补空格,m表示小数点后的位数(四舍五入)
%gc     不显示小数点后多余的0    

三、运算符(优先级从高到低)

自变运算符:++/--               使变量的值自动+1或者-1
    前自变:++num --num         立即有效
    后自变:num++ num--         下一行语句有效
    注意:不要在一行内多次使用自变运算符

算数运算符:+ - * / %
    整数/整数       结果没有小数点
    / %             除数不能为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 也是运算符,但是sizeof括号内的表达式不会计算  

四、类型转换

自动类型转换:
    只有相同类型的数据才能运算,不同的类型的数据必须转换成相同的类型才能进行计算
    转换规则:(以不丢失数据为基础,适当地牺牲一些空间)
        1、字节少的向字节多的转(优先从高到低)
        2、有符号的向无符号的转
        3、整型向浮点型转

强制类型转换:
    (新类型)数据
    有丢失数据的风险,要慎重使用

五、分支转换

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

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

if(表达式)
{
    表达式为真时,执行此处代码
}
else if(表达式2)
{
    表达式2为真时,执行此处代码
}
else
{
    表达式都为假时,最后执行此处代码
}

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

练习1:输入三个整数,从大到小显示?
练习2:输入一个年份,判断是闰年还是平年?
    四闰百不闰,四百闰
练习3:输入一个年份和月份,判断该月有多少天?
练习4: 输入一个三位整数,判断是否为水仙花数?
练习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 10 冬天
    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次

八、跳转语句

goto        可以在函数内任意跳转
它可能会破坏已近设置好的分支、循环语句,因此绝大多数公司禁止使用

但是它在驱动编程是特别适合用于处理异常
标签名:
    ...
    goto 标签名;

练习7:不使用循环语句计算N的阶乘

break
    1、配合switch使用,关闭执行开关
    2、跳出循环,只能跳一层

continue 
    结束本次循环,直接进入下一次循环

return
    1、返回一个数据给函数的调用者
    2、立即结束函数的执行

练习8:不使用循环语句,计算前N项的斐波那契数列

九、数组

    什么是数组:变量的组合,是一种批量定义变量的方式
    定义:类型 数组名[数量];
    int arr[5];
    
    使用:数组名[下标];
        下标:从零开始  范围:0~数量-1
    
    遍历:与for循环配合,使用循环变量i当做数组的下标
    
    初始化:类型 数组名[数量]={1,2,3,4.....};
        1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化
        2、这种初始化语法只能在定义数组是使用,并且只能逐个复制,不能整体赋值
        3、初始化的数据过多,编译器会产生警告并丢弃
        4、初始化数据不足时,编译器会自动补0
        5、初始化的数据可以省略,只写大括号,相当于给所有成员赋0
        6、初始化数组是,长度可以省略,编译器会自动统计数据的个数然后告诉数组

        数组的长度 = sizeof(arr)/sizeof(arr[0])
练习3:定义一个长度为10的数组并初始化,计算出该数组的最大值、最小值、平均值

练习4:定义一个长度为10的数组并初始化,进行升序排序 

数组越界: 为了程序的运行效率是不会检查数组的下标
    数组越界的后果:
    1、一切正常
    2、段错误
    3、脏数据

练习9:定义一个长度为10的数组并初始化,找出数组中的第二大的值。不允许排序
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 00:18:01  更:2021-07-14 00:18:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 9:09:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码