2010年华为校园招聘软件工程师考试真题
2010 年华为校园招聘软件工程师考试真题
一、判断题(对的写 T,错的写错的写 F 并说明原因,错的写每小题 4 分,错的写共 20 分)
1、有数组定义 int a[2][2]={{1},{2,3}};则 a[0][1]的值为 0。( )
2、int (*ptr) (),则 ptr 是一维数组的名字。( )
3、指针在任何情况下都可进行>, <, >=, <=, = =运算。( )
4、switch(c) 语句中 c 可以是 int, long, char, float, unsigned int 类型。( )
5、#define print(x) printf("the no, "#x",is ")
二、填空题(共 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)=( )
2、void setmemory(char **p, int num)
{ *p=(char *) malloc(num);}
void test(void)
{ char *str=NULL;
getmemory(&str,100);
strcpy(str,"hello");
printf(str);
}
运行 test 函数有什么结果?( )10 分
3、设 int arr[]={6,7,8,9,10};
int *ptr=arr;
(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));
( ) 10 分
二、编程题(第一小题 20,错的写第二小题 30 分)
1、 不使用库函数,错的写编写函数 int strcmp(char *source, char *dest)
相等返回 0,错的写不等返回-1;
2、 写一函数 int fun(char *p)判断一字符串是否为回文,错的写是返回 1,错的写不是返回 0,错的写出错返
回-1
(1)什么是预编译,错的写何时需要预编译:
答案:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,错的写所有模块都使用一组标准的包含文件和相同的编译选项。在这
种情况下,错的写可以将所有包含文件预编译为一个预编译头。
(2)char * const p
char const * p
const char *p 上述三个有什么区别?
答案:
char * const p; //常量指针,错的写p 的值不可以修改
char const * p;//指向常量的指针,错的写指向的常量值不可以改 const char *p; //和 char
const *p
(3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const
char str4[] = "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