1.有1、2、3、4 四个数字,能组成多少个互不相同且无重复的三位数?都是多少 ?
按照我的思路,我可能会正向思考先分别把1~4放在个位,然后分情况再分别往百位、十位上放不同的数。相当于我按照做数学排列组合的思维了。
比较简洁的思路如下:
(1)把所有的数列出来
(2)分别判断是否满足“无重复”这个条件(个位!=十位!=百位 i!=j&&i!=k&&j!=k)
(3)同时使用计数器count,并且输出满足条件的值
#includeint main(){int i,j,k;//分别代表 个、十、百int count=0;//计数 for(i=1;i<5;i++){for(j=1;j<5;j++){for(k=1;k<5;k++){if(i!=j&&i!=k&&j!=k){printf("%d%d%dn",i,j,k);count++;}}}}printf("能组成%d个互不相同且无重复的三位数",count);return 0; }
2.企业发放的奖金根据利润提成。利润"W"低于或等于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%提成,从键盘输入当月利润 W,求应发放奖金总数?
我的思路:
S1:输入 W
S2:判断W的值【if(W<=10) ...else if(10 S3:按照题目要求对输入的W分别计算各部分利润再加起来(这样计算会比较繁琐)
S3:按照数轴层次来(分为0~10,10~20,20~40,40~60,60~100,>100 六个区间)
#include//按照原来的思路,分每一次的情况计算需要重复一段,但总体思路差不多int main(){double W,S;scanf("%lf",&W);if(W<=10) S=W*0.1;else if(10100) S=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(W-100)*0.001;printf("%lf",S);return 0;}#includeint main(){double W,S;//W是利润,S是应发放的奖金 scanf("%lf",&W);double b1,b2,b3,b4,b5;b1=10*0.1;//10万的部分 b2=b1+10*0.075;//10万~20万 b3=b2+20*0.05;//20~40b4=b3+ 20*0.03;b5=b4+40*0.015;if(W<=10) S=W*0.1;else if(10100) S=b5+(W-100)*0.01;printf("%lf",S);return 0;}