华为机试题目菜鸟笔记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
#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
#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就是这个负数的绝对值。完毕。
#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!"); } }
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类型的非负参数
#明略科技##部门评价#双单引号区别:"字符串"、'单字符'