有关字符串数组的问题,希望得到解答

从键盘输入一行字符(最长不超过 200 字符),用函数编程统计其中单词(以空格 作为间隔符的字符串)的个数。例如 How are you 中单词个数为 3 。
要求:

  1. 按如下函数原型进行编程:int CountWords(char str[])
  2. 在主函数中:输入一行字符 ;然后调用函数 CountWords 计算单词的个数 ;最 后打印计算结果。
  3. 输入提示信息为: "Input a string:\n"
  4. 输出格式为 :"Number of words=%d\n"

需要考虑字符串中存在多个空格的情况。运行结果:

img

代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int CountWords(char str[])
{
    int cnt = 0; //单词数
    int i = 0;
    for (i = 0; str[i] != '\0'; i++)
    {
        if (i == 0 && str[i] != ' ') //第一个字符不是空格
            cnt++;
        else if (i > 0)
        {
            if (str[i - 1] == ' ' && str[i] != ' ')//前一个字符是空格,当前字符不是空格
                cnt++;
        }
    }
    return cnt;
}

int main()
{
    int n = 0;
    char str[1000] = { 0 };
    printf("Input a string:\n");
    gets(str);
    n = CountWords(str);
    printf("Number of words=%d\n", n);
    return 0;
}


#include <stdio.h>

int CountWords(char str[])
{
int cnt = 0;
for(int i = 0; str[i] != '\0'; i++)
{
if(str[i] == ' ' && str[i+1] != ' ' && str[i+1] != '\0')
cnt++;
}
return cnt+1;
}

int main()
{
char str[200];
printf("Input a string:\n");
gets(str);
printf("Number of words=%d\n", CountWords(str));
return 0;
}

仅供参考:

img

#include <stdio.h>
#include <string.h>
int CountWords(char str[])
{
    int i = 0, j = 0;
    while(str[i] != '\0')
    {
        if(str[i] == ' ')
        {
            j++;
        }
        i++;
    }
    j++;
    
    return j;
} 

int main()
{
    char s[200] = {0};
    int num;
    printf("Input a string:\n");
    gets(s);
    num = CountWords(s);
    printf("Number of words=%d\n",num);
    return 0;
} 
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632