《C语言专升本复习资料——100道练习题》是一份针对准备专升本考试的学生编写的习题集,包含涵盖语法、算法及编程实践等多方面的精选题目。
【程序1】题目:有1,2,3,4这四个数字,请问能组成多少个互不相同且无重复的三位数?并列出所有这些不同的三位数。
程序分析:
可以将1、2、3、4分别填在百位,十位和个位上。首先生成所有的排列组合,然后去除不符合条件(即有重复数字)的情况。
程序源代码:
```c
main(){
int i, j, k;
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) {/*确保i, j, k三位互不相同*/
printf(%d,%d,%d\n, i,j,k);
}
}
}
}
```
【程序2】题目:企业发放的奖金根据利润提成。当月利润低于或等于10万元时,奖金可按利润的10%提取;若利润超过10万但不超过20万,则超出部分按照7.5%的比例提成;如果利润在20到40万之间,那么高出20万元的部分可以提成5%,同样地,在40至60万元间的额外收入按3%计算奖金。当月利润达到或超过60万但不超过1百万时,超出部分的奖金比例为1.5%;如果利润高于1百万元,则剩余金额按照1%的比例提取。
程序分析:
可以利用数轴来分段定义各个区间内的提成率,并注意在定义变量时需要使用长整型以确保准确计算大数值。
程序源代码:
```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 <= 10000) {
bonus = i * 0.1;
} else if (i <= 200) {
bonus = bonus1 + (i - 10) * 7.5 / 10; /*利润在二十万以下时的奖金*/
} else if(i <= 40){
bonus = bonus2 + (i - 20) * 5 / 10;
} else if(i <= 60){
bonus = bonus4 + (i - 40) * 3 / 10; /*利润在六十万以下时的奖金*/
} else if(i <= 100){
bonus = bonus6 + (i - 60) * 1.5 / 10;
} else {
bonus = bonus10 + (i - 100) * 1 / 10; /*利润超过一百万时的奖金*/
}
printf(bonus=%d,bonus);
}
```