c++华为面试题--牛客网-1.0

面试题-华为-数组去重与排序-2 面试题-华为-数组去重与排序-2 华为的面试题比想象中简单,可能是没有遇到更复杂的题目,没有涉及数据结构与算法(o(╯□╰)o)。数组的去重可以使用python的set集实现,但是由于本人python不熟,最后还是选择使用C++实现。该面试编程题来自于牛客网,本人分享在此仅供大家学习与交流用,不担负任何法律责任。博客版权归博主所有,转载需注明出处。 阅读详情

有空开始看看牛客网的题,题目要求是输入一个字符串,得到最后一个单词的长度。

直接来代码

需要注意的是不能直接定义一个char* 然后输入,因为如果用cin输入字符串必须是一个数组

用char数组来输入也不行,因为cin 当输入空格或回车会存在输入流中。等待下次cin读取。

#include<iostream>

using namespace std;

int main()
{
	int n = 0;
	int m = 0;
	int k = 0;
	char* s;
	char arr[5000];
	cin.get(arr, 5000);
	s = arr;
//得到字符串的空格
	for (int i = 0; *(s) != '\0'; i++)
	{
		if (int(*s) == 32)
		{
			n++;
		}
		s++;
	}
	char* p = arr;
//计数空格数,如果和总的空格差一个就跳出,或者字符串没有空格就直接跳出
	for (int i = 0; *(p) != '\0'; i++)
	{
		if (n == 0)
		{
			break;
		}
		if (int(*p) == 32)
		{
			if ((n - m) == 1)
			{
				p++;
				break;
			}
			m++;
		}
		p++;
	}
//直接在最后空格后输出
	for (int i = 0; *(p) != '\0'; i++)
	{
		k++;
		p++;
	}
	cout << k << endl;
	return 0;
}

 

 

下面再来看这样一道题

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

这个题目我提交了好多次都没做对,原因在于题目有歧义,它的说法是需要输入一个字符串 然后接着输入一个字符,我理解的是输入一个字符串寻找最后的元素。。。怎么说呢 就是这样 我理解的输入时"abcd a",而实际却是

"abcd"

"a"...这谁顶的住啊

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string str;
	getline(cin,str);
	char c;
	cin >> c;
	int n = 0;
	for (int i = 0; str[i] != '\0'; i++)
	{
		if (c>='A'&&c<='Z')
		{
			if(str[i]==c||(int(str[i])-32)==c)
            {
                n++;
            }
		}
        else if(c>='a'&&c<='z')
        {
            if(str[i]==c||(int(str[i])+32)==c)
            {
                n++;
            }
        }
        else
        {
            if(str[i]==c)
            {
                n++;
            }
        }
	}
	cout << n << endl;
	return 0;
}

今天博主无聊在做了一题,又是个坑

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

博主一开始又没通过,主要是在测试多组数据,而不是就测一组,总感觉这种有点zz。。。 这题不难主要考c++的vector和sort算法,熟练掌握二者便可以得到结果。下面给出博主的代码

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int num;
	while (cin >> num)
	{
		vector<int> vec;
		vector<int> out;
		for (int i = 0; i < num; i++)
		{
			int shuzi;
			cin >> shuzi;
			vec.push_back(shuzi);
		}
		sort(vec.begin(), vec.end());
		for (int i = 0; i < vec.size(); i++)
		{
			out.push_back(vec[i]);
			if (i > 0)
			{
				if (vec[i] == vec[i - 1])
				{
					out.pop_back();
				}
			}
		}
		for (int i = 0; i < out.size(); i++)
		{
			cout << out[i] << endl;
		}
	}
	return 0;
}

 

今天博主真的很无聊,又来一题如下:

连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; 
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 

输入:连续输入字符串(输入2次,每个字符串长度小于100)

输出:输出到长度为8的新字符串数组

这个题不难 只需要用到string类的substr函数,该函数需要传递个起始位置和需要截取的长度,下面给出参考代码

#include<iostream>
#include<string>

using namespace std;

int main()
{
	string str, str1, str2, str3;
	cin >> str;
	cin >> str1;
	if (str.length() <= 8&&str.length()>0)
	{
		for (int i = str.length(); i<8; i++)
		{
			str = str + "0";
		}
		cout << str << endl;
	}
	else if (str.length()>8)
	{
		int n = str.length() / 8;
		for (int i = 0; i<n; i++)
		{
			cout << str.substr(8 * i, 8) << endl;
		}
		if ((str.length() - 8 * n) != 0)
		{
			str2 = str.substr(8 * n, str.length() - 8 * n);
			for (int i = 0; i<(8 * n + 8 - str.length()); i++)
			{
				str2 = str2 + "0";
			}
			cout << str2 << endl;
		}	
	}
	str2.clear();
	if (str1.length() <= 8&&str1.length()>0)
	{
		for (int i = str1.length(); i<8; i++)
		{
			str1 = str1 + "0";
		}
		cout << str1 << endl;
	}
	else if (str1.length()>8)
	{
		int n = str1.length() / 8;
		for (int i = 0; i<n; i++)
		{
			cout << str1.substr(8 * i, 8) << endl;
		}
		if ((str1.length() - 8 * n) != 0)
		{
			str3 = str1.substr(8 * n, str1.length() - 8 * n);
			for (int i = 0; i<(8 * n + 8 - str1.length()); i++)
			{
				str3 = str3 + "0";
			}
			cout << str3 << endl;
		}
	}
	return 0;
}

 

再来看一题:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )。此题比较简单,对于16进制,字符串的前两位0X我们忽略,直接从第三个字符开始读取,对于字符数字,我们只要将左值设为int型即可进行字符的加减运算操作。 参考代码如下:

#include<iostream>
#include<string>
using namespace std;
 
int main()
{
    string str;
    while(getline(cin,str))
    {
        if(str.length()>0)
        {
            int num=0;
            for(int i=2;i<str.length();i++)
            {
                if(str[i]>='0'&&str[i]<='9')
                {
                    num=num*16+(str[i]-'0');
                }
                else
                {
                    num=num*16+(str[i]-'A'+10);
                }
            }
            cout<<num<<endl;
        }
    }
    return 0;
}

 

再来一题。按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。这个比较简单不知为啥通过率这么低

#include<iostream>

using namespace std;

int a = 0;
void cir(long& nu)
{
	for (int i = 2;; i++)
	{
		if (nu%i == 0)
		{
			a = i;
			cout << a << " ";
			nu = nu / i;
			break;
		}
	}
}
int main()
{
	long num;
	cin >> num;
	while (num != 1)
	{
		cir(num);
	}
	return 0;
}

 

又一题,这个比较简单:写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

博主的参考代码

#include<iostream>

using namespace std;

int main()
{
    float num;
    cin>>num;
    if((num-int(num))<0.5)
       {
           cout<<int(num)<<endl;
       }
       else
       {
           cout<<int(num+1)<<endl;
       }
    return 0;
}

下面看下这一题:数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 这题不算难,博主采用自定义类然后用容器来排序

下面给出参考代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

class num
{
public:
	num();
	~num();
	int a;
	int b;
};

num::num()
{
}

num::~num()
{
}
int main()
{
	vector<num> shuru;
	vector<num> shuru1;
	vector<int> vec;
	vector<num>::iterator it1;
	int shuliang;
	cin >> shuliang;
	for (int i = 0; i < shuliang; i++)
	{
		int cur1, cur2;
		cin >> cur1;
		cin >> cur2;
		num cur3;
		cur3.a = cur1;
		cur3.b = cur2;
		if (i == 0)
		{
			vec.push_back(cur1);
			shuru.push_back(cur3);
		}
		if (i > 0)
		{
			int j = 0;
			for (int k = 0; k < shuru.size(); k++)
			{
				if (shuru[k].a == cur3.a)
				{
					j = 1;
					shuru[k].b += cur3.b;
				}
			}
			if (j == 0)
			{
				vec.push_back(cur1);
				shuru.push_back(cur3);
			}
		}
	}
	sort(vec.begin(),vec.end());
	for (int i = 0; i < vec.size(); i++)
	{
		for (int j = 0; j < shuru.size(); j++)
		{
			if (vec[i] == shuru[j].a)
			{
				shuru1.push_back(shuru[j]);
			}
		}
	}
	for (int i = 0; i < shuru1.size(); i++)
	{
		cout << shuru1[i].a << " " << shuru1[i].b << endl;
	}
	return 0;
}

再来一题:输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

博主参考代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int num;
	vector<int> vec;
	vector<int> vec1;
	cin >> num;
	while (true)
	{
		int a = num % 10;
		vec.push_back(a);
		num = num / 10;
		if (num == 0)
		{
			break;
		}
		
	}
	vec1.push_back(vec[0]);
	for (int i = 1; i < vec.size(); i++)
	{
		int cur = 0;
		for (int j = 0; j < vec1.size(); j++)
		{
			if (vec[i] == vec1[j])
			{
				cur = 1;
			}
		}
		if (cur == 0)
		{
			vec1.push_back(vec[i]);
		}
	}
	int res=0;
	for (int i = 0; i < vec1.size(); i++)
	{
		res = 10 * res + vec1[i];
	}
	cout << res << endl;
	return 0;
}

 

好,每日n题,博主又回来了,来看题目:编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

此题还是比较简单的,博主用了强转来判断ascii的不同,博主的参考代码:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
	string str;
	vector<int> vec;
	vector<int> vec1;
	cin >> str;
	for (int i = 0; i < str.size(); i++)
	{
		vec.push_back(int(str[i]));
	}
	sort(vec.begin(), vec.end());
	vec1.push_back(vec[0]);
	for (int i = 1; i < vec.size(); i++)
	{
		if (vec[i] != vec[i - 1])
		{
			vec1.push_back(vec[i]);
		}
	}
	cout << vec1.size() << endl;
	return 0;
}

 

华为直招 不限岗位 c c++ Java Js Python 深信服今年开的早呀,c➕➕,python,go,java 都给hc 了,这个月笔试,下个月面试,有兄。友友们,现在还有哪些公司有岗位,我双飞本,211硕,电子信息偏软件,秋招签了一个长沙的国企,今天突然。友友们,现在还有哪些公司有岗位,我双飞本,211硕,电子信息偏软件,秋招签了一个长沙的国企,今天突然。23年毕业,去年工作三个月,年前公司大面积裁员被裁,现在想找剪辑、运营、摄影,新媒体方向的工作,有无。找后端,前端,Unity,测试,数分,策划,产品,hr 的看过来,差人,业务还在扩张,走过路过不要错。 阅读详情

相关推荐

2024最新自动驾驶算法 实习、秋招面经(百度、美团、阿里、蔚来、理想、小米、华为……)

秋招已经结束,大大小小面了50场左右,就此开始慢慢整理一下,希望可以给看到的同学一点帮助~整理期间免费开放,整理完毕后打算设置成VIP可见,赚点小外快个人BG:双非本,985硕。主要研究方向包括激光SLAM、视觉SLAM、VIO(ps. 整个面经大致按时间线记录,前期遇到过的问题后续不再记录)(pps. 目前还在思考是光写面试问题,在问题之后还是附上我的一个不一定对的参考答案…才疏学浅,怕误导到大家。暂定先只写问题吧,一些没有标准答案的问题我也写一写我的理解,如有出错请帮忙在评论区留言哈!

jiny_yang的博客 4760

2023年华为笔试面试机考真题100道(C/C++语言)

华为面试 机考 C语言

不秃头的程序猿Gabriel的博客 3万+

华为od德科面试数据算法解析 2022-7-1 补种未成活胡杨

华为od德科面试数据算法解析 2022-7-1 补种未成活胡杨

1763

面试题

  1、如何初始化一个指针数组。   答案: 错题解析:首先明确一个概念,就是指向数组的指针,和存放指针的数组。 指向数组的指针:char (*array)[5];含义是一个指向存放5个字符的数组的指针。 存放指针的数组:char *array[5];含义是一个数组中存放了5个指向字符型数据的指针。 按照题意,我理解为初始化一个存放指针的数组,char *array[2]={“China”...

lu8631的博客 5438

华为od德科面试数据算法真题解析-专栏必看-

华为od德科面试数据算法真题解析-专栏必看-

2401

华为od德科面试数据算法解析 2022-7-10 停车场车辆统计

华为od德科面试数据算法解析 2022-7-10 停车场车辆统计

1213

华为数据分析面试100题(附答案)

28. 假设某国家没有生育限制,且该国家的夫妻生孩子会直到生到男孩为 止,在没有堕胎等情况的假定下,那么该国家在 一段时间内生下来的男孩和女孩的比重理论上应该是?抛到正面 者胜利,假如抛硬币 一 直抛到有人获胜为止,那么先抛硬币的人获胜的概率是多少?30. 已知X和Y分别服从正态分布N(4,2),N(1,3), 在 X和Y相互独立的情况下,求随机变量XY 的均值与标准差。6. SQL中,count(*)、count(字段) 、count(distinct字 段 ) 的 区 别 是 什 么。

alafaqi的博客 1万+

华为od德科面试数据算法解析 2022-6-1 IP地址转换成整数

华为od德科面试数据算法解析 2022-6-1 IP地址转换成整数

560

2021年华为c++面试题及答案

c++面试题 3.python中 tuple 和 list的区别 Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号 ( ),列表使用方括号 [ ]。 4.python 和 C++的区别,两者的应用场景有什么差别。 1、运行效率:C++ >> Python 2、开发效率:Python >> C++ 5.说一说二分法是什么,算法的思路,常见的用途 分法查找适用于数据量较大时,但是数据需要先排好顺序。 其实,部分有序也可以用二分法 6.说一说 链表和数组

mirana的专栏 3178

华为od德科面试数据算法解析 2022-7-12 太阳能板最大面积

华为od德科面试数据算法解析 2022-7-12 太阳能板最大面积

1137

华为od德科面试数据算法解析 2022-7-2 拼接URL

华为od德科面试数据算法解析 2022-7-2 拼接URL

791

c++华为面试题--牛客网-2.0

虽然现在才研一,但感觉做项目之余还是很有必要去做一些面试题的,怎么说呢,这样可以巩固下基础,毕竟自己的工作可能还是偏一些算法会导致有些地方注意不到。 好,来看这题: 描述: 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001 这题十分简单啊,大一c语言就有十分基础,来看博主参考代码: #include...

SLAM_masterFei的博客 1215

华为od德科面试数据算法解析 2022-8-1 数字反转打印

华为od德科面试数据算法解析 2022-8-1 数字反转打印

1064

华为OD面试题练习(代码题部分)

华为OD面试题练习(代码题部分) 准备面试华为外包德科,记录一下一些面试题; 华为OD面试大致分为五轮,第一轮基础面试,第二轮机试

weixin_42418589的博客 9993

华为机试(od德科)面试数据算法必备基础知识(java)

华为机试(od德科)面试数据算法必备基础知识(java)

2547

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

c++华为面试题--牛客网-3.0

越做越觉得非科班出身的艰难。。。要不还是老老实实画图去? 好吧 再来一题:给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。 给出多个名字,计算每个名字最大可能的“漂亮度” 这个就是简单的循环归类。。。找出每个字符串相同字符的个数,来看代码 ...

SLAM_masterFei的博客 1157

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

牛客网总结:动态规划

【DP专辑】ACM动态规划总结 从DFS到记忆化DFS到动态规划 DFS适合此类题目:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解。 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念...

haimianjie2012的专栏 829

Unity 数字孪生笔记1 工具介绍

前言 工欲善其事必先利其器 流程思考 数字孪生本质上一种基于实际物理数据的可视化方案,通过对接实际数据,在三维界面中展示孪生结果。 那么这个流程就很简单了。 整个流程分为三块:数据来源-》数据分析-》数据展示 输入数据 首先我们需要考虑我们能拿到什么。第一,实际物体的三维数据从哪里来,第二,实际数据怎么获取到。 模型数据 工业上常常会用到CAD模型,CAD模型具有精确、统一的特点,但是CAD不是三角面片,我们不能直接导出到Unity中,而且导入之后有很多不合理的地方,例如面片杂乱、面数过高等问题。针对这个

Thissky的专栏 1万+

如何在STM32上5分钟搞定nanopb协议传输?附完整代码示例

本文提供了在STM32微控制器上快速集成nanopb协议传输的实战指南。通过详细的步骤,从.proto文件定义、代码生成到STM32CubeIDE项目移植,帮助开发者利用nanopb这一轻量级Protocol Buffers C语言实现,在5分钟内构建高效、跨平台的嵌入式设备通信框架,并附有完整的代码示例。

jwt8token的博客 839

牛客网华为机试——合并表记录

题目描述 数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开 输出描述: 输出合并后的键值对(多行) 示例1 输入 4 0 1 0 2 1 2 3 4 输出 0 3 1 2 3 4 代码: #include<iostream> #include<cstdio&gt.

SEVENY_的博客 295

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3121
上一篇: QT为按钮添加图片以及鼠标停靠显示内容
下一篇: c++华为面试题--牛客网-2.0
SLAM_masterFei
博客等级 码龄9年 283粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值