-
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 9 Convert a number to a string 整型转字符串
#include <stdio.h>
void itoa(int num, char buf[])
{
int i = 0;
int j = 0;
do
{
buf[i++] = num % 10 + '0';
num /= 10;
} while (num);
buf[i] = '\0';
for (j = 0, i--; j < i; j++, i--)
{
char tmp;
tmp = buf[i];
buf[i] = buf[j];
buf[j] = tmp;
}
return;
}
int main(void)
{
int num;
char buf[100];
printf("Please input a number: ");
scanf("%d", &num);
itoa(num, buf);
printf("number string = %s\n", buf);
return 0;
}
copy
知识点
- 数组 array
- 函数式的宏定义
- 进制表示 oct, dec, hex
- 三元表达式 a > b ? a : b
- 字符串逆序 reverse()
- 字符串库函数 itoa
课堂讨论
- do-while 的循环可以用 while 循环替换吗? 为什么?
- 如果要将输入数字,按照16进制,或者2进制转换成字符串,如何修改?
- 为了交换两个字节的内容,示例中引入了一个 tmp 变量,这个是必须的吗?
- 在 itoa 中用到了字符串的逆序操作,请实现一个函数来完成这个操作。
课后练习
- 用户任意输入一个字符串,判断这个字符串是否为“回文”(回文即按正反顺序读都一样)。例如 “abcba” 就是回文。
- 使用字符数组实现基于数字字符串的加减法。例如"123" + "45" = "168" , "456"-"13"="443"。
- 编写一个去字符串多余空格的的程序,将连续的多个空格用一个空格代替。例如输入"abc___ab_a__c",输出"abc ab a c"。