-
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 13 Sorry, your car is restricted today 对不起,你的车今天限行
#include <stdio.h>
#include <string.h>
enum
{
MONDAY=1,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
int is_restricted(int num, int today)
{
int ret;
switch (num)
{
case 0:
case 5:
ret = (today == MONDAY) ? 1 : 0;
break;
case 1:
case 6:
ret = (today == TUESDAY) ? 1 : 0;
break;
case 2:
case 7:
ret = (today == WEDNESDAY) ? 1 : 0;
break;
case 3:
case 8:
ret = (today == THURSDAY) ? 1 : 0;
break;
case 4:
case 9:
ret = (today == FRIDAY) ? 1 : 0;
break;
default:
ret = 0;
break;
}
return ret;
}
int main(int argc, char *argv[])
{
char car_num_str[8] = "N2LG20";
int tail_num;
int result;
printf("Please input your car number : \n");
scanf("%s", car_num_str);
printf("Your car number is <%s> \n", car_num_str);
tail_num = car_num_str[strlen(car_num_str)-1] - '0';
printf("the tail number is %d\n", tail_num);
printf("Today is %s\n", __DATE__);
result = is_restricted(tail_num, MONDAY);
printf("Total your car is %s \n", result? "restricted" : "permitted");
return 0;
}
copy
知识点
- 枚举 enum
- 分支语句 switch-case
- break 用法
- 格式的缩进和对齐
- switch-case 的应用场合
- 状态机编程
- printf 函数实现
课堂讨论
- 除了示例中的写法,如果不用 switch-case ,解决这个问题还有其他写法吗?
- 如果考虑到每3个月换一次尾号限行制度,这个程序应该怎么改?
课后练习
- 编写一个程序,统计各个数字,空白字符和其他所有字符出现的次数,以及行数。
- 分析一条格式化打印语句中,打印整数%d,字符%c,字符串%s,地址%p 各自出现的次数。