C语言编程:组合与计算问题解决示例

需积分: 3 4 下载量 99 浏览量 更新于2024-12-18 收藏 5KB TXT 举报
"C程序开发经典实例" 在C语言编程中,经常需要处理各种问题,如数组、循环、条件判断等。以下两个示例分别展示了这些概念的应用。 第一个实例是关于排列组合的问题,题目要求计算并打印出用1、2、3、4这四个数字组成的互不相同且无重复数字的所有三位数。这个问题可以通过三层嵌套循环解决。外层循环控制百位,中间层循环控制十位,内层循环控制个位。在每次循环中,需要添加条件判断以确保当前数字不等于之前已经使用过的数字,从而避免重复。具体代码如下: ```c #include <stdio.h> int main() { int i, j, k; printf("\n"); 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); } } } } return 0; } ``` 第二个实例涉及到奖金计算,假设有一系列奖金发放规则,例如根据输入的销售额(`i`)计算对应的奖金。不同销售区间对应不同的奖金比例。这个问题可以使用一系列的`if...else`语句来实现。每个条件分支计算出当前销售额段的奖金,然后累加到总奖金`bonus`上。具体代码如下: ```c #include <stdio.h> int main() { long int i; int bonus1, bonus2, bonus4, bonus6, bonus10, bonus; scanf("%ld", &i); bonus1 = 100000 * 0.1; // 销售额10万的奖金 bonus2 = bonus1 + 100000 * 0.75; // 销售额20万的奖金 bonus4 = bonus2 + 200000 * 0.5; // 销售额40万的奖金 bonus6 = bonus4 + 200000 * 0.3; // 销售额60万的奖金 bonus10 = bonus6 + 400000 * 0.15; // 销售额100万的奖金 if (i <= 100000) bonus = i * 0.1; else if (i <= 200000) bonus = bonus1 + (i - 100000) * 0.075; else if (i <= 400000) bonus = bonus2 + (i - 200000) * 0.05; else if (i <= 600000) bonus = bonus4 + (i - 400000) * 0.03; else if (i <= 1000000) bonus = bonus6 + (i - 600000) * 0.015; else bonus = bonus10 + (i - 1000000) * 0.01; printf("bonus=%ld", bonus); return 0; } ``` 第三个实例是寻找平方根问题,要求找到小于100000的自然数`i`,使得它的平方等于100加上某个自然数的平方,同时这个平方也等于168加上另一个自然数的平方。这涉及到数学中的平方根计算和条件判断。可以使用`math.h`库中的`sqrt()`函数来求平方根。代码如下: ```c #include <stdio.h> #include <math.h> int main() { long int i, x, y, z; for (i = 1; i < 100000; i++) { x = sqrt(i + 100); // 计算100后的平方根 y = sqrt(i + 268); // 计算268后的平方根 if (x * x == i + 100 && y * y == i + 268) { // 检查是否满足条件 printf("i=%ld, x=%ld, y=%ld\n", i, x, y); } } return 0; } ``` 这些实例展示了C语言中基本的循环、条件判断、数学运算以及函数的使用。通过这样的练习,开发者可以更好地理解和掌握C语言的基础编程技巧。