| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> |2 Day01 标准C语言 -> 正文阅读 |
|
[C++知识库]|2 Day01 标准C语言 |
复习: ????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????? ????????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????? ????????unsigned?long?long?????8??????%llu????0~1开头的20位整数 ????????float???????????????????4???????%f ????????double??????????????????8???????%lf ????????long?double?????????????12/16???%LF ????????小数点后6位有效 ????????问:有float?x,如何判断x与零值是否相等 ????????if(x?<?0.000001?&&?x?>?-0.000001) ????5、C变量名取名规则 ????????1、必须由字母、数字、下划线组成 ????????2、必须由字母或下划线开头 ????????3、不能与32个关键词重名 ????????4、见名知意 ????6、变量输入输出 ????????printf??提示信息+占位符+变量名列表 ????????scanf???占位符+变量地址列表 ????????%nd?%-nd?%0nd?%n.mf?%g ????7、运算符 ????????/?%?除数不能为0?报错:浮点数例外(核心已转储) ????????==?变量尽量在右边 ????????++/--?尽量不要在一行内多次使用 ????????&&?||?具有短路特性 ????????注意:运算符也是有优先级 ???? ????8、类型转换 ????????自动类型转换:不同类型的数据之间需要先转换为相同的类型数据才能进行运算 ????????????1、字节少的向字节多的转 ????????????2、有符号的向无符号的转(字节数相同的情况下) ????????????3、整型向浮点型转 ????????????注意:以不丢失数据为基础,适当地牺牲空间 ????????强制类型转换: ????????????(新类型)数据 ????????????注意:有丢失数据的风险,谨慎使用 --------------------------------------- 跳转语句 ????goto????可以在函数内任意跳转 ????它可能会破坏已经设计好的分支、循环语句,因此绝大多数公司禁止使用 ????但是它在驱动编程时特别适合处理异常 ????标签名:?... ????????goto?标签名; ???? ????练习1:要求不适用循环语句来计算N的阶乘 ????????//1 ????????????int?N,i?=?1,sum?=?1; ????????????printf("请输入N的值:"); ????????????scanf("%d",&N); ????????loop: ????????????if(i?<=?N) ????????????{ ????????????????sum?=?sum?*?i; ????????????????i++; ????????????????goto?loop; ????????????} ????????????printf("%d",sum); ????????????return?0; ????????//2 ????????????int?N?=?0,sum?=?1; ????????????printf("请输入N的值:"); ????????????scanf("%d",&N); ????????loop: ????????????num?*=?N; ????????????if(--N?>?1)?goto?loop; ????????????printf("ret=%d\n",ret); ????break ????????1、配合switch使用,关闭执行开关 ????????2、调出当前次循环,只能跳一层 ????continue ????????结束本次循环,直接进入下一次循环 ???? ????return ????????1、返回一个数据给函数的调用者 ????????2、立即结束函数的执行 ???? ????练习2:不适用循环语句计算前N项斐波那契数列 数组: ????什么是数组:变量的组合,是一种批量定义变量的方式 ????定义:类型?数组名[数量]; ????????int?arr[5] ???? ????使用:数组名[下标]; ????下标:从零开始?范围:0~数量-1 ????初始化:类型?数组名[数量]?=?(1,2,3,4?...) ????????1、数组与普通变量一样默认是随机的,为了安全对数组进行初始化 ????????2、这种初始化语法只能在定义数组时使用,并且只能逐个赋值,不能整体赋值 ????????3、初始化数据过多,编译器会产生警告并丢弃 ????????4、初始化数据不足,编译器会自动补0 ????????5、初始化的数据可以省略,只写大括号,相当于给所有成员赋0 ????????6、初始化数据时,长度可以省略,编译器会自动统计数据的个数然后告诉数组 ????????数组的长度?=?sizeof(arr)/sizeof(arr?arr()) ????练习3:定义一个长度为10的数组并初始化,计算出该数组的最大值、最小值、平均值 ????????//??#include?<stdio.h> ????????int?main(int?argc,const?char*?argv[]) ????????{ ????????????int?arr[10]?=?{1,4,7,9,3,4,6,19,3,4}; ????????????int?max?=?arr[0],min?=?arr[0],sum?=?arr[0]; ????????????float?avg?=?0; ????????????for(int?i?=?1;?i<10;?i++) ????????????{??? ????????????????if(arr[i]?>?max) ????????????{ ????????????????max?=?arr[i]; ????????????} ????????????????if(arr[i]?<?min) ????????????{ ????????????????min?=?arr[i]; ????????????} ????????????sum?+=?arr[i]; ????????????avg?=?sum/10; ????????????}??? ????????????printf("max=%d?min=%d?avg=%lf\n",max,min,avg); ????????} ????练习4:定义一个长度为10的数组并初始化,进行升序排列 ????????//??#include?<stdio.h> ????????int?main(int?argc,const?char*?argv[]) ????????{ ????????????int?temp,arr[10]?=?{1,4,2,5,6,7,8,9,12,13}; ????????????for(int?i=0;?i<9;?i++) ????????????{ ????????????????for(int?j?=?i+1;?j<10;?j++) ????????????????{ ????????????????????if(arr[i]?>?arr[j]) ????????????????????{ ????????????????????????int?temp?=?arr[i]; ????????????????????????arr[i]?=?arr[j]; ????????????????????????arr[j]?=?temp; ????????????????????} ????????????????} ????????????} ????????????for(int?i?=?0;?i<10;?i++) ????????????{ ????????????????printf("%d",arr[i]); ????????????} ????????} ????数组越界:为了程序的运行效率是不会检查数组的下标 ????????数组越界的后果: ????????????1、一切正常 ????????????2、段错误 ????????????3、脏数据 ????练习5:定义一个长度为10的数组并初始化,找出数组中第二大的值(不允许排序) ????????//??#include?<stdio.h> ????????int?main(int?argc,const?char*?argv[]) ????????{ ????????????int?arr[10]?=?{3,5,67,3,2,6,7,10,4,2}; ????????????int?max?=?arr[0]?>?arr[1]?arr[0]:arr[1]; ????????????int?max2?=?arr[0]?>?arr[1]?arr[1]:arr[0]; ????????????for(int?i?=?2;?i<10;?i++) ????????????{??? ????????????????if(arr[i]?>?max) ????????????????{ ????????????????????max2?=?max; ????????????????????max?=?arr[i]; ????????????????} ????????????????else?if(arr[i]?>=?max2) ????????????????{??? ????????????????????max2?=?arr[i]; ????????????????} ????????????}??? ????????????printf("%d?%d\n",max,max2); ????????} 作业: 1、打印9*9乘法表 2、编程解决百钱百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 3、计算出100~10000之间的所有素数 4、输入一个日期(yyyy-mm-dd),计算该日期距离公元1年1月1日多了多少天??time(NULL) 5、显示以下图形(printf一次只能输出一个字符) ?????????????********** ????????????********** ???????????********** ??????????********** ?????????********** ????????********** ???????********** ??????********** ?????********** ????********** |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/25 15:26:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |