C语言编程:113道经典题目与代码解析

需积分: 13 4 下载量 134 浏览量 更新于2024-07-28 1 收藏 344KB DOC 举报
"113道C语言经典题目及代码,适合初学者学习" 这些C语言题目涵盖了基础到进阶的各种概念,是学习和巩固C语言编程技能的好资料。以下是其中两个示例题目及其代码解析: 1. 求最大公约数(GCD)和最小公倍数(LCM) 这个程序首先定义了两个函数,`hcf`用于计算最大公约数,`lcd`用于计算最小公倍数。在主函数`main`中,用户被要求输入两个正整数`u`和`v`,然后调用这两个函数进行计算。`hcf`函数采用欧几里得算法,通过不断将较大的数除以较小的数,直到余数为0,此时的除数即为最大公约数。`lcd`函数则通过乘法计算两数的最小公倍数,即`u * v / hcf(u, v)`。 ```c int hcf(int u, int v) { // 求最大公约数 int t, r; while ((r = u % v) != 0) { u = v; v = r; } return (v); } int lcd(int u, int v, int h) { // 求最小公倍数 return (u * v / h); } ``` 2. 统计字符串中字母、数字、空格和其他字符的个数 这个程序定义了一个函数`count`来统计字符数组中的各类字符数量。主函数`main`接收用户输入的一行字符串,并调用`count`函数进行统计。在`count`函数中,遍历字符串的每个字符,通过条件判断来分别增加对应的计数器。 ```c void count(char str[]) { int i; for (i = 0; str[i] != '\0'; i++) { if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) letter++; else if (str[i] >= '0' && str[i] <= '9') digit++; else if (str[i] == ' ') space++; else others++; } } ``` 这两个题目涉及的知识点包括: - 输入/输出操作:使用`scanf`和`printf`进行用户交互。 - 函数的声明与定义:如`hcf`和`lcd`函数的声明和实现。 - 循环结构:`while`循环用于欧几里得算法,`for`循环用于遍历字符串。 - 条件语句:`if...else`结构用于区分字符类型。 - 字符串处理:`gets`用于读取一行字符,`puts`用于输出字符串。 - 数字和字符的ASCII码比较:利用字符的ASCII码值来判断是否为字母、数字或空格。 - 数学运算:包括除法和取模运算。 通过这些题目,初学者可以深入理解C语言的基本语法、控制结构以及函数的应用,同时也能提高对数据类型和字符处理的理解。对于进一步的学习,建议尝试其他题目,比如递归、指针、数组、结构体等更复杂的问题,以全面掌握C语言的编程技巧。