小编提示:
下面的程序代码用C++程序实现,适合初学者参考学习。同样的,我在写程序的过程中,会注释一些个人感觉值得注意的地方的一些见解。相互指正。
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include<iostream>
using namespace std;
/*
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
*/
void combine(){
int count = 0;
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
for(int k=1;k<5;k++){
if(i!=k && j!=i && k!=j){
count++;
cout<<i<<j<<k<<" ";
if(count%10==0)
cout<<endl;
}
}
}
}
cout<<endl;
cout<<"一共的数字共有:"<<count<<"个"<<endl;
}
int main(){
combine();
return 0;
}
【程序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,求应发放奖金总数?
#include<iostream>
using namespace std;
/*
分析:
设利润是x 奖金y
x<=10(万元) y=0.1x
10>x>=20(万元) y=0.1*10+(x-10)*0.075
20>x>=40(万元) y=0.1*10+10*0.075+(x-20)*0.05
40>x>=60(万元) y=0.1*10+10*0.075+20*0.05+(x-40)*0.03
60>x>=100(万元) y=0.1*10+10*0.075+20*0.05+20*0.03+(x-60)*0.015
x>100(万元) y=0.1*10+10*0.075+10*0.05+20*0.03+40*0.015+(x-100)*0.01
*/
float calculate(int x){
if(x<=10){
return 0.1*x;
}else if(x>10 && x<=20){
return 0.1*10+(x-10)*0.075;
}else if(x>20 && x<=40){
return 0.1*10+10*0.075+(x-20)*0.05;
}else if(x>40 && x<=60){
return 0.1*10+10*0.075+20*0.05+(x-40)*0.03;
}else if(x>60 && x<=100){
return 0.1*10+10*0.075+20*0.05+20*0.03+(x-60)*0.015;
}else if(x>100){
return 0.1*10+10*0.075+10*0.05+20*0.03+40*0.015+(x-100)*0.01 ;
}
}
/*
这里问题值得注意的一点就是关于返回值用什么类型:我们不妨复习一下C++中所具有的数据类型:
布尔型 bool
字符型 char
整型 int
浮点型 float 4 个字节 +/- 3.4e +/- 38 (~7 个数字)
双浮点型 double 8 个字节 +/- 1.7e +/- 308 (~15 个数字)
无类型 void
宽字符型 wchar_t
一些基本类型可以使用一个或多个类型修饰符进行修饰:
signed
unsigned
short
long
如:long int long double等
由于这里没有涉及比较精密的计算,还在我们可以常规能接收的范围,所以用float
*/
int main(){
float a = calculate(55);
cout<<a<<endl;
return 0;
}
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include<iostream>
#include<cmath>
using namespace std;
/*
提示:By:weizu_cool
不妨采用break跳出循环控制,找到后输出;或者直接输出,再break;
我们需要使用sqrt函数,导入<cmath>
double sqrt(double); 该函数返回参数的平方根。
*/
int find(n){
int count=0;
long num =0, x = 0, y = 0;
while(1){
num++;
x = sqrt(num+100);
y = sqrt(num+268); //注意:这里不要想当然的定义x,y为double来存储,因为我们后面的if条件判断就是基于整型变量的
//截取整数部分来进行,从而得出的判断。double的话,每次都相等了,判断就失去了意义。
if(x*x==num+100 && y*y==num+268){
cout<<"num="<<num<<endl;
count++;
if(count==n)
break;
}
}
return 0;
}
int main(void){
int n = 3;//这里n是希望找到的满足条件的数的个数 ,实际上经过测试好像也只有三个
find();
return 0;
}