龙空技术网

用C语言实现计算“单词长度”,基础编程由此开始(第二十三节)

小萌九尾 97

前言:

当前大家对“c语言长度怎么算”大体比较注重,我们都需要剖析一些“c语言长度怎么算”的相关资讯。那么小编同时在网上收集了一些关于“c语言长度怎么算””的相关文章,希望我们能喜欢,姐妹们快快来学习一下吧!

今天这道题目呢,很直白,就是计算单词长度。

在程序中读入一行文本,其中以空格分隔为若个单词,以“.”为结束符号,要打印输出每个单词的长度,注意,这里的单词与语言无关,比方说It's算作为4个单词,也可能出现连续的空格,在最后出现“.”的时候,输入才算结束。

这道题目呢,也给了提示,在C语言中,用scanf函数来输入字符,scanf("%c",...)。

梳理逻辑

1、读入一行文本,使用scanf函数,然后字符的话,代表数据类型为char。

2、直到读到“.”为止,这里就需要用到一个while循环语句了,当读入的文本不等于“.”时,它才会输入,否则就会停止。

    char text;//给出的一行文本    while(text!='.'){        scanf("%c",&text);    }

3、接下来就是计数,以空格为一个单位,从第一个单词的第一个元素开始数,直到空格为止就停止,那么我们需要用到计数法。

假设我们只是输入“It's.”,那么在计数的时候会把“.”也给计数进去,所以需要在计数的基础上减去1才行,这是针对最后一个单词的计数方法,所以要写在循环外面。

那如果有空格的情况呢,我们就需要进行一个单独讨论了,

遇到空格之前,先进行正常计数,遇到空格后,就要重新计数,而空格之前的,是没有“.”的,所以只需要正常计数即可,之后呢,如果count!=0的话,那就可以打印一个空格,然后再把count复位成0,再进行之前的步骤即可。

        else if(text==' '){            if(count!=0){                printf("%d", count);                printf(" ");            }            count = 0;        }    }        printf("%d",count-1);

可是到这一步呢,我进行了测试,却发现无法满足PAT平台要求的所有测试点,其中的“空句子”、“连续多个空格”、“开头结尾空格”都出现了问题。

那么我们先来思考一下空句子的情况,空句子的时候,就是只有一个“.”的时候,那么最后的count应该是要满足>1的情况下的,然后没有结果打印。

以及我上面写的仍存在一些问题,这个printf语句应该是写在if(count!=0)这个条件判断中的。

当我修改完这两个问题后,发现只剩下开头结尾空格仍存在问题了。

经过测试,我发现最终问题就在于,如果在“.”前有空格的话,在打印输出的结果中,数字末尾会出现空格符号。

那么这种情况是需要单独进行讨论的,也就是在我们的if(count!=0)这个条件语句中要进行分情况讨论。

这里呢,我在做题的时候没有想明白,于是我去网上查阅了相关资料,发现我们在这边需要单独进行一个标记,也就是每进行一次循环需要增加一个标记,如果标记不为零,那么就打印输出“ ”(空格),如果标记为零,那就没有打印输出“ ”空格。

代码实现

//单词长度#include<stdio.h>int main(){    char text;//给出的一行文本    int count = 0;//计数法    int sign = 0;    while(text!='.'){//循环遇到“.”停止        scanf("%c",&text);//按照题目要求输入字符        if(text!=' '){            count++;        }        else if(text==' '){            if(count!=0){                if(sign!=0){//进行一个标记                    printf(" ");                }                          printf("%d", count);                sign++;//每进行一次循环增加一个标记               }            count = 0;        }    }    if(count>1){        if(sign!=0){//标记不为0的时候,才会打印空格,而平常状态标记为0,不会打印空格            printf(" ");        }        printf("%d",count-1);    }}
结果测试总结

别看这道题目简单,但其实要梳理清楚这道题目的逻辑可没有想象中的那么简单,我在这道题目上也卡了不少时间。

标签: #c语言长度怎么算