c++ for 循环 i 递增0.01
时间: 2023-07-09 08:55:41 浏览: 317
在C++中,for循环的计数器只能是整数类型,不能是浮点数类型。如果你想让i以0.01递增,可以使用浮点数变量来代替计数器i,并在循环中进行适当的计算。
例如,可以使用如下代码:
```c++
float i;
for(i = 0.0f; i < 1.0f; i += 0.01f) {
// 循环体
}
```
在这个循环中,浮点数变量i从0.0开始,每次递增0.01,直到i小于1.0为止。你可以在循环体中使用i进行计算或其他操作。需要注意的是,由于浮点数计算存在精度误差,所以循环条件应当使用小于号而不是等于号。
相关问题
C++ for(int i=0;i<n;i++)//循环100000次,0.01一步 { //时间和平近点角 double t=(i+1)*h; }如果t值为整数则输出t
这段C++代码片段描述了一个for循环结构,它会重复执行100,000次,每次迭代步长为0.01,通过变量`i`控制。在循环体内部,首先计算当前时刻`t`,公式为`(i+1) * h`,其中`i`从0开始递增,`h`可能是预设的时间间隔。如果`t`的值恰好是整数,那么将会对这个整数值进行输出。
具体来说,例如在第一次迭代,`i = 0`,`t = 0 * h = 0`;第二次迭代,`t = 1 * h`;以此类推,直到`i = 99,999`时,`t = 99,999 * h`。若`h`是一个小数,而`h * (i + 1)`的结果是整数,则程序会输出对应的`t`值。
如果你想在循环体内加入具体的输出代码,可以像这样:
```cpp
#include <iostream>
int main() {
int n = 100000; // 循环次数
double h = 0.01; // 步长
for (int i = 0; i < n; i++) {
double t = (i + 1) * h;
if (t == static_cast<int>(t)) { // 检查是否为整数
std::cout << "当 i=" << i << ", t=" << t << std::endl;
}
}
return 0;
}
```
这将打印出每个`t`值为整数的时刻及其对应的`i`值。
某公司财务需要开发一个计算雇员工资的程序。 该公司有3类员工。 工人 工资为每小时工资额乘当月工作时数再加上工龄工资; 销售人员 工资为每小时工资额乘当月工作时数加上销售额提成再加上工龄 工资,其中,销售额提成等于该销售人员当月售出商品金额的1%; 管理人员 工资为基本工资再加上工龄工资。 请用面向对象方法分析、设计这个程序,并用C++语言写出完整的程序。 要求设计人员基类,派生工人类,销售人员类和管理人员类, 举例: 员工工号:键盘输入 员工类型:键盘输入 姓名:键盘输入 参加工作时间:键盘输入 工人工资: 每小时工资额:宏定义80元/小时 月工作时数:键盘输入 工龄工资:第一年50元/月(宏定义),以后每年以20%递增,比如1978年参加工作,1979年为50+50*0.2=60元 月总工资 = 每小时工资额*月工作时数+工龄工资 输出:工号、姓名,员工类型,月工作时数、总工资 要求: 可以同时输入输出多位员工信息
```cpp
#include <iostream>
#include <string>
using namespace std;
//员工类
class Employee {
public:
//构造函数
Employee() {}
//虚析构函数
virtual ~Employee() {}
//虚函数,计算月总工资
virtual double getMonthSalary() = 0;
//设置员工工号
void setId(string id) {
m_id = id;
}
//设置员工姓名
void setName(string name) {
m_name = name;
}
//设置员工参加工作时间
void setBeginTime(int year) {
m_beginTime = year;
}
//获取员工工号
string getId() {
return m_id;
}
//获取员工姓名
string getName() {
return m_name;
}
//获取员工参加工作时间
int getBeginTime() {
return m_beginTime;
}
private:
string m_id; //员工工号
string m_name; //员工姓名
int m_beginTime; //员工参加工作时间
};
//工人类
class Worker : public Employee {
public:
//构造函数
Worker() {}
//计算月总工资
virtual double getMonthSalary() {
//每小时工资额
const double HOURLY_WAGE = 80;
//月工作时数
int workHours;
//工人工作年限
int years;
//输入月工作时数和工作年限
cout << "请输入" << getName() << "的月工作时数和工作年限(用空格隔开):";
cin >> workHours >> years;
//计算工龄工资
double senioritySalary = 50; //第一年工龄工资为50元/月
for (int i = 1; i < years; i++) {
senioritySalary *= 1.2; //每年递增20%
}
//计算月总工资
return workHours * HOURLY_WAGE + senioritySalary;
}
};
//销售人员类
class Salesman : public Employee {
public:
//构造函数
Salesman() {}
//计算月总工资
virtual double getMonthSalary() {
//每小时工资额
const double HOURLY_WAGE = 80;
//月工作时数
int workHours;
//销售额
double sales;
//销售人员工作年限
int years;
//输入月工作时数、销售额和工作年限
cout << "请输入" << getName() << "的月工作时数、销售额和工作年限(用空格隔开):";
cin >> workHours >> sales >> years;
//计算销售额提成
double commission = sales * 0.01;
//计算工龄工资
double senioritySalary = 50; //第一年工龄工资为50元/月
for (int i = 1; i < years; i++) {
senioritySalary *= 1.2; //每年递增20%
}
//计算月总工资
return workHours * HOURLY_WAGE + commission + senioritySalary;
}
};
//管理人员类
class Manager : public Employee {
public:
//构造函数
Manager() {}
//计算月总工资
virtual double getMonthSalary() {
//基本工资
const double BASE_SALARY = 5000;
//管理人员工作年限
int years;
//输入工作年限
cout << "请输入" << getName() << "的工作年限:";
cin >> years;
//计算工龄工资
double senioritySalary = 50; //第一年工龄工资为50元/月
for (int i = 1; i < years; i++) {
senioritySalary *= 1.2; //每年递增20%
}
//计算月总工资
return BASE_SALARY + senioritySalary;
}
};
int main() {
//定义员工数组
const int MAX_EMPLOYEES = 100;
Employee* employees[MAX_EMPLOYEES];
int count = 0; //员工计数器
//循环输入员工信息
while (true) {
//输入员工类型
cout << "请输入员工类型(1为工人,2为销售人员,3为管理人员,0表示输入结束):";
int type;
cin >> type;
if (type == 0) {
break;
}
//输入员工工号、姓名和参加工作时间
string id, name;
int beginTime;
cout << "请输入员工工号、姓名和参加工作时间(用空格隔开):";
cin >> id >> name >> beginTime;
//根据员工类型创建相应类型的员工对象
Employee* employee = nullptr;
switch (type) {
case 1:
employee = new Worker();
break;
case 2:
employee = new Salesman();
break;
case 3:
employee = new Manager();
break;
default:
break;
}
if (employee == nullptr) {
continue;
}
//设置员工信息
employee->setId(id);
employee->setName(name);
employee->setBeginTime(beginTime);
//将员工对象指针加入数组
employees[count++] = employee;
}
//输出员工信息和月总工资
for (int i = 0; i < count; i++) {
Employee* employee = employees[i];
cout << "工号:" << employee->getId() << ",姓名:" << employee->getName() << ",员工类型:";
if (dynamic_cast<Worker*>(employee) != nullptr) {
cout << "工人,";
}
else if (dynamic_cast<Salesman*>(employee) != nullptr) {
cout << "销售人员,";
}
else if (dynamic_cast<Manager*>(employee) != nullptr) {
cout << "管理人员,";
}
int beginTime = employee->getBeginTime();
int workYears = 2021 - beginTime;
cout << "月工作时数和总工资:" << employee->getMonthSalary() << ",工作年限:" << workYears << "年" << endl;
}
//释放员工对象内存
for (int i = 0; i < count; i++) {
delete employees[i];
}
return 0;
}
```
阅读全文