#include <stdio.h>
#include <string.h>
int main()
{
char c, str1[81], str2[81];
int i, word = 0
printf( "总共有%d个单词", word + 2 );
return 0;
}
你好,源码如下
麻烦采纳一下,你的采纳,是对我最好的鼓励,谢谢!
#include<stdio.h>
int main(){
char str[81],str2[81];
int i=0,num=0,flag=0;
gets(str);
for(i=0;str[i]!='\0';i++){
if(str[i]==' ')
flag=0;
else{
if(flag==0)
{
num++;
flag=1;
}
}
}
gets(str2);
for(i=0;str2[i]!='\0';i++){
if(str2[i]==' ')
flag=0;
else{
if(flag==0)
{
num++;
flag=1;
}
}
}
printf("%d\n",num);
}
一个粗糙的实现,供参考:
#include <stdio.h>
#include <string.h>
//https://ask.csdn.net/questions/7700658?spm=1005.2025.3001.5141
//计算str字符串有几个单词
int strWordNum(char * str){
int i=0; //访问字符串的访问下标
char c; //当前字符
char preCh=0; //前一个字符
int word=0; //单词数量
// int wordStart;
while(str[i]!='\0'){ //如果当前字符串没有结束
c = str[i]; //获取字符串当前位置的字符
i++; //指向下一个字符
//如果是刚开始访问字符串或者前一个字符为空格并且当前字符不是空格,说明开始进入单词
if(preCh==0||(preCh==' '&&c!=' ')){
//wordStart=1;
preCh = c; //把当前字符记录到前一个字符变量,以便下一次循环判断使用
continue; // 进入单词,此时单词没有结束,可以开始下一次遍历
}
//如果前一个字符不是空格而当前字符是空格或者达到字符串结尾,说明一个单词已经形成,单词计数+1
if(preCh!=' '&& (c==' '||(i==strlen(str)-1) ) ){
word++;
preCh=c; //把当前单词赋给前一个单词变量,以便下一次判断使用
continue; //开始下一次遍历
// wordStrat=0;
}
if( c==' '){ // 如果当前字符为空格,开始下一次遍历
preCh =c;
continue;
}
}
return word;
}
int main()
{
char str1[81], str2[81];
printf("请输入第一个字符串(单词之间用空格分隔):\n");
gets(str1);
printf("请输入第二个字符串(单词之间用空格分隔):\n");
gets(str2);
printf( "str1总共有%d个单词.\n", strWordNum(str1) );
printf( "str2总共有%d个单词.\n", strWordNum(str2) );
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char str[81],str2[81];
int i,num=0,flag=0;
scanf("%[^\n]\n%[^\n]",str,str2);
for(i=0;str[i]!='\0';i++){
if(str[i]==' ')
flag=0;
else{
if(flag==0)
{
num++;
flag=1;
}
}
}
for(i=0;str2[i]!='\0';i++){
if(str2[i]==' ')
flag=0;
else{
if(flag==0)
{
num++;
flag=1;
}
}
}
printf("总共有%d个单词\n",num+1);
return 0;
}