笔试数组输入模板

Posted zdtiio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔试数组输入模板相关的知识,希望对你有一定的参考价值。

  IT笔试中算法题属于必备,为了几句输入代码浪费时间实在不应该,大家也都是从一开始就常常使用输入输出写简单的程序。

  一般情况下笔试中的输入很符合常理,让你接受几个数字或其他变量。但是常常会有让你接受数组的情况。

  在数组的情况中,一般会事先给你一个数字标示数组大小然后告诉你每个数是多少。在二般的情况下则直接告诉你数组内容是什么。

 

  众所周知,Java支持动态数组,C++中又可以使用vector容器,Python本人不懂但也可以。C语言这个很尴尬,用指针也是可以变相实现动态数组的,但是本身自带的库函数相对少,用来做笔试题有些尴尬。

1、 一般情况

 

  给你两行数,或者一行数,前几个数中有数组的大小。形如:

3             //数组大小
4 5 6         //数组内容

1.1 Java

1.1.1 Java动态数组

在Java中因为支持动态数组,所以在一般情况下,先定义一个接受数组大小的变量,而后建立动态数组。

 1 package com.zdt.com;
 2 
 3 import java.util.Arrays;
 4 import java.util.Scanner;
 5 
 6 public class main {
 7 
 8     public static void main (String args[]){
 9             Scanner scanner=new Scanner(System.in);
10             int m=scanner.nextInt();
11             int[] v = new int[m];
12             for(int i =0; i<v.length;i++){
13                 v[i]=scanner.nextInt();
14             }
15             scanner.close();
16         }
17 }

 

1.2 C++

  在C++中虽然支持vector容器,但是不支持动态数组的,所以我们有两种思路来解决。

1.2.1 C++动态数组实现

  利用指针构建动态数组,如果有兴趣看动态数组可以看这篇博客学习下。http://blog.csdn.net/bzhxuexi/article/details/17230073

1.2.2 C++ vector实现

  利用输入控制接收数组元素进入vector容器。

  vector容器并不需要事先定义大小,每次新建一个vector时都会先在内存中分配一块内存,在存储元素时,使用push_back即可从最后插入元素,如果这块内存不够时会分配给它新的更大的一块儿内存,将原来的元素复制过去后继续使用。

 1 #include "stdafx.h"
 2 #include <iostream>
 3 #include <vector>
 4 using namespace std;
 5 
 6 int _tmain(int argc, _TCHAR* argv[])
 7 {
 8     int num;
 9     cin >> num;
10     vector<int> nums;
11     int temp_num;
12     for (int i = 0; i < num; i++)
13     {
14         cin >> temp_num;
15         nums.push_back(temp_num);
16     }
17     return 0;
18 }

喜欢用vector实现也是因为vector也有好多函数可以用。

 

2、 二般情况

直接是数组的内容。

1 2 3 4 5 6             //数组内容

 

2.1 Java

2.1.1 Java输入控制

  在二般情况下,我们不知道数组大小是多少,所以我们只能根据行来接收,一行为一个数组内容,一般为空格隔开

2.2 C++

2.2.1 C++输入控制

  本方法参照的是博客:http://blog.csdn.net/ldz1943/article/details/46311059

 1 #include "stdafx.h"
 2 #include <iostream>
 3 #include <vector>
 4 using namespace std;
 5 
 6 int _tmain(int argc, _TCHAR* argv[])
 7 {
 8     int temp_num;
 9     char temp_ch;
10     vector<int> nums;
11     while ((temp_ch = cin.get()) != \n)
12     {
13         cin.putback(temp_ch);
14         cin >> temp_num;
15         nums.push_back(temp_num);
16     }
17     return 0;
18 }

 

以上是关于笔试数组输入模板的主要内容,如果未能解决你的问题,请参考以下文章

华为笔试-字符串分割

vs 2010代码片段

vs 2010代码片段

C++ 带逗号输入数组(大厂笔试输入出现多次)

C++ 带逗号输入数组(大厂笔试输入出现多次)

C++ 带逗号输入数组(大厂笔试输入出现多次)