【C语言初学】编程题练习

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

 按照我的思路,我可能会正向思考先分别把1~4放在个位,然后分情况再分别往百位、十位上放不同的数。相当于我按照做数学排列组合的思维了。

比较简洁的思路如下:

        (1)把所有的数列出来

        (2)分别判断是否满足“无重复”这个条件(个位!=十位!=百位 i!=j&&i!=k&&j!=k

        (3)同时使用计数器count,并且输出满足条件的值

#include<stdio.h>
int 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%d\n",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<W<=20)...】

S3:按照题目要求对输入的W分别计算各部分利润再加起来(这样计算会比较繁琐)

S3:按照数轴层次来(分为0~10,10~20,20~40,40~60,60~100,>100  六个区间)

#include<stdio.h>//按照原来的思路,分每一次的情况计算需要重复一段,但总体思路差不多
int main(){
	double W,S;
	scanf("%lf",&W);
	if(W<=10) S=W*0.1;
	else if(10<W<=20) S=10*0.1+(W-10)*0.075;
	else if(20<W<=40) S=10*0.1+10*0.075+(W-20)*0.05;
	else if(40<W<=60) S=10*0.1+10*0.075+20*0.05+(W-40)*0.03;
	else if(60<W<=100)S=10*0.1+10*0.075+20*0.05+20*0.03+(W-60)*0.015;
	else if(W>100)    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;
}

#include<stdio.h>
int 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~40
	b4=b3+ 20*0.03;
	b5=b4+40*0.015;
	if(W<=10) S=W*0.1;
	else if(10<W<=20)  S=b1+(W-10)*0.075;
	else if(20<W<=40)  S=b2+(W-20)*0.05;
	else if(40<W<=60)  S=b3+(W-40)*0.03;
	else if(60<W<=100) S=b4+(W-60)*0.015;
	else if(W>100)     S=b5+(W-100)*0.01;
	printf("%lf",S);
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值