• 华为oj 字符串最后一个单词的长度


    <img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" />
    很简单的一道题  不过作者比较笨 调了几次也只通过第一个测试 代码见楼下
    #include <iostream>
    #include <string>
    
    int main()
    {
    	char a[130];
    	fgets(a, sizeof(a), stdin);
    	int len = strlen(a);
    	int num = 0;
    	for (int i = 0;i < len - 1;i++) {
    		if (a[i] == ' '&&a[i+1]!=' '&&a[i+1]!='
    ') {
    			num = 0;
    			continue;
    		}
    		if (a[i] != ' ')
    			num += 1;
    	}
    	std::cout << num;
        return 0;
    }
    分析一下为什么会出错想了想,可能是因为没有写循环的原因,不过楼下的代码过了三道测试

    #include <iostream>
    #include <string>
    using namespace std;
    int main(void)
    {
    	string  input;
    	while (1)
    	{
    		cin >> input;
    		char ch = getchar();
    		if (ch == '
    ' || ch == EOF)
    			break;
    	}
    	cout << input.length() << endl;
    
    }

    发现这里出现了一些问题,就是当最后一位是空格的时候输入没有关闭

    得到启发,又写了一个c语言的程序

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char a[130];
        while(gets(a)){
            int len = strlen(a);
            int num = 0;
            for (int i = 0;i < len;i++) {
                if (a[i] == ' '&&a[i + 1] != ' '&&a[i + 1] != '
    ') {
                    num = 0;
                    continue;
                }
                if (a[i] != ' '&&a[i]!='	')
                    num += 1;
            }
            printf("%d
    ",num);
        }
        return 0;
    }
    
    
    
    通过,问题来了

    当最后一位是空格的时候 输出是0 ,竟然通过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!





  • 相关阅读:
    第一阶段大作业 文件上传格式
    第一阶段大作业 数据字典的修改
    设计模式 C++实现职责链模式 (顺便复习C++)
    Numpy学习
    2019版:第二章:(1)Redis 概述
    第一章:(6)Dubbo 与 SpringBoot 整合
    第一章:(5)Dubbo 监控中心
    2019版:第一章:(2)NOSQL 数据库
    2019版:第二章:(3)Redis 其他相关知识
    2019版:第一章:(1)技术发展
  • 原文地址:https://www.cnblogs.com/odin-luyu/p/5371777.html
Copyright © 2020-2023  润新知