-
Lesson 1 - 最简单的C程序
-
Lesson 2 - 打印输出
-
Lesson 3 - 循环打印
-
Lesson 4 - 判断奇偶
-
Lesson 5 - 从1加到100求和
-
Lesson 6 - 乘法表
-
Lesson 7 - 求100以内的最大素数
-
Lesson 8 - 1到100有多少个9
-
Lesson 9 - 整型转字符串
-
Lesson 10 - 约瑟夫环
-
Lesson 11 - 求两个坐标点之间的距离
-
Lesson 12 - 判断机器存储是否小尾端
-
Lesson 13 - 对不起,你的车今天限行
-
Lesson 14 - 判断地图上某点是否有出路
-
Lesson 15 - 统计一个数二进制表示中1的个数
-
Lesson 16 - 字符串拷贝
-
Lesson 17 - 统计单词个数
-
Lesson 18 - 实现 printf
-
Lesson 19 - 命令解释器
-
Lesson 20 - 预处理器实现
-
Lesson 21 - 词法分析器实现
-
Lesson 22 - 猜数游戏
-
Lesson 23 - 五子棋
-
Lesson 24 - 超链接分析器
-
Lesson 25 - cp命令实现
-
Lesson 26 - ELF文件头分析器实现
-
Lesson 27 - 简单流处理器实现和正则表达式
-
Lesson 28 - 数学计算器实现
-
Lesson 29 - 数学计算器实现more命令实现
-
Lesson 30 - sort命令实现
-
Lesson 31 - ls -l命令实现
-
Lesson 32 - Bash项目
-
Lesson 33 - 动态数组实现
-
Lesson 34 - 约瑟夫环问题
-
Lesson 35 - 表达式求值问题
-
Lesson 36 - 广度优先解决迷宫问题
-
Lesson 37 - 词频统计器
-
Lesson 38 - 堆排序问题
-
Lesson 39 - 构造符号表
-
Lesson 40 - MyDictionary项目
-
Lesson 41 - BSearch 实现
-
Lesson 42 - QSort 实现
-
Lesson 43 - 深度优先解决迷宫问题
-
Lesson 44 - KMP 算法实现
-
Lesson 45 - 最长公共子序列(LCS)问题
-
Lesson 46 - Dijkstra 算法
-
Lesson 47 - Huffman Coding 算法
-
Lesson 48 - 地图导航项目
Lesson 2 Lets say hello to world 打印输出
代码
#include <stdio.h>
int main(void)
{
printf("hello, world!\n");
return 0;
}
copy
知识点
- 预处理符 #
- 头文件 .h
- 字符串常量 const string
- 转义字符 \n
扩展练习
#include <stdio.h>
extern int __executable_start;
extern int _start;
extern char etext[];
extern char edata[];
int global = 100;
int main(void)
{
printf("hello, everyone!\n");
printf("__executable_start= %p\n", &__executable_start);
printf("_start = %p\n", &_start);
printf("main = %p\n", main);
printf("text segment end at %p\n\n", etext);
printf("global at %p\n", &global);
printf("data segment end at %p\n", edata);
return 0;
}
copy
输出结果
input: 無
output:
hello, everyone!
__executable_start= 0x8048000
_start = 0x8048450
main = 0x8048530
text segment end at 0x80486b8
global at 0x804a01c
data segment end at 0x804a020
copy
知识点
- 取地址符 &
- 格式化输出 %d %x %p %c %s %%
- 可变长度参数 ...
- 外部变量 extern
- 强制类型转换 (int)
课堂讨论
- 包含头文件 stdio.h 就是包含我们所说的库函数吗?
- %x 和 %p 在打印变量地址时,有何区别?
- 如果printf的参数,多于或者少于 % 的个数,会怎么样?
- 如果不包含 stdio.h 头文件,则会出错吗? 如何解决?
- 全局变量和局部变量没有初始化值,则打印的结果会怎样?
课后练习
- 修改代码,打印连续的3个全局变量和3个局部变量的地址,看看有何规律?
- 修改代码,通过强制类型转换,打印一下 &global + 1 的值是多少?
- 修改代码,看看如果把 global 定义为 char, short, float 类型会有什么不同?