### C语言初学者常用函数详解 #### 一、计算序列 e 的值 **函数功能**:此函数用于计算序列 `e = 1 + 1/2 + 1/(1+2) + ... + 1/(1+2+...+n)` 的值。 **代码解析**: 1. **主函数** (`main`): - 定义了一个 `f` 函数,该函数用于计算分母的累加值。 - 用户输入一个整数 `a`。 - 使用 `for` 循环调用 `f` 函数,并将结果累加到变量 `all` 中。 - 输出最终的结果 `all`。 2. **辅助函数** (`f`): - 接受一个整数 `n` 作为参数。 - 计算从 1 到 `n` 的累加和,并返回其倒数。 **示例代码**: ```c #include<stdio.h> double f(int n) { int sum = 0, i; for (i = 1; i <= n; i++) { sum += i; } return 1.0 / sum; } void main() { double all = 0; int a, j; scanf("%d", &a); for (j = 1; j <= a; j++) { all += f(j); } printf("%lf\n", all); } ``` **注意事项**: - 输入的整数 `a` 应为正数。 - 确保在实际应用中处理边界条件和异常情况。 #### 二、字符循环输出 **功能描述**:接收用户输入的一个大写字母,在 A 到 Z 范围内循环输出字符。 **方法一**: 1. **主函数** (`main`): - 用户输入一个大写字母 `ch1`。 - 调用 `cop` 函数,传递输入的大写字母。 2. **循环输出函数** (`cop`): - 使用 `for` 循环从 'A' 开始输出到输入的大写字母。 - 再次使用 `for` 循环从输入的大写字母减 1 开始反向输出至 'A'。 **示例代码**: ```c #include<stdio.h> char cop(char ch) { int i, j; for (i = 'A'; i <= ch; i++) { printf("%c", i); } for (j = ch - 1; j >= 'A'; j--) { printf("%c", j); } } void main() { char ch1; printf("input a char:\n"); scanf("%c", &ch1); cop(ch1); } ``` **方法二**: 1. **主函数** (`main`): - 用户输入一个大写字母 `c1`。 - 创建一个长度为 54 的字符数组 `c`,并初始化为空。 - 调用 `copy` 函数,传递字符数组 `c` 和输入的大写字母。 2. **循环输出函数** (`copy`): - 使用 `for` 循环正向填充字符数组。 - 使用 `for` 循环反向填充字符数组。 **示例代码**: ```c #include<stdio.h> void copy(char s[], int n, char D) { int i, j; for (i = 65, j = 0; i <= D && j < (D - 64); i++, j++) { s[j] = i; } for (i = D - 1, j = D - 64; i >= 65 && j < (2 * D - 129); i--, j++) { s[j] = i; } } void main() { char c1; char c[54] = {''}; scanf("%c", &c1); copy(c, 54, c1); printf("%s\n", c); } ``` #### 三、不重复的三位数组合 **功能描述**:给定四个数字(1、2、3、4),输出所有不重复的三位数组合。 **代码解析**: 1. **主函数** (`main`): - 用户输入四个不同的数字。 - 使用三层嵌套 `for` 循环来组合三个数字。 - 调用 `comp` 函数检查组合是否不重复。 2. **比较函数** (`comp`): - 接收三个整数 `m`、`n` 和 `p`。 - 如果三个数字均不相同,则返回 `1` 表示不重复;否则返回 `0` 表示重复。 **示例代码**: ```c #include<stdio.h> #define N 4 int comp(int m, int n, int p) { if ((m != n) && (m != p) && (n != p)) { return 1; } else { return 0; } } void main() { int i, j, k, a[N]; printf("input %d numbers:\n", N); for (i = 0; i < N; i++) { scanf("%d", &a[i]); } printf("\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { for (k = 0; k < N; k++) { if (comp(a[i], a[j], a[k]) == 1) { printf("%d%d%d", a[i], a[j], a[k]); } } } } } ``` #### 四、购物折扣计算 **功能描述**:根据用户的购物金额计算相应的折扣。 **代码解析**: 1. **主函数** (`main`): - 用户输入购物金额 `m`。 - 根据金额大小设置不同的折扣率。 - 输出折扣后的金额。 **示例代码**: ```c #include<stdio.h> void main() { int m; double n; scanf("%d", &m); if (m >= 10000) { n = m * 0.8; } else if (m >= 8000 && m <= 9999) { n = m * 0.85; } else if (m >= 5000 && m <= 7999) { n = m * 0.9; } else if (m >= 1000 && m <= 4999) { n = m * 0.95; } else { n = m; } printf("%lf\n", n); } ``` #### 五、成绩等级评定 **功能描述**:根据用户输入的成绩,输出成绩等级和分数段。 **代码解析**: 1. **主函数** (`main`): - 用户输入成绩 `score`。 - 使用 `if` 语句块判断成绩所在的等级。 - 使用 `switch` 语句输出成绩等级和分数段。 **示例代码**: ```c #include<stdio.h> void main() { char grade; float score; scanf("%f", &score); if (score >= 90) { grade = 'A'; } else if (score >= 80 && score <= 89) { grade = 'B'; } else if (score >= 70 && score <= 79) { grade = 'C'; } else if (score >= 60 && score <= 69) { grade = 'D'; } else { grade = 'E'; } switch (grade) { case 'A': printf("'A' >= 90\n"); break; case 'B': printf("'B' [80, 89]\n"); break; case 'C': printf("'C' [70, 79]\n"); break; case 'D': printf("'D' [60, 69]\n"); break; case 'E': printf("'E' < 60\n"); break; } } ``` #### 六、两数平方和或和的判断 **功能描述**:根据输入的两个数,如果它们的平方和大于 100,则输出平方和;否则输出两数之和。 **代码解析**: 1. **主函数** (`main`): - 用户输入两个整数 `a` 和 `b`。 - 计算 `a` 和 `b` 的平方和 `c` 和 `a` 加 `b` 的和 `d`。 - 使用 `if` 语句判断平方和是否大于 100,然后输出相应的结果。 **示例代码**: ```c #include<stdio.h> void main() { int a, b, c, d; scanf("%d%d", &a, &b); c = a * a + b * b; d = a + b; if (c > 100) { printf("%d\n", c); } else { printf("%d\n", d); } } ``` ### 总结 以上介绍的几个 C 语言程序都是针对初学者设计的常见问题解决方案。这些程序涵盖了从简单的数学运算到更复杂的逻辑控制结构。通过学习和实践这些代码片段,可以帮助初学者更好地理解 C 语言的基本语法和编程思想。希望这些知识点能够帮助你更好地掌握 C 语言编程的基础。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于LLVM框架的代码生成与优化系统.zip
- (源码)基于Arduino的花盆自动化系统.zip
- (源码)基于ZigBee和STM32的智能家居环境监测监控系统.zip
- (源码)基于TensorFlow的多GPU CIFAR10并行训练系统.zip
- (源码)基于C++和Qt框架的游戏工作室服务器管理系统.zip
- (源码)基于Spring Boot的赛事管理系统.zip
- (源码)基于C#和ASP.NET Core的智能家居管理系统.zip
- (源码)基于rosserial的STM32嵌入式ROS通信系统库(Yoneken版改进版).zip
- 9.4 使用生成的识别器模型faceModel.xml预测新图像,并输出匹配结果标签和置信度
- (源码)基于Spring Boot和Shiro的电商管理系统.zip