设为首页 加入收藏

TOP

C++笔试试题-华为
2011-04-17 19:10:13 来源: 作者: 【 】 浏览:798
Tags:笔试 试题 华为
一、判断题
1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。(正确)
2、int (*ptr) (),则ptr是一维数组的名字。(错误 int (*ptr) ();定义一个指向函数的指针变量 )
3、指针在任何情况下都可进行>,<,>=,<=,==运算。(错误)
4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( 错,不能用实形)

二、填空题
1、在windows下,写出运行结果
char str[ ]= "Hello";
char *p=str;
int n=10;
sizeof(str)=( )
sizeof(p)=( )
sizeof(n)=( )
void func(char str[100]){ }
sizeof(str)=( )
答案:6,4,4,4
2、
void getmemory(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。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从右到左,这里先*(++ptr) 后*pt,于是结果为8,8

二、编程(www.cppentry.com)题
1、不使用库函数,编写函数int strcmp(char *source, char *dest)
相等返回0,不等返回-1;
答案:一、
int strcmp(char *source, char *dest)
{
assert((source!=NULL)&&(dest!=NULL));
int i,j;
for(i=0; source[i]==dest[i]; i++)
{
if(source[i]=='\0' && dest[i]=='\0')
return 0;
else
return -1;
}
}

答案:二、
int strcmp(char *source, char *dest)
{
while ( (*source != '\0') && (*source == *dest))
{
source++;
dest++;
}
return ( (*source) - (*dest) ) -1 : 0;
}

2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1
答案:一、
int fun(char *p)
{
if(p==NULL)
return -1;
else
{
int length = 0;
int i = 0;
int judge = 1;
length = strlen(p);
for(i=0; i{
if(p[i]!=p[length-1-i])
judge = 0;
break;
}
if(judge == 0)
return 0;
else
return 1;
}
}

答案:二、
int fun(char *p)

int len = strlen(p) - 1; 
char *q = p + len; 
if (!p) 
return -1; 
while (p < q) 
{
if ((*p++) != (*q--)) 
return 0; 

return 1;
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++笔试题小集合-华为 下一篇C++笔试题及参考答案