华为 2015 笔试题练习

1.2015 华为

(1):


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stddef.h>

int cmp(const void *a, const void *b)
{
	return *(int*)a - *(int*)b;
}

int main()
{
	char strIn[4096] = {‘\0‘};
	char strTemp[4096] = {‘\0‘};
	int numResult[4096] = { 0 };
	int sizeIn;
	int resultCount = 0; //结果数组索引
	static int count = 0; //连续的数字计数

	while( gets(strIn) != NULL)
	{

		sizeIn = strlen(strIn); //取得输入的字符串的大小,包括最后的结束符
		if(sizeIn != 0)
		{
			//取得整形数组
		for(int i =0; i < sizeIn;)
		{
			//取得整数
			if(strIn[i] >= ‘0‘ && strIn[i] <= ‘9‘)
			{
				strTemp[count] = strIn[i];
				count++;
			}
			else //遇到非数字
			{
				if(count != 0) //如果有数字,则取出来
				{
					//将得到的字符串转换成整形
					numResult[resultCount++] = atoi(strTemp);
					memset(strTemp, 0, 4096);
					count = 0;
				}
			}
			i++;
		}
		if(count != 0) //取得最后的整数
		{
			numResult[resultCount++] = atoi(strTemp);
			count = 0;
		}
		qsort(numResult, resultCount, sizeof(int), cmp);
		for(int i = 0; i < resultCount - 1; i++)
		{
			printf("%d ", numResult[i]);
		}
		printf("%d", numResult[resultCount - 1]); //打印最后一个元素
		printf("\n");
		resultCount = 0;
		count = 0;
		memset(strIn, 0, 4096);
		memset(strTemp, 0, 4096);
		memset(numResult, 0, 4096);
		}
	}
}

  

附:快速排序使用方法

C标准库快速排序:http://blog.csdn.net/masibuaa/article/details/5633498

C++快速排序:http://blog.csdn.net/zzzmmmkkk/article/details/4266888

时间: 2024-10-12 19:01:23

华为 2015 笔试题练习的相关文章

去哪儿2015笔试题:寻找字符串的差异

去哪儿的一道笔试题. 给定两个字符串a,b:找出两个字符串中不一样的字符串.如存在于a而不存在于b,则将该字符输出,同时.加一个"-"标记:若存在于b而不存在于a,则输出该字符,同时以"+"标记.若是同时存在于a.b中,则不输出.假设字符串是由字母组成. 如: a="abc",b="aabcbc",则输出为"+a,+b,+c": a="abcde",b="bcdef"

2015年校招--华为上机笔试题--大数相乘

#include "stdafx.h" #include<string> #include<iostream> using namespace std; void add(string &sum,string temp) { int len1=sum.size(); int len2=temp.size(); int jw=0; int i,j; for(i=len1-1,j=len2-1;i>=0 && j>=0;i--,j

2015年校招--华为上机笔试题--去重复单词

#include "stdafx.h" #include<set> #include<string> #include<iostream> using namespace std; int main() { set<string> s; char buf[1000]={0}; gets(buf); char* p=buf; while(*p!=0) { if(*p==',' || *p=='.') { *p=' '; } p++; } p

去哪儿2015笔试题JAVA实现

第一题代码: 分析:将字符数组中的每个字符串,找出其中最长的那个与字符数组中长度进行比较: a.当最长的字符串的长度大于等于字符数组的长度时,直接输出 b.当最长的字符串的长度小于字符数组的长度时,找出该长度下整数值最大的那个字符串,在前面部0输出 package com.njupt; public class Heia { public String MaxLength(String[] string){ int max=Integer.valueOf(string[0]); int inde

阿里2015笔试题

分析:js有两种类型,基本数据类型和引用类型,数组是引用类型,执行第二行不仅仅是赋值,array2还生成了一个指针指向array1,也就是array2引用了array1,不管array1.array2其中有一个改变时,两个数组都会改变,执行第二行后array2和array1都等于[1,2],执行第三行后array1和array2都变为[2,2],执行第四行后,array1和array2都变为[2,2,3] 这题不用说,送分题,肯定没有float 其实做题的时候不是特别理解,但还是知道有‘重排‘这

趋势科技2015笔试题-南京

传说中的华为Python笔试题——两等长整数序列互换元素,序列和的差值最小(修正)

有两个序列a,b,大小都为n,序列元素的值任意整形数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小. 1. 将两序列合并为一个序列,并排序,得到sourceList2. 拿出最大元素Big,次大的元素Small3. 在余下的序列S[:-2]进行平分,得到序列max,min4. 将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min. 如下,提供递归版本和迭代版本的解体思路: #!/usr/bin/env py

华为算法笔试题

#include <vector> #include <iostream> using namespace std; int main() { int k; cin>>k; vector<vector<int> > arr; vector<int> a; int tmp; while(cin>>tmp){ int i=0; if(arr.size()<i+1) arr.push_back(a); arr[i].pus

华为往年笔试题【去重和排序】【vertor二维数组,迭代器】

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