7-2 跨步 用C++完成 分数 20 作者 陈晓梅 单位 广东外语外贸大学 小明每一步可以跨x米,若跑道长度为y米,小明多少步可以走完? tips:本题完全不需要使用if-else哦。推荐使用向上取整函数
时间: 2024-09-21 09:06:57 浏览: 66
题目描述的小明跨步问题可以用简单的数学计算解决。如果小明每一步跨x米,跑道总长为y米,那么他需要走的步数就是跑道长度除以每步的距离,结果向上取整,因为即使最后一小段不足一整步,也必须要迈出去。
在C++中,你可以使用`ceil()`函数(通常包含头文件`<cmath>`),这个函数会返回大于等于给定数值的最小整数,来实现向上取整。以下是解答代码:
```cpp
#include <iostream>
#include <cmath>
int main() {
double x = 0.5; // 每步跨度
int y = 10; // 跑道长度
// 计算并向上取整步数
int steps_needed = static_cast<int>(std::ceil(y / x));
std::cout << "小明需要走 " << steps_needed << " 步才能走完." << std::endl;
return 0;
}
```
在这个例子中,`static_cast<int>(...)`用于将浮点数转换为整数,因为题目要求的是步数必须是整数。运行上述程序,你将得到小明走完整个跑道所需的步数。
相关问题
用C++写7-1 简单四则运算 分数 20 作者 陈晓梅 单位 广东外语外贸大学 读入两个正整数,求两者的和、差、积、商。 输入格式: 在一行中给出2个正整数A和B,以空格分隔。 输出格式: 按照输出样例的格式输出A与B的和、差、积、商。商的输出结果保留一位小数。
在C++中编写一个简单的四则运算程序来处理两个正整数A和B,并计算它们的和、差、积和商,可以参考以下代码:
```cpp
#include <iostream>
#include <iomanip> // 需要头文件来支持浮点数的输出格式
int main() {
int A, B;
// 读取用户输入的两个正整数
std::cout << "请输入两个正整数 (以空格分隔): ";
std::cin >> A >> B;
// 计算并输出结果
int sum = A + B;
int difference = A - B;
int product = A * B;
double quotient = static_cast<double>(A) / B; // 将整数转换为double以保证商的小数位数
// 使用std::fixed和std::setprecision(1)设置浮点数的精度为1位小数
std::cout << "和: " << sum << "\n";
std::cout << "差: " << difference << "\n";
std::cout << "积: " << product << "\n";
std::cout << "商: " << std::fixed << std::setprecision(1) << quotient << "\n";
return 0;
}
```
在这个程序中,我们首先通过`std::cin`从用户那里获取两个整数,然后进行加减乘除操作。注意当做除法时,我们将整数`A`强制转换为`double`,以便得到精确到小数点后一位的结果。最后,我们使用`std::fixed`和`std::setprecision(1)`来格式化输出的商,使其只有一位小数。
7-4 两个有序链表合并(新表不含重复元素) 分数 25 作者 陈晓梅 单位 广东外语外贸大学 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 要求S3中没有重复元素。
可以使用双指针法,从两个非降序链表的头部开始遍历,比较两个指针所指向的节点的值的大小,将较小的值插入到新的链表S3中,并将相应的指针向后移动一位,重复这个过程直到遍历完两条链表中的所有节点。若两个指针所指向的节点的值相同,则只将其中一个节点插入到新的链表S3中。最后返回合并后的新的非降序链表S3即可。
阅读全文