51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2045|回复: 20
打印 上一主题 下一主题

有没有兴趣写几个程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-26 10:07:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 写一个 memset() 函数,要求能够对连续的内存空间赋值。

2. 写一个 strcmp(char *s1,char *s2) 函数,要求能够比较2个字符串。如果2个字符串相同,则返回 0;
    若 s1>s2 返回 1;
    若 s1<s2 返回-1;

3. 写一个strcpy(char *s1, char *s2) 函数,要求能够将 s2 复制到 s1.


有兴趣的可以写一下,如果觉得编程能力不强,可以帮忙写一下驱动。
大家感兴趣的话,请参与一下。

[ 本帖最后由 seifer1754 于 2007-7-26 19:48 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-7-26 15:38:51 | 只看该作者
顶一下,同学们来写写看啊~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-7-26 15:43:02 | 只看该作者
还是肚子老师给面子。

同学们对编程的热情都不高,等明天我把自己写的贴上来吧。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-7-26 15:43:49 | 只看该作者
表急

我找十个同学来写~

写完了你再贴~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-26 15:48:14 | 只看该作者
我也来了。可是娃8会哦,what a pity~~~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-7-26 16:00:30 | 只看该作者
int   strcmp   (   s1,   s2)   
                                       unsigned   char   *s1;   
                                       unsigned   char   *s2;   
                       {   
                                       int   ret   =   0   ;   
     
                                       while(   !   (ret   =   *s1   -   *s2)   &&   *s2)   
                                                      ++s1,   ++s2;   
     
                                       if   (   ret   <   0   )   
                                                       ret   =   -1   ;   
                                       else   if   (   ret   >   0   )   
                                                       ret   =   1   ;   
                                       else   ret=0;  
                                       return(   ret   );   
                       }
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-7-26 16:09:58 | 只看该作者
strcpy(char * s1, const char * s2) {
                char * cp = s1;
                while( *cp++ = *s2) ;
                return(s1 );
}
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-7-26 16:23:05 | 只看该作者
void   *   memset(void   *   s,char   c,size_t   count)   
   {   
                    char   *xs   =   (char   *)   s;   
      
                    while   (count--)   
                                    *xs++   =   c;   
     
                 return   s;   
}
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-7-26 16:36:44 | 只看该作者
void* memset(void* s, int c, size_t n)
{
    unsigned char* p = (unsigned char*) s;

    while (n > 0)
  {
    *p++ = (unsigned char) c;
    --n;
    }

    return s;
}
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-7-26 17:10:18 | 只看该作者
int strcmp(char *s1,char *s2)

{ int i=0;

  while(*(s1+i)==*(s2+i))

    if(*(s1+i++)=='\0')

      return(0);   

  while(*(p1+i)-*(p2+i))  
   
{  if ((*(p1+i)-*(p2+i))>0)  return 1;
   else return -1;}

}
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-7-26 17:22:54 | 只看该作者
strcpy(char *s1, char *s2)
{

  char   *tmp=s1;  
  while   (*s1++=*s2++);   
          return   tmp;   

}
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-7-26 18:01:03 | 只看该作者
开发面试的基础题..不感兴趣
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-7-26 18:11:28 | 只看该作者
int * memset(char * p,char val,int m_length)
{
  
   if (p==NULL||m_length<0)        //判断指针是否初始化
    {prinf("ERROR!");
     return(0);      //赋值失败返回"0"
    }
   else
     while(m_length>0)
     *p++=val,m_length--;
     return(1);   //赋值成功返回"1"
}

int strcmp(char *s1,char *s2)      //相当返回 0; s1>s2 返回 1; s1<s2 返回-1;
{  while(*s1==*s2&&*s1!='\0'&&*s2!='\0')
     s1++,s2++;

   if(*s1=='\0'&&*s2=='\0')
   return(0);
   else if(*s1=='\0')
   return(-1);
   else if(*s2=='\0')
   return(1);
   else
   {if(*s1>*s2)
    return(1);
    else
    return(-1);
   }
}

char * strcpy(char * s1, char * s2)
{   char * temp = s1;
    while(*s2!='\0')
    *temp++ = *s2++;
    return(s1);
}

[ 本帖最后由 NODDY820 于 2007-7-29 17:04 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-7-26 18:57:41 | 只看该作者
原帖由 guolm1225 于 2007-7-26 18:01 发表
开发面试的基础题..不感兴趣


……
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-7-26 20:06:35 | 只看该作者
void还有return的阿 `````````是void指针么。。没用过。。长见识了
不过楼上的char *p1 然后return 的是void型的。。可以这样?

[ 本帖最后由 Jor 于 2007-7-26 20:19 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2007-7-27 17:05:31 | 只看该作者
#include <stdio.h>

int str_len(char *s)
{       
        int count =0;

        while(*s != '\0')
        {
            count++;
                s++;
        }

        return (count);
}
   

int str_cmp(char *s1, char *s2)
{
        if(str_len(s1) != str_len(s2))
        {
                return (3);
        }
        else
        {
                while ( (*s1 != '\0') && (*s2 !=0) )
                {
                        if( *s1 < *s2)
                                return (-1);
                        else if ( *s1 > *s2)
                                return (1);
                       
                        s1++;
                        s2++;
                }
               
                return (0);
        }
}


int str_cpy(char *des, char *src)
{
        char *s1;
        char *s2;
       
        s1 = des;
        s2 = src;

        if( str_len(des) >= str_len(src) )
        {
                while(*s2 != '\0')
                {
                        *s1 = *s2;

                        s2++;
                        s1++;
                }

                return (0);
        }

        return (-1);
}

void mem_set(int *ptr)
{
    int i;

    int *my_ptr;

    int size_s_t = sizeof(ptr);

    my_ptr = (int *)&ptr;

    for (i = 0; i < size_s_t/4 ; i++)
    {

        *(my_ptr + i) = 0x00000000;

    }

}
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-7-27 22:08:41 | 只看该作者

字符串复制

strcpy(char *s1, char *s2)
{
if(s1!=NULL&&s2!=NULL)
  {while(s2!='\0')
  *s1++=*S2++;
  *(++s1)='\0';
  }
esle return erro!
}
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-7-28 19:17:06 | 只看该作者
char *str_cpy(char *des, char *src)
{
        char s1[100];
        int i;
        i=0;
        while(*des!='\0'&&*src!='\0')
       {
              
        {
                while(*des != '\0')
                {
                        s1= *des;
                        des++;
                        i++;
                }
                while(*src!='\0')
                {
                 s1=*src;
                 src++;
                 i++
                }
                s1='\0';
        }

        return (s1);
}


请高手点评
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-7-28 19:28:07 | 只看该作者
上面程序中的des++ 和 src++  应该改成 *des++ 和 *src++ 还有 i++后面少了个";"
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-7-28 19:28:25 | 只看该作者
失误
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 22:25 , Processed in 0.070524 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表