算法、项目编程中的遇到的困惑(一)


1. getline的头文件是?(提示找不到函数)

  • 事实上问题是getline函数的参数写漏了
    解答:
    函数在头文件中 getline函数与cin.getline()函数有区别。
    一般用法:
string t;
getline(cin,t);

2. 在编程过程中所有的变量最好都初始化

不然都是系统自动分配的数值,一个不小心很容易留下莫名的bug。

3. 程序要求不区分大小写

首先事实上在ASII码上大小写的值肯定是不一样的。如果要求不区分,就得在程序中设计。

  • 一、手撸C++代码实现 判断ASII码区间并进行加减实现大小写转换
  • 二、用c++的string类库函数 islower()/isupper()能够直接判断大小写,然后用tolower/toupper可以实现大小写转换
  • 同理,isdigit()可以判断是否为数字
  • 手撸的话:A-Z:65~90 a-z: 97-122 0-9:

4. 查找重复子串

华为一道机考题中隐含了一道这个字符串的小题

  • 解答:

5.类成员初始化列表

原以为初始化列表是在实例化的时候使用,其实是在类成员函数声明与实现的时候使用。

class test
{
public:
test():a(0),b(1),c(2)
private:
int a;
int b;
int c;
}

6.做华为机试模拟类的题目时,需要先思考一个好的数据结构

一个好的数据结构很重要。所以如果发现是模拟题的话,最好是先认真思考一下要用
什么自定义的数据结构再动手。

7.程序中要判断同时的否定情况(逻辑上的否定)的话,应该用且还是或?

比如说:
字符为空格 换行都是不想要的

if(input == ‘ ’ || input == ‘/n’)
{
  
}

ps. 现在脑袋清晰了一点,应该是要用或的 与否不否定情况并无关系。

8.类中声明的vector实例化但不初始化(即默认构造),大小(size)为多少,有无成员?

9.vector clear完之后empty的结果是?

vector是clear不是clean
vector是clear不是clean
vector是clear不是clean

  • 结果是clear完之后成员数目会减少,empty的结果也是1(即为空)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int> a(10,5);
	cout << a.size() << endl;
	cout <<"empty: " << a.empty() << endl;
	a.clear();
	cout << a.size() << endl;
	cout <<"empty: " << a.empty() << endl;
	return 0;
 } 
测试结果:
10
empty: 0
0
empty: 1

10.题目要求有多行输入的时候如何才能够每行都有处理到?

  1. 用while(getline(cin,s))
#include <iostream>
#include <vector>
#include <string>
using namespace std; 
int main()
{
	string in;
	while(getline(cin,in));
	cout << "finish" << endl;
	return 0; 
}

结果是他永远在等待读取,不会跳出while(循环)。

也许在算法题中他只评定你的输出有多少,不在乎你的程序是否还在等待

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/276681.html

(0)
上一篇 2022年7月24日
下一篇 2022年7月24日

相关推荐

发表回复

登录后才能评论