zoukankan      html  css  js  c++  java
  • 5-26 单词长度

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

    输入格式:

    输入在一行中给出一行文本,以.结束

    提示:用scanf("%c",...);来读入一个字符,直到读到.为止。

    输出格式:

    在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

    输入样例:

    It's great to see you here.
    

    输出样例:

    4 5 2 3 3 4
    

    解题思路:

    这一题的测试点挺多。像下面的都要排除:

    • ___________i 起始有空格
    • i    love. 有连续的空格
    •      . 单独一个点的情况。

    这个程序最大的问题还可能在对末尾不能包含有空格的处理上。

    本解法的思路是遇到下一个单词时,才输出上一个单词的位数,判断条件是统计的单词位数大于 0 且其后有空格,这时候输出的位数有空格。这样最后一个单词(它没有下一个单词)就可以单独输出不带空格的位数。

    文末的第二种解法提供了另外一种思路。增加了一个单词统计量,第一个单词输出时前方不加空格,此后前方都加空格。

    解题代码:

    #include<stdio.h> // 算法一
    
    int main ()
    {
    	int count = 0, count_0 = 0;
    	char n;
    	while((n = getchar()) != '.') {
    		if (n != ' ') {
    			if (count > 0 && count_0 > 0) { //当且仅当字母位数大于 0 时且后方有空格时才输出带有空格的位数 
    				printf("%d ", count);
    				count = 0;
    			}
    			count ++;
    			count_0 = 0;  
    			continue;	
    		} 
    		if (n == ' ') {
    			count_0 ++;
    		}		
    	}
    	if (count > 0) {  // 输出最后一个单词的个数 
    		printf("%d
    ", count);
    	} else {
    		printf("
    "); // 处理只有一个 . 的情况  
    	}
    	
    	return 0; 
    }
    

    #include<stdio.h> // 算法二
      
    int main(void)
    {
        char c;
        int cnt = 0, count = 0; //统计单词的个数 
         
        do {
        	scanf("%c", &c);
        	if ( cnt==0 && c==' ' ) {
    			continue;
    		} // 解决单词与单词之间多个空格的问题 
    		if ( cnt==0 && c=='.') {
    			break;
    		} // 解决单词与最后的'.'之间有空格的问题 
            if( c==' ' ) {
                 if ( count==0 ) {
                 	printf("%d", cnt);  //第一个单词前不加空格 
                 } else {
                 	printf(" %d", cnt);
                 }
            	 cnt = 0;
            	 count++;
            	 continue;
            } 
    		if( c=='.' ) {
                 if ( count==0 ) {
                 	printf("%d", cnt); 
                 } else {
                 	printf(" %d", cnt);
                 } 
                 break;
            }
                cnt++;
        } while ( c!='.' );
     
        return 0;
    }
  • 相关阅读:
    WebDriverException:Message:'geckodriver'executable needs to be in Path
    如何使用NSDL玩转微信跳一跳
    python多线程下载网页图片并保存至特定目录
    sql之将一个表中的数据注入另一个表中
    sql之分区域分段统计
    sql之分段统计
    ajax二次封装之异步加载
    vue组件之echarts报表
    url查询参数解析
    template.js 数据渲染引擎
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5737960.html
Copyright © 2011-2022 走看看