C语言字符数组编程题?

输入一行字符串,统计其中有多少个单词。例如:Iamastudent有4个单词指定子函数:intGetWordNum(charst[])第一次遇到不是空格的,计为新单词。... 输入一行字符串,统计其中有多少个单词。例如:I am a student 有4个单词
指定子函数:int GetWordNum(char st[])
第一次遇到不是空格的,计为新单词。
展开
 我来答
自我编程
2020-05-05 · 科技优质答主
自我编程
采纳数:1481 获赞数:4279

向TA提问 私信TA
展开全部

思路:按题意,用指针遍历字符串st,使用标识变量flag首次遇到字母置1并计数,遇到空格时flag重置0。

注意:本程序不考虑夹杂非字母的情况,请规范输入。比如“I am a stu**dent”,stu**dent将作为一个单词识别。

下面是代码:

#include <stdio.h>

int GetWordNum(char st[])

{

    char *p=st;

    int cnt=0,flag=0;

    while(*p)

    {

        if(flag==0 && ((*p>='a' && *p<='z') || (*p>='A' && *p<='Z')))

            cnt++,flag=1;

        if(flag && *p==' ')

            flag=0;

        p++;

    }

    return cnt;

}

int main()

{

    char str[]="I am a student";

    printf("%s共计单词个数%d\n",str,GetWordNum(str));

    return 0;

}

听不清啊
高粉答主

2020-05-05 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.8亿
展开全部

#include <stdio.h>

#include <string.h>

int GetWordNum(char s[])

{int i,n=0;

 s[strlen(s)-1]=0;

 for(i=0;s[i];i++)

 {for(;s[i]&&s[i]==' ';i++);

  for(;s[i]&&s[i]!=' ';i++);

  n++;

 }

 return n;  

}

int main()

{ char s[300];

  gets(s);

  printf("%d\n",GetWordNum(s));

  return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Eli2021
2020-05-05 · TA获得超过664个赞
知道小有建树答主
回答量:1266
采纳率:72%
帮助的人:328万
展开全部
#include <stdio.h>

int GetWordNum(char st[])
{
const char *p = &st[0];
int s = 0;
while (*p)
{
while (*p && *p == ' ')++p;
while (*p && *p != ' ')++p;
++s;
}
return s;
}

int main(int argc, char *argv[])
{
char buf[100];
fgets(buf, sizeof(buf), stdin);
printf("%d\n", GetWordNum(buf));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式