华为机试题目菜鸟笔记C++&Java

1.

#include<bits/stdc++.h>//万能头文件
using namespace std;
int main(){
    string s;
    while(cin >> s);
    cout << s.size();
    return 0;
}
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}
  • cin输入的机制,有空格会停止,系统把空格作为数据间的分隔符,整个英文句子会一个单词一个单词的读。非常巧妙的使用了cin的读取逻辑。
  • cin.getline()接收字符串,可以输入空格并输出。
  • https://baike.baidu.com/item/cin/23384763?fr=aladdin
  1. #include<bits/stdc++.h>
    using namespace std;
    int main() {
     string s;
     getline(cin, s);//输入字符串
     char c = tolower(getchar());//字符小写
     uint16_t n = 0;
     for (auto i : s) {        //简单理解为 从第一个字符遍历
         if (tolower(i) == c) {
             ++n;
         }
     }
     cout << n << endl;
    }
    class HelloWorld {
     public static void main(String[] args) {
         System.out.println("Hello, World!"); 
     }
    }
    • tolower()是一种函数,功能是把字母字符转换成小写,非字母字符不做出处理。
    • getchar()函数的作用是从计算机终端(一般为键盘)获取一个无符号字符。
      typedefint int16_t;
      typedef unsigned int uint16_t;
    • uint16_t 这些数据类型中都带有_t, _t 表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。使用的原因:方便代码的维护。
    • https://blog.csdn.net/xiejingfa/article/details/50469045

3.HJ3 明明的随机数

#include<bits/stdc++.h>
int main(){
    int n;
    int a;
   //以数组下标来存储随机数,下标对应的数组值为1,来说明是否是存储的随机数
    while(~scanf("%d",&n)){//while(~scanf("%d",&n))<=>  while(scanf("%d",&n)!=EOF)
        int count[1001]={0};
        int i;
        for(i=0;i<n;i++){
            scanf("%d",&a);//&:引用或者指针、
            count[a]=1;
        }
        for(i=0;i<1001;i++){
            if(count[i]==1){
                printf("%d\n",i);
            }
        }
    }
    return 0;
}
}
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

while(~scanf("%d",&n)) <=> while(scanf("%d",&n)!=EOF)

-1在内存中:1111 1111(八个一),原理如下:设(1111 1111)为原码,如果要想知道原码的十进制数是多少,需要做一下处理。

先判断:当最高位是0时,表示正数,正数的原码=反码=补码当最高位为1时,表示负数,负数的原码取反为反码,然后反码加一为补码,补码就是这个负数的绝对值。
,第一步,取反;最高位为符号位,把(1111 1111)取反就为反码(0000 0000)8个0,
第二步,反码加一;加1等于(0000 0001),这儿等到的(0000 0001)就是(1111 1111)的补码,补码(0000 0001)的十进制是1,这儿的1就是这个负数的绝对值。完毕。

4HJ4 字符串分隔.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string str;
    while (cin >> str)
    {
        // 补0
        int len = str.size();
        if (len % 8 != 0)
        {
            int count = 8 - len % 8;
            str.append(count, '0');//添加几个相同的字符:
        }

        // 按格式输出
        int newLen = str.size();
        for (int i = 0; i < newLen; i += 8)
        {
            cout << str.substr(i, 8) << endl;//从i开始输出8个长度的字符串
        }
    }
    return 0;
}
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

-C++ string append方法的常用用法

value = atoi(dateStr.substr(i, 2).c_str());

里面包含三个函数,分别是atoi(),substr(),c_str().

百度:

atoi()函数原型为: int atoi(char str),用途是将字符串转换成一个整数值,str是待转化成整数值的字符串.成功则返回转化后的整数值,失败返回0.
substr()函数原型为:basic string::substr(string,start,length),也可把string移到外面,为string &a,a.substr(start,length),其中a是待截取的字符串,start表示从截取开始的前一位,length表示截取长度,例如string &a="hello world",则a.substr(6,5)=world.
c_str()函数原型为:const char *c_str(),如果要将string对象,转化为char
对象,c_str()提供了这样一种方法,它返回一个客户程序可读不可改的指向字符数组的指针。

所以value=atoi(dateStr.substr(i,2).c_str())的作用就是,截取string型的对象dateStr,从第i个字符截取2个长度的,并转化为char*对象,然后将此字符串转换成一个整数值,赋值给value(value是int型).

5.HJ5 进制转换

#include<bits/stdc++.h>
using namespace std;
int main() {
    string str;
    while (cin >> str) {
        cout << stoi(str, 0, 16) << endl;
    }
}
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}
print('Hello world!')

stoi()表示将字符串转换为整数 ,它是C ++ STL中的标准库函数,用于将各种格式(例如二进制,八进制,十六进制或字符串格式的简单数字)的给定字符串转换为整数。

句法:int stoi(字符串,起始位置,n进制),将 n 进制的字符串转化为十进制

6.HJ6 质数因子

质数/素数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

质数因子:质因子(或质因数)在数论里是指能整除给定正整数的质数。根据算术基本定理,不考虑排列顺序下,每个正整数都能够以唯一的方式表示成它的质因数的乘积。下面求解某一个数的质因子的情况。

C ++中的sqrt(x)函数返回数字的平方根。x为int、double、float类型的非负参数

双单引号区别:"字符串"、'单字符'

#明略科技##部门评价#
全部评论
请问你入职了吗 上海的明略怎么样?加班严重不
点赞 回复 分享
发布于 2021-04-12 10:27

相关推荐

11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务