51Testing软件测试论坛
标题:
有没有兴趣写几个程序
[打印本页]
作者:
seifer1754
时间:
2007-7-26 10:07
标题:
有没有兴趣写几个程序
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 编辑
]
作者:
肚子
时间:
2007-7-26 15:38
顶一下,同学们来写写看啊~
作者:
seifer1754
时间:
2007-7-26 15:43
还是肚子老师给面子。
同学们对编程的热情都不高,等明天我把自己写的贴上来吧。
作者:
肚子
时间:
2007-7-26 15:43
表急
我找十个同学来写~
写完了你再贴~
作者:
yufan1997
时间:
2007-7-26 15:48
我也来了。可是娃8会哦,what a pity~~~
作者:
mojuncong
时间:
2007-7-26 16:00
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 );
}
作者:
mojuncong
时间:
2007-7-26 16:09
strcpy(char * s1, const char * s2) {
char * cp = s1;
while( *cp++ = *s2) ;
return(s1 );
}
作者:
mojuncong
时间:
2007-7-26 16:23
void * memset(void * s,char c,size_t count)
{
char *xs = (char *) s;
while (count--)
*xs++ = c;
return s;
}
作者:
shtina
时间:
2007-7-26 16:36
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;
}
作者:
shtina
时间:
2007-7-26 17:10
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;}
}
作者:
shtina
时间:
2007-7-26 17:22
strcpy(char *s1, char *s2)
{
char *tmp=s1;
while (*s1++=*s2++);
return tmp;
}
作者:
guolm1225
时间:
2007-7-26 18:01
开发面试的基础题..不感兴趣
作者:
NODDY820
时间:
2007-7-26 18:11
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 编辑
]
作者:
肚子
时间:
2007-7-26 18:57
原帖由
guolm1225
于 2007-7-26 18:01 发表
开发面试的基础题..不感兴趣
……
作者:
Jor
时间:
2007-7-26 20:06
void还有return的阿 `````````是void指针么。。没用过。。长见识了
不过楼上的char *p1 然后return 的是void型的。。可以这样?
[
本帖最后由 Jor 于 2007-7-26 20:19 编辑
]
作者:
seifer1754
时间:
2007-7-27 17:05
#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;
}
}
作者:
青龙
时间:
2007-7-27 22:08
标题:
字符串复制
strcpy(char *s1, char *s2)
{
if(s1!=NULL&&s2!=NULL)
{while(s2!='\0')
*s1++=*S2++;
*(++s1)='\0';
}
esle return erro!
}
作者:
ybbiagu
时间:
2007-7-28 19:17
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);
}
请高手点评
作者:
ybbiagu
时间:
2007-7-28 19:28
上面程序中的des++ 和 src++ 应该改成 *des++ 和 *src++ 还有 i++后面少了个";"
作者:
ybbiagu
时间:
2007-7-28 19:28
失误
作者:
lhjtc8257
时间:
2007-7-31 22:59
学习下
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2