C语言经典算法实践:100个程序题目及解答

需积分: 10 0 下载量 164 浏览量 更新于2024-07-26 收藏 128KB DOC 举报
C语言经典算法100例 本资源收录了100个经典的C语言算法问题,涵盖了多种算法类型,包括数组、链表、树、图、排序、搜索等。每个问题都提供了详细的程序分析和源代码,帮助读者快速掌握C语言编程技能。 **程序1:三位数排列** 问题描述:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:为了解决这个问题,我们可以使用三重循环来生成所有可能的三位数,然后再去掉不满足条件的排列。具体来说,我们可以使用三个变量i、j、k来表示百位、十位、个位的数字,然后使用if语句来检查是否满足条件。 源代码: ```c 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); } } } } } ``` **程序2:奖金计算** 问题描述:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 程序分析:为了解决这个问题,我们可以使用数轴来分界,定位。我们可以定义一个长整型变量bonus来存储奖金总数,然后使用if-else语句来检查利润的范围,并计算相应的奖金。 源代码: ```c main(){ long int i; int bonus1, bonus2, bonus4, bonus6, bonus10, bonus; scanf("%ld", &i); bonus1 = 100000 * 0.1; bonus2 = bonus1 + 100000 * 0.75; bonus4 = bonus2 + 200000 * 0.5; bonus6 = bonus4 + 200000 * 0.3; bonus10 = bonus6 + 400000 * 0.15; 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 bonus = bonus6 + (i - 600000) * 0.015; printf("奖金总数:%ld\n", bonus); } ``` 这两个程序展示了C语言在解决实际问题时的强大能力,读者可以通过学习和实践这些程序来提高自己的编程技能。