C语言字符数组编程题?

2025-04-07 17:22:07
推荐回答(3个)
回答1:

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

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

下面是代码:

#include

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;

}

回答2:

#include

#include

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;

}

回答3:

#include

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;
}