编写一个函数,由实参传来一个字符串,统计此字符串中小写字母和数字的个数,在主函数中输入字符串以及输出上述的结果。 ①在程序中用全局变量。编译和运行程序,分析结果。讨论为什么要用全局变量。能否不用全局变量,修改程序并运行之。
时间: 2024-12-20 10:23:49 浏览: 2
实验5 数组实验1
为了编写这个功能,我们可以创建一个函数专门用于计算字符串中小写字母和数字的数量。由于我们需要在主函数之外访问到这两个计数器,通常会使用全局变量。全局变量的好处是可以使得在整个程序范围内共享数据,无需每次传递参数。
下面是一个简单的示例,使用了全局变量`count_letters`和`count_digits`:
```c++
#include <iostream>
#include <string>
// 全局变量用于存储字符计数
int count_letters = 0;
int count_digits = 0;
// 函数来统计字符
void count_chars(const std::string& input) {
for (char c : input) {
if (islower(c)) // 判断是否为小写字母
count_letters++;
else if (isdigit(c)) // 判断是否为数字
count_digits++;
}
}
int main() {
std::string input_str; // 用户输入的字符串
std::cout << "请输入一个字符串: ";
std::getline(std::cin, input_str);
count_chars(input_str); // 调用函数处理输入
std::cout << "小写字母数量: " << count_letters << "\n";
std::cout << "数字数量: " << count_digits << "\n";
return 0;
}
```
在这个例子中,我们之所以选择全局变量,是因为在主函数内部不需要返回值,而仅仅需要更新计数器。但是,如果想要避免全局变量,可以改用局部变量,并通过指针或者引用传递给函数:
```c++
#include <iostream>
#include <string>
// 函数接受字符串并返回计数
std::pair<int, int> count_chars(const std::string& input) {
int letters = 0, digits = 0;
for (char c : input) {
if (islower(c))
letters++;
else if (isdigit(c))
digits++;
}
return {letters, digits};
}
int main() {
std::string input_str; // 用户输入的字符串
std::cout << "请输入一个字符串: ";
std::getline(std::cin, input_str);
auto counts = count_chars(input_str);
std::cout << "小写字母数量: " << counts.first << "\n";
std::cout << "数字数量: " << counts.second << "\n";
return 0;
}
```
这里我们通过函数直接返回一个包含两个元素的`std::pair`,这样就不需要全局变量了。
阅读全文