免费注册 查看新帖 |

Chinaunix

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

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

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

论坛徽章:
0
22 [报告]
发表于 2005-11-09 21:37 |只看该作者
原帖由 大司南 于 2005-11-9 19:50 发表
[code]
#include <stdio.h>
#include <stdlib.h>

main()
{
int i,j,n,tmp;
int a[10]={0};
printf("please int put yournumber:");
for(i=0;i<10;i++)
      scanf("%d ...

可以明确的告诉你,这个也不可以.如果你输入的数据像这样子:10,9,8,7,6,5,4,3,2,1,倒是可以得出正确结果.

论坛徽章:
0
23 [报告]
发表于 2005-11-10 08:31 |只看该作者
我只考虑了输入数字情况...

学习了...

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

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



大牛们 斑竹们 给俺说说吧 俺真的很想知道

论坛徽章:
0
25 [报告]
发表于 2005-11-10 16:46 |只看该作者

3.输入10个数冒泡排序,打印.



  1. #include <stdio.h>
  2. int sortp(int a[],  int );

  3. int sortp(int a[],  int N)
  4. {
  5.         int i,j ,temp;
  6.             for( j=0 ; j < N-1 ; j++ )
  7.                         for(i=0 ; i < N-j ; i++ )
  8.                                 if(a[i] > a[i+1])
  9.                                         {
  10.                                                 temp = a[i]; a[i] = a[i+1]; a[i+1] = temp;
  11.                                         }
  12.                        
  13.                 printf("the result is: n");
  14.                
  15.                 for(i=0; i< N; i++)
  16.                                 printf("%d",a[i]);
  17.                        
  18.                         return 0;
  19. }
  20. int main(void)
  21. {
  22.    
  23.         int i,a[10];
  24.        
  25.         for(i=0; i<10; i++)
  26.           scanf("%d",&a[i]);
  27.        
  28.         printf("n");
  29.         sortp(a,10);
  30.         return 0;

  31. }
复制代码

论坛徽章:
0
26 [报告]
发表于 2005-12-20 21:37 |只看该作者
mark

论坛徽章:
0
27 [报告]
发表于 2005-12-20 22:04 |只看该作者
原帖由 大司南 于 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++ != '\0');
  5.    return tmp;
  6.   }
复制代码

你这不对的,你要copy n个size_t倒也好,这时候和'\0'有什么关系呢?内存里边的数据不一定是指字符串,如果这块内存本来就是0,那你不就结束在这里了?

还有就是如果这两段内存有重合该怎么办?

论坛徽章:
0
28 [报告]
发表于 2005-12-21 11:15 |只看该作者

回复 10楼 大司南 的帖子

啊??

  1. int
  2. vatoi(const char *s)
  3. {
  4.    int sign = 1, sum;

  5.    while (isblank(*s))
  6.        s ++;

  7.    if (s[0] == '-' || s[0] == '+') {
  8.       if (s[0] == '-')
  9.         sign = -1;
  10.       s ++;
  11.    }
  12.    
  13.    for (sum = 0; s[0] && isdigit(s[0]); s ++)
  14.       sum = 10 * sum + s[0] - '0';

  15.    return (sum * sign);
  16. }

复制代码

[ 本帖最后由 ivhb 于 2005-12-21 11:19 编辑 ]

论坛徽章:
0
29 [报告]
发表于 2005-12-21 11:46 |只看该作者
拷贝那题,感觉提到4G寻址空间大概是提示可以一次操作32bit吧
先拷n%4个char,然后拷n/4个long
既然给出了n,我想也不应该见到'\0'就停止
再就是考虑内存块重叠,dest>src && dest<src+n这种情况要倒着拷
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP