• 《牛客网》——华为机试在线训练(1-3)


    1、字符串最后一个单词的长度

    题目描述

    计算字符串最后一个单词的长度,单词以空格隔开。

    输入描述:

    一行字符串,非空,长度小于5000。

    输出描述:

    整数N,最后一个单词的长度。

    示例1

    输入

    复制
    hello world

    输出

    复制
    5

    代码:
    #include <iostream>
    #include <string.h>
    //#include <strsafe.h>
    #include <stdio.h>
    #include <cstdio>
    
    #define MAX_BUFF_SIZE 5000
    int main()
    {
        char InputBuff[MAX_BUFF_SIZE] = {0};
        //scanf("%s", InputBuff);
        gets(InputBuff);
        if(strlen(InputBuff) > 5000)
        {
            return 0;
        }
        
        int nLen = strlen(InputBuff);
        
        while(InputBuff[nLen - 1] != ' ' && nLen > 0)
        {
            nLen--;
        }
        
        //printf("%s", InputBuff + nLen);
        printf("%d", strlen(InputBuff) - nLen);
        return 0;
    }
    2、计算字符个数

    题目描述

    写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。

    输入描述:

    第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。

    输出描述:

    输出输入字符串中含有该字符的个数。

    示例1

    输入

    复制
    ABCDEF
    A

    输出

    复制
    1
    代码:
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    #define MAX_BUFF 0x500
    
    int main()
    {
        char szInput[MAX_BUFF] = {0};
        char cInput = 0;
        int nLen = 0;
        int nCnt = 0;
        scanf("%s", szInput);
        nLen = strlen(szInput) - 1;
        getchar();
        cInput = getchar();
    
        while(nLen >= 0)
        {
            if('a' <= szInput[nLen] && szInput[nLen] <= 'z')
            {
                if(szInput[nLen] == cInput || szInput[nLen] == cInput - ('A' - 'a'))
                {
                    nCnt++;
                }
            }
            else if('A' <= szInput[nLen] && szInput[nLen] <= 'Z')
            {
                if(szInput[nLen] == cInput || szInput[nLen] == cInput + ('A' - 'a'))
                {
                    nCnt++;
                }
            }
            else if(szInput[nLen] == cInput)
            {
                nCnt++;
            }
    
            nLen--;
        }
    
        printf("%d", nCnt);
        return 0;
    }
    3、明明的随机数

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。



    Input Param

    n               输入随机数的个数

    inputArray      n个随机整数组成的数组


    Return Value

    OutputArray    输出处理后的随机整数



    注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。



    输入描述:

    输入多行,先输入随机整数的个数,再输入相应个数的整数

    输出描述:

    返回多行,处理后的结果

    示例1

    输入

    复制
    11
    10
    20
    40
    32
    67
    40
    20
    89
    300
    400
    15
    

    输出

    复制
    10
    15
    20
    32
    40
    67
    89
    300
    400
    
    代码:
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        int nTotal = 0;
        int nCnt = 0;
        int nPos = 0;
        int nInserted = 0;
        int *szInput = NULL;
    
        scanf("%d", &nCnt);
        if(nCnt < 1 || nCnt > 1000)
        {
            return 0;
        }
    
        nTotal = nCnt;
        szInput = new int[nCnt];
        if(!szInput)
        {
            return 0;
        }
    
        while(nCnt-- > 0)
        {
            int nTmp = 0;
            int nInsertPos = 0;
            int nFlag = 0;
            scanf("%d
    ", &nTmp);
    
            for(int i = 0; i < nInserted; i++)
            {
                if(szInput[i] == nTmp)
                {
                    nFlag = 1;
                    break;
                }
                
                if(szInput[i] > nTmp)
                {
                    nInsertPos = i;
                    break;
                }
    
                nInsertPos++;
            }
            
            if(nFlag)
            {
                continue;
            }
    
            if(nInsertPos < nInserted)
            {
                for(int i = nInserted - 1; i >= nInsertPos; i--)
                {
                    szInput[i + 1] = szInput[i];
                    //nInserted++;
                }
            }
            
            szInput[nInsertPos] = nTmp;
            nInserted++;
        }
        //printf("----------------result---------------
    ");
        int j = 0;
        while(j < nInserted)
        {
            printf("%d
    ", szInput[j++]);
        }
        
        //system("pause");
        return 0;
    }










  • 相关阅读:
    Java线程面试题 Top 50
    深入理解java内存模型
    线程池的理解
    Thread的理解
    ThreadLocal的理解
    排序算法(简)
    排序算法
    【Java集合源码剖析】LinkedHashmap源码剖析
    vsftp上传文件权限问题
    xp 通过注册表修改环境变量
  • 原文地址:https://www.cnblogs.com/predator-wang/p/11832864.html
Copyright © 2020-2023  润新知