文章

13

粉丝

171

获赞

8

访问

46.6k

头像
三种情况:读取到字母、代表单词结束的空格、连续的空格
P1394 华中科技大学
发布于2023年2月1日 16:01
阅读数 4.3k

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

int main() {
    char s[128];
    while (gets(s)) {
        int len = strlen(s);
        int count = 0;
        for (int i = 0; i < len; i++) {//遍历字符串
            if ((s[i] == ' ' || s[i] == '.') && count != 0) {//遇到了空格或者句号且在此之前读到了字母,说明这个单词读取结束,需要输出字母个数
                printf("%d ", count);                //如果只遇到了空格,但在此之前并没有读到字母,说明是连续的空格,就不需要输出
                count = 0;
            }
            if (s[i] != ' ')//如果不是空格,说明遇到了单词,需要开始统计字母个数
                count++;
        }
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

4 条评论
Keeshpku SVIP
2023年3月19日 20:58

建议代码通过了之后再写题解.

赞(1)

Keeshpku : 回复 Keeshpku: #include <bits/stdc++.h> using namespace std; int main() { char s[128]; while (gets(s)) { int len = strlen(s); int count = 0; for (int i = 0; i < len; i++) {//遍历字符串 if (s[i] != ' ' && s[i] !='.')//如果不是空格,说明遇到了单词,需要开始统计字母个数 count++; if ((s[i] == ' ' || s[i] == '.') && count != 0) {//遇到了空格或者句号且在此之前读到了字母,说明这个单词读取结束,需要输出字母个数 printf("%d ", count); //如果只遇到了空格,但在此之前并没有读到字母,说明是连续的空格,就不需要输出 count = 0; } } } return 0; } 第十三行需要做修改.

2023年3月19日 21:00

Keeshpku : 回复 Keeshpku: N诺的回复代码, 格式真难看. 第十三行那里,改成这样就可以了, if (s[i] != ' ' && s[i] !='.')

2023年3月19日 21:01

阔赛英 : 回复 Keeshpku: 感谢!之前是AC了的,但是题解粘错了,现在已经修改好了,把for循环里两个if调换一下顺序就对了。

2023年7月14日 13:26