C++(初学者)练习题-day one

版权声明: https://blog.csdn.net/qq_26460841/article/details/81515989

小编提示:

        下面的程序代码用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;
}

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/81515989