1.题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。
#include <iostream>
using namespace std;
/*
题目:
有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
程序分析:
可填在百位、十位、个位的数字都是 1、2、3、4,
组成所有的排列后再去掉不满足条件的排列。
*/
int main() {
int count;
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 != j && j != k && i != k ) {
cout << i << j << k << " \n";
count++;
}
}
}
}
cout << "互不相同且无重复数字的三位数总共有:" << count;
}
结果:
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,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。
#include <iostream>
using namespace std;
double setbons(double I);
double setbons(double I) {
double bons, bons1, bons2, bons3, bons4, bons5;
bons1 = 10 * 0.1;
bons2 = bons1 + 10 * 0.075;
bons3 = bons2 + 20 * 0.05;
bons4 = bons3 + 20 * 0.03;
bons5 = bons4 + 40 * 0.015;
//if else 语句的作用
if (I <= 10) {
bons = I * 0.1;
return bons;
} else if (I > 10 && I <= 20) {
bons = bons1 + (I - 10) * 0.075;
return bons;
} else if (I > 20 && I <= 40) {
bons = bons2 + (I - 20) * 0.05;
return bons;
} else if (I > 40 && I <= 60) {
bons = bons3 + (I - 40) * 0.03;
return bons;
} else if (I > 60 && I <= 100) {
bons = bons4 + (I - 60) * 0.015;
return bons;
} else if (I > 100) {
bons = bons5 + (I - 100) * 0.01;
return bons;
}
}
int main() {
double x, y;
cout << "请输入当月利润:(万元)" << endl;
cin >> x;
y = setbons(x);
cout << "应发放奖金总数为:" << y << "万元";
return 0;
}
结果;
3.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
#include <iostream>
using namespace std;
int main() {
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++) {
if (168 % i == 0) {
j = 168 / i;
if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0 ) {
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
cout << x << "+ 100 = " << n << "*" << n << "\n";
cout << x << "+ 268 = " << m << "*" << m << "\n";
}
}
}
}
结果: