我又来给自己挖坑了,定个小目标。从今天起每天一道c语言,争取做够100道。

5.8

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>

int main()
{
int i, j, k;
for (i = 1; i < 5; i++) // 以下为三重循环
{
for (j = 1; j < 5; j++)
{
for (k = 1; k < 5; k++) // 确保i、j、k三位互不相同
{
if (i != k && i != j && j != k)
{
printf("%d%d%d\n", i, j, k);
}
}
}

}
return 0;
}

百位有4种选择,为使十位与百位不重复,十位有3种选择,同理,个位有2中选择,总共有4x3x2=24种选择。

5.9

题目:企业发放的奖金根据利润提成。

利润(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,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<stdio.h>
int main()
{
double i=0;
double a = 0;
printf("输入你的利润");
scanf("%lf", &i);

if (i <= 100000)
{
a = 0.1 * i;
}
else if (i <= 200000)
{
a = 0.1 * 100000 + 0.075 * (i - 100000);
}
else if (i <= 400000)
{
a = (i - 200000) * 0.05;
}
else if (i <= 600000)
{
a = (i - 400000) * 0.03;
}
else if (i <= 1000000)
{
a = (i - 600000) * 0.015;
}
else if (i > 1000000)
{
a = (i - 1000000) * 0.01;
}
printf("你的净利润为%lf\n", i);
printf("你的提成为%lf", a);
return 0;
}