(C++)输入一行字符,统计其中有多少个大小写字母,数字,空格,逗号等。

这篇博客提供了两种C++方法来统计用户输入的一行字符中包含的小写字母、大写字母、数字、空格、逗号和其他字符的数量。第一种方法使用cin.get(),第二种方法使用cin.getline()读取字符串,然后遍历计算各类型字符的计数。
摘要由CSDN通过智能技术生成

//方一:使用字符输入

#include<iostream>
using namespace std;
int main()
{
    char c;
    int smallletters = 0, largeletters = 0, space = 0, number = 0, comma = 0, other = 0;
    cout << "请输入字符串:";
    while ((c = cin.get()) != '\n')

    //也可写成while ((c = getchar()) != '\n')
        //个人认为cin.get存在的目的就是为了从c移植到c++的时候,直接用cin.get()代替gethar()
        //也正因为如此,cin.get()的返回值跟其他cin.get成员函数返回cin对象不同,跟getchar()一样返回int.
        //所以cin.get()和getchar()没什么区别。
    {
        if (c >= 'a' && c <= 'z')        
            smallletters++;        
        else if (c >= 'A' && c <= 'Z')        
            largeletters++;        
        else if (c == '

好的,以下是一个C++的代码示例,实现了此题的功能: ```c++ #include <iostream> #include <string> #include <algorithm> using namespace std; bool isSeparator(char c) // 判断字符是否为分隔符 { return c == ' ' || c == ',' || c == '.'; } void reverse(string &s, int start, int end) // 反转单词 { while(start < end) { char temp = s[start]; s[start] = s[end]; s[end] = temp; start++; end--; } } void reverseWords(string &s) { reverse(s.begin(), s.end()); // 先整体反转字符 int start = 0; int len = s.length(); for(int i = 0; i < len; i++) { if(isSeparator(s[i])) // 判断是否为分隔符 { reverse(s, start, i - 1); // 反转单词 start = i + 1; } } reverse(s, start, len - 1); // 反转最后一个单词 } int main() { string str; getline(cin, str); // 从标准输入读取整行字符 reverseWords(str); // 反转单词 int i = 0; while(i < str.length()) { if(isalpha(str[i])) // 如果是字母,则输出该单词 { cout << str[i]; i++; while(i < str.length() && isalpha(str[i])) { cout << str[i]; i++; } cout << ' '; } else // 如果是标点符号或空格,则继续向后遍历 { i++; } } cout << endl; // 输出完毕,换行 return 0; } ``` 这个程序和C语言的示例比较类似,但是使用了C++的STL库中的`string`类型,以及更方便的输入输出方式。首先,我们使用`getline`函数从标准输入读取一行字符,然后调用`reverseWords`函数对其中的单词进行反转。`reverseWords`函数中,我们先将整个字符反转,然后再遍历一遍字符,根据空格逗号或小数点等分隔符来找到单词的起始和结束位置,然后调用`reverse`函数反转单词。最后,我们再次遍历字符,将所有单词逐个输出,忽略分隔符即可。 希望这个代码示例能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值