c语言

小结:C语言、C++ 学习路线

余生颓废 提交于 2020-03-02 00:19:59
首先,对于编程语言的学习,不能急于求成,也不能三天打鱼两天晒网。语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己搞泄气。 1、对语言本身的学习: C语言: 除了最最基础的语法:变量、条件、循环、字符串、数组、函数、结构体等之外 C语言最最最最最重要的那就是:指针、内存管理,以后企业里开发就靠它俩吃饭,这也是检验C语言掌握情况的两大标准 参考书籍: 《C Primer Plus》、《C和指针》、《C专家编程》 C++: C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的 复用 、 扩展 和 工程化 ,这是大型项目的必备要素 除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等 参考书籍: 《C++ Primer》、《Effective C++》、《C++ 标准程序库》、 《STL源码剖析》《深度探索C++对象模型》 学习完语言,为啥我们会发现自己啥东西也做不出来?实际上语言的学习只是编程的一小部分,要想熟练的使用语言完成生产工作,还应对编程四大基础有相当程度的熟悉,加之应用实践编程,我想这便是一条正确的学习之路。 2、对编程四大基础的学习: 四大基础分别为: 数据结构与算法、计算机网络、操作系统

C语言 :文件操作 -2

徘徊边缘 提交于 2020-03-01 23:22:51
C语言获取文件大小: #define _CRT_SECURE_NO_WARNINGS //去掉安全检查 #include<stdlib.h> #include<stdio.h> #include<string.h> char path1[100] = "C:\\Users\\whx\\Desktop\\test.txt"; //文本文件 char path2[100]= "C:\\Users\\whx\\Desktop\\SpaceSniffer.exe"; //二进制文件 char* ch1 = ".txt"; char* ch2 = ".exe"; int get_file_size(char* path); int get_file_type(char* path); void main() { int num1= get_file_size(path1); int num2 = get_file_size(path2); printf(".txt= %d ; .exe= %d \n",num1, num2); system("pause"); } //获取文件大小 int get_file_size(char* path) { int count = -1; FILE* fp=NULL; if (path == NULL) { return count; } int

01.C语言程序的基本结构1

柔情痞子 提交于 2020-03-01 23:19:58
文章目录 一、C语言基础知识的学习方法 二、C语言程序开发的流程 三、安装C语言的编译器 四、C程序的基本结构 1、程序的注释 2、预处理指令 3、主函数的入口 4、主函数体 五、编译并执行 C 程序 六、知识总结 七、课后作业 八、版权声明 一、C语言基础知识的学习方法 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。 2)学习不要贪快,欲速则不达的道理大家应该明白,学习的重点是培养写程序的感觉。 3)不要记笔记,不要记关键字,不要记函数的参数,忘了就忘了,忘了是因为没有经过实战,所以,到了项目实战课程的时候,忘了内容很自然的会全部想起来。 4)不要用手机看视频,看着看着就想睡觉,学习的过程是边看边写,没有看出来的程序员。赵括,知道不?就是那个空读兵书不成器的家伙,只看书看视频不写程序,和赵括没什么不同。 5)程序员的指法很重要,翘着二郎腿,嘴里叨着烟,挥舞一指禅,一副吊儿郎当的样子,是成不了程序员的。 6)学习的过程中遇到的问题,如果三十分钟解决不了,不要纠缠,在群里向大家请教。但是,反对遇到问题不经思考就提问的方式。 7)开始学习C语言之前,必须先熟悉Linux环境,掌握Linux常用命令和vi的基本用法。 8)高手都是从菜鸟开始的,只要您按视频教程一步一个脚印的学习

二叉树的性质以及二叉树的遍历(非递归)(c语言)(一)

血红的双手。 提交于 2020-03-01 23:11:12
二叉树的性质: 性质 1 在二叉树的第i层上至多有2^(i-1)个结点(i>=1)。 性质 2 深度为k的二叉树至多有2^k-1个结点,(k>=1)。 性质 3 任何一颗二叉树,终端结点为n0,度为2的结点为n2,那么n0=n2+1。 性质 4 具有n个结点的完全二叉树的深度为└㏒2 n┘+1。 性质 5 完全二叉树按层次从上到下从左到右依次编号。编号为n的节点的左孩子为2n。 二叉树的储存结构 : lchild data rchild /*---------二叉树的二叉链表储存表示----------*/ typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode ,*BiTree; 非递归遍历需要栈:栈的实现过程: 栈的线性储存结构与链式储存结构的实现(C语言) 。 栈部分的内容: typedef BiTree pElemType; typedef struct Snode //栈的储存结构 { pElemType data; //数据域 struct Snode *next; //指针域 }Snode,*LinkStack; void Init_StackL(LinkStack *S) //初始化院栈 { *S=NULL; } Status Push_L(LinkStack

【C语言】取值符&和间接值*辨析

独自空忆成欢 提交于 2020-03-01 23:08:00
计算机程序在存储数据时必须跟踪三种基本属性: 数据是什么 类型 信息在存储器中的 地址 存储的 值 是多少 众所周知,对于常规变量a, &a 是存储地址,a是值。对于指针变量p,p是存储地址, *p 则是值。下面通过一个例子来辨析 取值符& 和 间接值* (indirect value) #include <iostream> using namespace std; ///* & 辨析 int main() { int a; a=10; cout<<&a<<endl; int & b=a;//这里的b是一个reference,初始化时必须赋值。 cout<<&b<<":"<<b<<endl; int* c=&a;//同类型之间才能赋值,&a是(int*)类型 cout<<c<<":"<<*c<<endl; return 0; } /*output 0x28ff04 0x28ff04:10 0x28ff04:10 */ /*a和b区别: (gdb) p a $2 = 10 (gdb) p &b $3 = (int *) 0x400970 (gdb) p b $4 = (int &) @0x7fffffffe55c: 10 */ 可以看出,b不是真正意义上的int类型,但是可以当作int用。&b就是(int*) 所以我们要想在参数传递中修改实参的值,就要通过[1]中 Exchg2

课程设计 C语言 学生成绩管理系统

心已入冬 提交于 2020-03-01 21:10:44
学生成绩管理系统 tips : 应该写的注释都写了,适合初学者参考。 某班最多不超过30人(具体人数由键盘输入),考试科目最多不超过6门(具体门数由键盘输入)。 请编写一个程序实现如下菜单驱动的学生成绩管理系统;要求: (1)录入每个学生 的学号、姓名和各科考试成绩。 (2)计算每门课程的总分和平均分。 (3)计算每个学生的总分和平均分。 (4)按每个学生的总分由高到低排出名次表。 (5)按学号由小到大排出成绩表。 (6)按姓名的字典顺序排出成绩表。 (7)按学号查询学生排名及各科考试成绩。 (8)按姓名查询学生排名及各科考试成绩。 (9)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数及所占的百分比。 (10)输出每个学生的学号、姓名、各科考试成绩、总分、平均分,以及每门课程的总分和平均分。 code(可直接运行): 1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 #include<stdlib.h> 5 6 struct Course { 7 int C_score; 8 char C_name[10]; 9 }; 10 struct Stu { 11 int id; 12

C语言刷题组(基础),八

自古美人都是妖i 提交于 2020-03-01 20:58:43
是不是太胖了? 据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9 所得到的公斤数。 已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体 重应该是多少?(顺便也悄咪咪的给自己算一下吧……) # include <stdio.h> int main ( int argc , char * * argv ) { int H ; double standard ; scanf ( "%d" , & H ) ; standard = ( H - 100 ) * 0.9 * 2 ; printf ( "%.1f\n" , standard ) ; return 0 ; } 来源: CSDN 作者: nice.12138 链接: https://blog.csdn.net/qq_45405659/article/details/104598021

C语言刷题组(基础),三

不问归期 提交于 2020-03-01 20:05:18
输出带框文字 本题要求编写程序,输出指定的带框文字。 按照下列格式输出带框文字。 Welcome ```c # include <stdio.h> int main ( int argc , char * * argv ) { printf ( "************\n" ) ; printf ( " Welcome\n" ) ; printf ( "************\n" ) ; return 0 ; } 来源: CSDN 作者: nice.12138 链接: https://blog.csdn.net/qq_45405659/article/details/104597255

C语言常用库函数

蹲街弑〆低调 提交于 2020-03-01 17:07:42
参考:https://www.runoob.com/ size_t strlen ( const char * str ) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 char * strcpy ( char * dest , const char * src ) 把 src 所指向的字符串复制到 dest。 需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。 char * strncpy ( char * dest , const char * src , size_t n ) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。 注意事项: 1. 返回值是字符串类型时,主要末尾添加'\0' 来源: CSDN 作者: very_happy 链接: https://blog.csdn.net/verhappy/article/details/104592621

C语言进阶——函数

瘦欲@ 提交于 2020-03-01 16:54:49
Sunshine__sunny的快乐码奴生活 函数的声明,实现与调用 模块化 封装代码块 函数就是代码块 { } == 独立空间 功能模块:一个功能对应一个函数 函数名 ( type param1 , type param2 ) { 代码块 return ; } 驼峰命名法 add download parse scaleImageToSize int add ( int a , int b ) { } 定义函数的两种方式 1.声明和实现一起 int add ( int a , int b ) { int sum = a + b ; return sum ; } 先声明 后实现(通常使用这种方式) 通过调用函数的函数名 int minus ( int a , int b ) ; int minus ( int a , int b ) { return a - b ; } main.cpp # include <stdio.h> # include "Calulator.h" //1.程序的入口函数 //main.cpp 是为了让阅读者知道这里写的是入口函数 // 2.将不同的功能模块用 .h .cpp 来封装 //.h 头文件 函数声明 不可实现 // .cpp .c 实现文件 函数的具体实现{} //3.导入头文件进行使用 int main ( ) { printf ( "1 +