### 知识点总结
#### 一、程序1:生成所有不同的三位数
- **问题描述**:使用数字1、2、3、4生成所有不同的三位数。
- **解决思路**:
- 使用三重循环分别代表百位、十位和个位。
- 在循环中加入条件判断,确保每位上的数字不同。
- **代码分析**:
- `for(i=1;i<5;i++)`:控制百位上的数字。
- `for(j=1;j<5;j++)`:控制十位上的数字。
- `for(k=1;k<5;k++)`:控制个位上的数字。
- `if(i!=k&&i!=j&&j!=k)`:确保三个数字各不相同。
- `printf("%d,%d,%d\n",i,j,k)`:输出符合条件的三位数。
#### 二、程序2:根据利润计算奖金
- **问题描述**:根据企业的利润,按照不同的提成比例计算奖金总额。
- **解决思路**:
- 将利润分为多个区间,并为每个区间定义奖金计算规则。
- 使用条件语句根据利润值选择正确的奖金计算方法。
- **代码分析**:
- 定义变量`i`表示利润,类型为`long int`。
- 定义变量`bonus1`到`bonus10`表示各个利润区间的奖金基准。
- 使用`scanf`读取用户输入的利润值。
- 使用`if-else`语句判断利润所在的区间,并计算奖金。
- 最终通过`printf`输出奖金总额。
- **关键代码段**:
```c
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
```
#### 三、程序3:寻找特定整数
- **问题描述**:找到一个整数,使得该整数加上100后是一个完全平方数,再加上168后还是一个完全平方数。
- **解决思路**:
- 遍历10万以内的整数,检查是否符合要求。
- 对每个整数进行两次开方操作,检查结果是否为整数。
- **代码分析**:
- 使用`#include <math.h>`引入数学库。
- 定义变量`i`表示当前遍历的整数。
- 定义变量`x`和`y`表示两次开方的结果。
- 使用`sqrt`函数计算平方根。
- 使用`if`语句检查两个结果是否都为整数的平方根。
- 如果满足条件,则输出该整数。
- **关键代码段**:
```c
for(i=1;i<100000;i++)
{
x=sqrt(i+100);
y=sqrt(i+268);
if(x*x==i+100&&y*y==i+268)
printf("\n%ld\n",i);
}
```
#### 四、程序4:计算某日是一年中的第几天
- **问题描述**:给定某一年、某月、某日,计算这一天是一年中的第几天。
- **解决思路**:
- 根据月份计算之前月份的总天数。
- 考虑是否为闰年以及输入月份是否大于3月。
- **代码分析**:
- 使用`switch-case`结构根据月份计算之前月份的总天数。
- 定义变量`sum`累加天数。
- 定义变量`leap`判断是否为闰年。
- 根据是否为闰年及输入月份决定是否需要额外增加一天。
- **关键代码段**:
```c
switch(month)
{
case 1: sum=0; break;
case 2: sum=31; break;
case 3: sum=59; break;
// ... 其他月份
}
```
- 最终输出计算结果。