zoukankan      html  css  js  c++  java
  • 华为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 ,竟然通过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!





  • 相关阅读:
    夏普比率(Sharpe Ratio)
    资管产品与信托产品区别
    通道业务是什么业务?怎么做到为银行做资产从表内到表外的流动性搬运?
    什么是MBS,ABS和CDO
    Oracle的OFA架构
    oracle-TNS是什么?
    Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
    oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件
    linux下安装oracle
    金融人物
  • 原文地址:https://www.cnblogs.com/odin-luyu/p/5371777.html
Copyright © 2011-2022 走看看