小白记录日常学习
规则:
1. 先不看书:每道题先自己写,实在想不出来再看之前的练习代码
2. 手打编译:每题新建一个 `.c` 文件,手打代码,`gcc` 编译,跑通为止
3. 每题计时:写下你花了多久
4. 做完10道再对答案:答案在 `练习题参考答案.md`
10道练习题
第1题:求位数
输入一个正整数,输出它是几位数。
```
输入:12345
输出:5位数
```
> 考察:while循环、整数除法

第2题:最大值和次大值
输入6个整数,输出其中的最大值和次大值。
```
输入:3 8 1 9 4 7
输出:最大值=9,次大值=8
```
> 考察:数组、if判断

第3题:斐波那契数列
输入一个正整数 n,输出斐波那契数列的前 n 项。
```
输入:10
输出:1 1 2 3 5 8 13 21 34 55
```
> 考察:for循环、变量交换

第4题:写一个 max 函数
写一个函数 `int max(int arr[], int n)`,返回数组中的最大值。并在 main 中测试。
```
输入:1 3 7 2 5
输出:最大值=7
```
> 考察:函数、数组传参

第5题:判断回文
输入一个字符串,判断它是否为回文(正读反读一样,忽略大小写)。
```
输入:Level
输出:是回文
输入:Hello
输出:不是回文
```
> 考察:字符串、双指针、ctype.h

第6题:数字金字塔
输入一个正整数 n,输出 n 层的数字金字塔。
```
输入:5
输出:
1
121
12321
1234321
123454321
```
> 考察:多重循环、格式控制

第7题:冒泡排序
写一个函数 `void bubble_sort(int arr[], int n)` 实现冒泡排序。在 main 中测试。
```
输入:5 3 8 1 9
输出:1 3 5 8 9
```
> 考察:排序算法、函数


第8题:统计字符出现次数
写一个函数 `int count_char(const char *str, char ch)`,返回字符 ch 在字符串 str 中出现的次数。
```
输入:hello world
输入要查找的字符:l
输出:字符 'l' 出现了 3 次
```
> 考察:指针、字符串遍历

第9题:二进制中1的个数
输入一个非负整数,输出其二进制表示中 1 的个数。
```
输入:9(二进制1001)
输出:2个1
输入:15(二进制1111)
输出:4个1
```
> 提示:`n & 1` 取最低位,`n >>= 1` 右移一位
> 考察:位运算

第10题:简易菜单程序
写一个循环菜单,支持:
- 输入 1:两个数相加
- 输入 2:两个数相减
- 输入 3:退出程序
每次计算完后回到菜单,直到输入 3 才退出。
```
===== 菜单 =====
1. 加法
2. 减法
3. 退出
请选择:1
请输入两个数:5 3
5 + 3 = 8
===== 菜单 =====
1. 加法
2. 减法
3. 退出
请选择:3
再见!
```
> 考察:do-while、switch、综合


目标:7道以上独立完成。
> 12天C语言计划全部完成!


被折叠的 条评论
为什么被折叠?



