C语言经典程序示例:三数之和与薪酬计算

需积分: 6 2 下载量 60 浏览量 更新于2024-12-17 收藏 61KB TXT 举报
"经典C源程序100例" 这些示例展示了C语言编程的经典应用场景。以下是其中三个程序的详细解析: 1. 这个程序是寻找并打印出1到4之间的所有不同的三元组(i, j, k),使得它们不相等。它通过三层嵌套循环实现,外层循环变量`i`从1到4,中间层循环变量`j`同样从1到4,内层循环变量`k`也是1到4。在满足条件`i != j && i != k && j != k`时,打印出三元组。这展示了基本的循环控制结构和条件判断。 ```c for(i=1;i<5;i++) { // 外层循环 for(j=1;j<5;j++) { // 中间层循环 for(k=1;k<5;k++) { // 内层循环 if(i!=k&&i!=j&&j!=k) { // 判断三元组是否不相等 printf("%d,%d,%d\n",i,j,k); // 打印符合条件的三元组 } } } } ``` 2. 第二个程序计算奖金。根据输入的销售额`i`,按不同的销售区间计算对应的奖金百分比。程序首先定义了每个区间的奖金基础值,然后根据输入的销售额应用相应的百分比。最后,通过一系列条件语句(`if...else if...`)确定了奖金数额。这体现了条件分支和算术运算在实际问题中的应用。 ```c scanf("%ld",&i); // 读取销售额 bonus1=100000*0.1; // 计算10万销售额的奖金 // ... 计算其他区间的奖金 if(i<=100000) // 分别处理不同销售区间的奖金 bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; // ... 其他条件分支 else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); // 打印奖金 ``` 3. 第三个程序涉及计算两个整数的最大公约数(GCD)和最小公倍数(LCM)。它使用了欧几里得算法(Euclidean algorithm)来计算GCD,该算法基于两个整数的除法余数。找到GCD后,利用公式`LCM = (num1 * num2) / GCD`来计算LCM。程序使用了`<math.h>`库中的`gcd`函数和自定义的`lcm`函数。 ```c #include <math.h> int gcd(int a, int b) { if(b == 0) return a; // 当b为0时,a即为GCD else return gcd(b, a % b); // 递归调用gcd,直到b为0 } int lcm(int a, int b) { return (a * b) / gcd(a, b); // 使用GCD计算LCM } int main() { int num1, num2, result; printf("Enter two numbers: "); scanf("%d%d", &num1, &num2); result = gcd(num1, num2); // 计算GCD printf("GCD: %d\n", result); result = lcm(num1, num2); // 计算LCM printf("LCM: %d\n", result); return 0; } ``` 这三个程序展示了C语言的基础知识,包括循环、条件判断、函数调用以及数值计算。通过学习和理解这些示例,读者可以进一步掌握C语言的核心概念和编程技巧。