Basic C 1. 怎么运行c代码? (1)在win7运行c代码? 1)使用 ANSI 编码格式写代码 否则会中文乱码 2) under CMD: >gcc --version gcc (x86_64-posix-seh, Built by strawberryperl.com project) 7.1.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > gcc 01.c -o dustbin/01.exe > cd dustbin > 01.exe (2) 怎么在ubuntu上运行C代码? 2. 知识结构 day01/ 数据类型、运算符和表达式 库函数printf()和scanf()的使用 01.c 基础 printf() 打印 hello world 02.c 打印浮点数字 03.c 类型修饰符long和 unsigned的使用 04.c 表达式中数据类型转换: 自动转换, 05.c 表达式中数据类型转换: ,强制转换 (int) x day02/ 控制结构-条件 if, switch 01.c if else else总是与同一语法层次中离它最近的尚未配对的if配对。 02.c switch 语句 03.c while() : 统计从键盘输入一行字符的个数。 getchar() 读取键盘输入的字符 04.c do-while语句的表达式后面则必须加分号: sum(1,100) 05.c for() : sum(1, 100) 06.c continue, break 07.c 循环的嵌套: 打印 星号 08.c 循环的嵌套: 打印 九九乘法表 day03/ 函数 01.c 函数声明、后面实现,函数嵌套调用 02.c 尝试调用其他文件的函数,如 01.c 报错,不能定义两个 main() day04/ 数组 01.c 冒泡法排序 02.c 二维数组的初始化、打印 day05/ 字符与字符串 01.c 输入一个字符,然后返回字符和其 ascii 码 02.c getchar()的用法: 输入一个字符串,不超过某个长度。 03.c 字符输出函数putchar() 04.c 字符串的初始化: C用字符数组来存放一个字符串 05.c scanf() 输入,遇到空格会中断 06.c scanf() 多设置几个变量接收输入 07.c 输入输出字符串的格式符 %s 08.c puts()与printf()的区别,printf()常用。 09.c 函数gets()与scanf()的区别,gets() 常用。 10.c strcpy(distStr1, sourceStr2); 把后者复制到前者 11.c 字符串比较函数strcmp 12.c 字符串长度函数strlen 13.c 字符串连接函数 strcat(字符数组名1,字符数组名2); 合并到arr1 //二维字符串数组 14.c 二维字符串数组的赋值 15.c 字符串排序: 对几个水果,按照ascii码排序 day06/ 变量类别与编译预处理 01.c 全局变量(extern),局部变量 02.c 存储类型 (动态变量,静态变量) 03.c 寄存器变量(动态变量) // 宏定义 04.c 不带参数的宏定义: define M x*x+3*x 05.c 替换范围是,从宏的定义到文档结束,或遇到 #undef 语句 06.c 带参数的宏: #define SQ(y) ((y)*(y)) 形参要加小括号 // 文件包含 07.c 文件包含 #include "xx.c" 08.c 条件编译 #if #else #endif day07/ 指针基本用法 01.c 指针,指针的引用 02.c 指针作为函数参数,传地址,没解引用,不影响main函数 03.c 指针作为函数参数,传地址,解引用 04.c 指向一维数组的指针:分别使用下标、指针输出数组 05.c 数组作函数参数:数组a中的n个整数按相反顺序存放 06.c 指向数组元素的指针变量作函数参数:求五个学生的C语言平均成绩。 07.c 指针与字符串:实现字符串拷贝功能 day08/ 指针高级用法 01.c 返回指针值的函数: 返回最大值 02.c 指向函数的指针: 使用指针调用函数 03.c 指针数组:每个字符串长度?首字母内存编号? //todo 04.c 指针数组作为参数:将多个字符串按字母顺序输出 05.c 指向二维数组元素的指针变量: 已知二维数组multi[2][3],输出全部元素 06.c 指向二维数组中一维数组的指针变量 07.c 指向指针的指针:简单示例 08.c 例2: 用二级指针处理字符串 09.c 命令行参数 day09/ 结构体、共用体和枚举类型 01.c 结构体:计算学生的平均成绩和不及格的人数。 02.c 结构体的直接引用、指针引用 03.c 共用体:将一个整数按字节输出 04.c 枚举变量的赋值 05.c typedef day10/ 数据结构 01.c 建立静态链表,并输出:元素都是预先定义好的。 02.c 动态链表 03.c 动态链表:使用 typedef 使链表引用更简洁 04.c 动态链表:插入和删除元素 day11/ 文件 IO 01.c 文件的打开、关闭 02.c 按字符读写的函数fgetc()、fputc() 从键盘输入字符,逐个存到磁盘文件中,直到输入‘#“为止 03.c 按字符串读写的函数fgets()、fputs() 04.c 按格式要求读写的函数fprintf()、fscanf() 05.c 按数据块读写的函数fread()、fwrite() 06.c 对一个磁盘文件进行显示和复制两次操作 必应搜: while( !feof(fp) ) getc(fp) 07.c fseek:磁盘文件上有3个学生数据,要求读入第1,3学生数据并显示 day12/ 内存管理与分区(static变量与随机数) C语言中,内存主要分为5个区,分别为栈区、堆区、全局/静态存储区、常量存储区、代码区 其中代码区存放源程序的二进制代码,其余四个区都存储进程运行过程中需要的存储的变量。 栈区: 向低地址增长 堆区: 向高地址增长 01.c 内存分为3个分区 静态区(static):全局变量存储,在程序的整个生命周期都存在 栈区(stack):局部变量存储(自动,连续的内存),主要用于函数调用 堆区(heap):动态存储(非常大的内存池,非连续分配),内存的动态申请和归还 02.c stack 栈区(向下增长): 编译器自动分配释放。存放: 局部数组、局部变量、形参、返回值 02_b.c 参数入栈的顺序:从右向左 03.c heap 堆区(向上增长): 程序员分配内存和释放。调用函数: malloc() 和 free(); * 内存动态分配的相关函数:例如 malloc(size)、calloc(n,size)、free(p)、realloc(p,size) 04.c static 静态区与常量区。静态区主要保存全局变量和静态变量。 常量区: "Hello" 05.c 堆栈一起使用: malloc 申请堆空间,返回地址给指针变量,指针变量本身保存在栈上。 char *p1=(cahr*)malloc(sizeof(char)*10); https://zhuanlan.zhihu.com/p/376310911 // 随机数 b01_0.c 随机数 v0,没有随机起来,因为种子固定了。 b01_1.c 随机数 v0,随机起来,通过设置随机数种子 b02.c 探索时间函数 time.h 获取 年月日 时分秒 星期; 尝试获取亚时间戳 b03.c 使用系统随机数,并设置时钟为种子 b04.c 投色子模型:可设置 面数sides,个数num 更好的产生概率 [0, 1] 的方法: 1.0*rand()/RAND_MAX; day13/ 位操作 01.c //todo dayN/ windows 编程 -- 跳过 第15章 Windows程序设计初步 第十六章 GDI的图形程序设计 P119/180 第十七章 鼠标、键盘消息 P132/180 第十八章 Windows 菜单、对话框 P139/180 第十九章 Windows 通用控件 P153/180 附录A Visual C++ 6.0开发环境 P167/180 附录B MSDN联机帮助 P169/180 附录C C语言中的关键字 P173/180 附录D C语言运算符优先级表 P174/180 附录E C语言常用库函数参考 P175/180 math.h, string.h, stdio.h, # 中兴C语言手册基本看完,还有一个实验手册 # bigBags/ 复习之前学习的部分 ReadMe.txt 详情看这里 bag1/ bag2/ bag3/ bag4/ bag5/ cpp/ C++ 的代码 d01/ReadMe.txt d02/ReadMe.txt # # # # # # # $ git remote -v origin https://github.com/DawnEve/learn_C.git (fetch) origin https://github.com/DawnEve/learn_C.git (push) $ git remote rm origin $ git remote add origin git@github.com:DawnEve/learn_C.git $ git remote -v origin git@github.com:DawnEve/learn_C.git (fetch) origin git@github.com:DawnEve/learn_C.git (push)