c++如何在全局使cin只能读入int类型
时间: 2023-06-13 20:07:07 浏览: 52
可以通过重载 `operator>>` 来限制 `cin` 只能读入 `int` 类型。具体实现如下:
```c++
#include <iostream>
using namespace std;
istream& operator>> (istream& in, int& num) {
char c;
while ((c = getchar()) < '0' || c > '9');
num = c - '0';
while ((c = getchar()) >= '0' && c <= '9')
num = num * 10 + c - '0';
return in;
}
int main() {
int n;
cin >> n; // 只能读入 int 类型
cout << n << endl;
return 0;
}
```
在上述代码中,我们重载了 `operator>>` ,使其只能读入 `int` 类型。在读入时,首先跳过不是数字的字符,然后将读入的数字累加到 `num` 中。最后返回 `in`,这样可以让 `cin` 继续工作,以便读取后续的输入。
相关问题
c++使用全局变量完成下列任务:任意读入10个字符串,调用子函数对这10个串升序排列后由主函数输出
好的,我可以为您编写这个程序。请注意,全局变量不是一个良好的编程实践,因为它们容易被误用和导致不必要的错误。但是由于您的要求,我会为您提供使用全局变量的解决方案。
以下是代码:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 全局变量
string strs[10];
void sort_strings() {
// 使用 STL 的 sort 函数对字符串数组进行排序
sort(strs, strs + 10);
}
int main() {
// 读入 10 个字符串
for (int i = 0; i < 10; i++) {
cin >> strs[i];
}
// 对字符串数组排序
sort_strings();
// 输出排序后的字符串数组
for (int i = 0; i < 10; i++) {
cout << strs[i] << endl;
}
return 0;
}
```
这个程序会从用户那里读入 10 个字符串,将它们存储在全局变量 `strs` 中,然后调用 `sort_strings()` 函数对字符串进行排序。最后,主函数将排序后的字符串数组输出到屏幕上。
请注意,如果您将全局变量 `strs` 改为局部变量,那么您需要将其作为参数传递给 `sort_strings()` 函数。这是更好的编程实践,因为它减少了变量的作用域,提高了程序的可读性和可维护性。
使用全局变量完成下列问题:任意读入10个整数,调用子函数求得它们的平均值、最大值、最小值后由主函数输出
以下是使用全局变量实现的代码:
```c++
#include <iostream>
using namespace std;
int nums[10]; // 全局变量,存储读入的10个整数
int average, maximum, minimum; // 全局变量,存储平均值、最大值、最小值
void calculate() { // 子函数,计算平均值、最大值、最小值
int sum = 0;
maximum = minimum = nums[0];
for (int i = 0; i < 10; i++) {
sum += nums[i];
if (nums[i] > maximum) {
maximum = nums[i];
}
if (nums[i] < minimum) {
minimum = nums[i];
}
}
average = sum / 10;
}
int main() {
cout << "请输入10个整数:" << endl;
for (int i = 0; i < 10; i++) {
cin >> nums[i];
}
calculate();
cout << "平均值为:" << average << endl;
cout << "最大值为:" << maximum << endl;
cout << "最小值为:" << minimum << endl;
return 0;
}
```
在上述代码中,`nums`、`average`、`maximum`、`minimum` 都是全局变量,可以被子函数 `calculate` 和主函数 `main` 访问和修改。在主函数中读入10个整数后,调用 `calculate` 函数计算平均值、最大值、最小值,并在主函数中输出。