现在的位置: 首页 > 综合 > 正文

华为软件笔试题

2013年08月26日 ⁄ 综合 ⁄ 共 1960字 ⁄ 字号 评论关闭

一、判断题(对的写 T,错的写 F并说明原因,每小题 4分,共 20分)

1、有数组定义 int a[2][2]={{1},{2,3}}; a[0][1]的值为
0
T

2int (*ptr) [], ptr是一维数组的名字。F

3、指针在任何情况下都可进行>, <, >=, <=, = =运算。F

4switch(c)语句中 c可以是 int, long,char, float, unsigned
int
类型。F

5#define print(x) printf(the no,#x,is)T

二、填空题(共 30分)

1、在 windows下,写出运行结果,每空 2分,共 10分。

char str[ ]=
Hello;

char *p=str;

int n=10;

sizeof(str)=()

sizeof(p)=( )

sizeof(n)=()

void func(char str[100]) {}

 sizeof(str)=( )

【答案】6444

2void setmemory(char **p, int num)

{

*p=(char *) malloc(num);

}

void test(void)

{

char *str=NULL;

getmemory(&str,100);

strcpy(str,hello);

printf(str);

} 运行 test函数有什么结果?

【答案】 //hello

3、设 int arr[]={6,7,8,9,10};

int *ptr=arr;

(ptr++)+=123;

printf(%d,%d,*ptr,*(++ptr));

【答案】/*8,8*/

二、编程题(第一小题 20,第二小题 30分)

1、不使用库函数,编写函数 int strcmp(char *source,char *dest)相等返回 0,不等返回-1

/*

int strcmp(char *source, char *dest){

       if(source==NULL||dest==NULL)

              return-1;

       while(*source++==*dest++)

              if(*source!=’\0’&&*dest!=’\0’) return 0;

       return-1;

}

2写一函数
int fun(char *p)
判断一字符串是否为回文,是返回 1,不是返回
0
,出错返回-1

// EX_EXAM.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int fun(char *p)
{
	if (p==NULL)
		return -1;
	int n=strlen(p);
	int i;
	for (i=0;i<=n/2-1;i++)
	{
		if (p[i]!=p[n-1-i])
			return 0;
	}
	return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
	cout<<fun(0)<<endl;
	return 0;
}

1)什么是预编译,何时需要预编译:

【答案】1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

2char * constpchar const *p
const char *p上述三个有什么区别?

【答案】 char * const p; //常量指针,p的值不可以修改 charconst * p//指向常量的指针,指向的常量值不可以改
const char *p
// char const *p

3char str1[] ="abc";

char str2[] ="abc";

const charstr3[] = "abc";

const charstr4[] = "abc";

const char *str5= "abc";

const char*str6 = "abc";

char *str7 ="abc";

char *str8 ="abc";

cout < <( str1 == str2 ) < < endl;

cout < <( str3 == str4 ) < < endl;

cout < <( str5 == str6 ) < < endl;

cout < <( str7 == str8 ) < < endl;

结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

4)以下代码中的两个sizeof用法有问题吗?

[C ] void UpperCase( char str[] ) // str
中的小写字母转换成大写字母 { for( size_t i=0; i (Y)?(Y):(X)) //结尾没有‘;’

 10。嵌入式系统中经常要用到无限循环,你怎么用 C编写死循环。答案: while(1){}或者
for(;;)

 

抱歉!评论已关闭.