免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zh_manyu
打印 上一主题 下一主题

上周5华为无线面试的3道编程题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-09 17:01 |只看该作者
char * strncpy(char * dest, const char * src, int count)
{
        char *p=dest;
        if(count!=0)
        {
                while((*p++=*src++)!=0)
                {
                        if(--count==0)
                        return (dest);
                }
                while(--count>0)  /*如果串src的长度小于 count,则剩下的用0填充 PS:根据strncpy的定义来的*/
                *p++='';
        }
        return (dest);
}

论坛徽章:
0
12 [报告]
发表于 2005-11-09 17:06 |只看该作者
3

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. main()
  4. {
  5. int i,j,n,tmp;
  6. int a[10]={0};
  7. printf("please int put yournumber:");
  8. for(i=0;i<10;i++)
  9.       scanf("%d",&a[i]);
  10. for(i=0;i<10;i++)
  11.    for(j=i+1;j<10;j++)
  12.         if(a[i]>a[j])
  13.           {
  14.           tmp=a[i];
  15.           a[i]=a[j];
  16.           a[j]=tmp;
  17.           }
  18. for(i=0;i<10;i++)
  19.     printf("%dn",a[i]);
  20. }
复制代码

论坛徽章:
0
13 [报告]
发表于 2005-11-09 17:16 |只看该作者
楼上的代码有误,而且效率不是很高,外层循环应该是9次,另外可以设个变量记录某一遍的比较是否有元素移动,没有的话就可以结束循环。

论坛徽章:
0
14 [报告]
发表于 2005-11-09 19:26 |只看该作者
楼上能否贴一个高效代码?

论坛徽章:
0
15 [报告]
发表于 2005-11-09 19:50 |只看该作者

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. main()
  4. {
  5. int i,j,n,tmp;
  6. int a[10]={0};
  7. printf("please int put yournumber:");
  8. for(i=0;i<10;i++)
  9.       scanf("%d",&a[i]);
  10. for(i=0;i<9;i++)
  11.    for(j=i+1;j<10;j++)
  12.         if(a[i]>a[j])
  13.           {
  14.           tmp=a[i];
  15.           a[i]=a[j];
  16.           a[j]=tmp;
  17.           } else {
  18.           continue;
  19.            }
  20. for(i=0;i<10;i++)
  21.     printf("%d\t",a[i]);
  22. }
复制代码

这样可不可以?

论坛徽章:
0
16 [报告]
发表于 2005-11-09 20:18 |只看该作者
原帖由 黑苦咖啡 于 2005-11-9 14:18 发表
楼主,这个周末我要去面试,刚好也是无线部,能不能再回忆几题啊,尽量详细点,谢谢了!



第一题是 switch(c)中的c不能是什么类型 A)int B)unsigned C)long D)double


改错题 有道是考 字符串存储结尾会有个"\0"
都很基础的 其他的都记不起来了

论坛徽章:
0
17 [报告]
发表于 2005-11-09 20:22 |只看该作者
原帖由 xujunxp 于 2005-11-9 15:41 发表
华为的口碑很差吧,所谓的“狼文化”


也不是的其实研发的环境大部分都是不错的我很多朋友在里边都过的不错

没事不要去惹干部部的人就OK了

华为也有小人 不过不多

论坛徽章:
0
18 [报告]
发表于 2005-11-09 20:33 |只看该作者
原帖由 大司南 于 2005-11-9 16:27 发表
1.

  1. char strncpy(char *des_prt,const char *src_prt,size_t n)
  2. {
  3.    char *tmp=des_prt;
  4.    while(n-- && *des_prt++ =*src_prt++ != '');
  5.    return tmp;
  6.   }
复制代码



1.函数类型有问题
2.while(n-- &&( *des_prt++ =*src_prt++ )!= '');这样语法对了不过和题目不符

看下 黑苦咖啡 的代码

[ 本帖最后由 zh_manyu 于 2005-11-9 20:35 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2005-11-09 20:41 |只看该作者
还有第2题我觉得有必要判断下 des_prt+n是否越界

我是这样想的 if( des_prt+n>(char *)-1) 不知道对不对 如果不对应该怎么去判断 望高手解答

论坛徽章:
0
20 [报告]
发表于 2005-11-09 20:56 |只看该作者
我也参加过,考了数据结构,用数组模拟堆栈的特点,还考了函数f(a,b,c)中a,b,c的出栈和入栈顺序,函数的返回值放在什么寄存器中,还有判断堆栈溢出的一个题,其余的一时想不起来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP