C语言练习题每练 1:字符串统计单词个数,单词由空格隔开

空格隔开,所以空格是一个标志性的符号,可以通过空格来统计单词的个数。首先,分析一下所能遇到的各种情况。相邻两个字符组合情况为:空空;空字:字空;字字。特殊情况考虑有全空,全字,空空空字空空空。
因为要兼顾前后所以需要两个变量来指示,p指示前一个初始为0,C指示当前。
for循环结束条件 c指到’\0’.

  • p==0:

          C=空   不操作;
          C=字   临界状态,单词开始了,num++,p=1;
    
  • p==1:

          C=空  单词结束了,p=0;
          C=字   单词未结束,不操作。
    

全空时,没有触发 p=0 C=字状态 num没有改变值 依然为零。
全字时,初状态p=0 所以归结到p=0 C=字的状态下,num计了一个数,后续全是p=1,C=字情况num不再增加。
空空空字空空空,持续空不操作 直到空字相邻计数,字空相邻不计数。

#include<stdio.h>
void main()
{   int i,num=0,p=0;
    char str[50],c;
    printf("Please input a line text:");
    gets(str);
    for(i=0;(c=str[i])!='\0';i++){
        if(p==0&&c!=' ') {num++; p=1;}
        if(p==1&&c==' ') p=0;
    }
        printf("There are %d words\n",num);
}
//输入一行字符,统计单词个数,单词用空格隔开。

#include<stdio.h>

void main(){
char *s;
char string[50];
printf("Please input a line text:");
gets(string);
//scanf("%s",string);对空格失效
printf("%s\n",string);
char c;
int i=0,p=0,num=0;
for(i=0;(c=string[i])!='\0';i++)
    if(c==' ') p=0;//空字符串
    else if(p==0) //C!=0 but word==0  临界状态,空格后面跟着一个字符!
    { p=1;
      num++;
    }
printf("There's totally %d words.",num);
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值