2020-10-08 09:34:22
Q:输入一串
#include <
‘\0’和‘0’的区别:
在

字符串所有字符,如果当前字符不为空,单词数+1,再嵌套一个while循环,判断当前单词是否结束。
#include <stdio.h>
#include <string.h>
int count_words(char* s)
{
int len=strlen(s);
int count,i;
for(i=0;i<len;i++)
{
if(*(s+i)!=' '){ // 如果当前代码不为空
count++; //单词数+1
while(*(s+i)!=' '&& i<len) //判断当前单词是否结束
i++;
}
}
return count;
}
int main()
{
char* a="i love you";
printf("%d",count_words(a));
}
2022-07-02 12:28:10
根据英语的书写习惯,在每个单词前后都会有空格分隔。 所以可以依据空格来划分单词。
不过,由于空格可能存在连续多个,所以仅统计空格数是不可以的,需要更复杂一些的算法。
一、算法设计:
核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。
1、flag初始为1;
2、遍历字符串。
3、对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。
4、在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。
5、 遍历结束后输出结果。
二、参考代码:
#include <stdio.h>
int main()
{
char s[200];
int i,n=0,flag=1;
gets(s);//输入字符串。
for(i = 0; s[i]; i ++)//遍历
{
if(flag == 1)
{
if(s[i] != ' ')//单词起始
{
n++;
flag = 0;
}
}
else if(s[i] == ' ')//上一个单词结束。
flag = 1;
}
printf("%d\n", n);//输出结果。
return 0;
}
2023-09-25 19:12:43
2022-02-07 20:38:04
2021-09-25 07:16:27