说明:以下代码摘自《程序员面试宝典(第二版)》,自己编写,同学编写等,从网上转载的会标注具体转载地址。
1)递归反序输出字符串
void reverse(char *p)
{
if(*p == '\0')
return;
reverse(p + 1);
putchar(*p);
return;
}
2)递归判断a[n]是否递增
int func(int *a, int n)
{
if(n == 1)
return 1;
if(n == 2)
return *a <= *(a + 1);
return ((*a <= *(a + 1)) && func(a + 1, n - 1));
}
3)在字符串中找出连续最长的数字串,返回长度,最长数字串存放在outputstr中
int findnumstring(char *outputstr, char *inputstr)
{
char *outp, *outp_m, *p = inputstr;
int i, len = 0, maxlen = 0;
while(*p != '\0') {
if(*p >= '0' && *p <= '9') {
outp = p++;
while(*p >= '0' && *p <= '9') ++p;
len = p - outp;
if(maxlen < len) {
maxlen = len;
outp_m = outp;
}//if maxlen
}//if *p >= '0'
else
++p;
}//while
for(i = 0; i < maxlen; i++)
*outputstr++ = *(outp_m + i);
*outputstr = '\0';
return maxlen;
}
4)利用指针对调字符串
方法一:
void reverse(char *s)
{
int i, mid, len;
char tmp;
len = strlen(s);
mid = len / 2;
for(i = 0; i <= mid; i++) {
tmp = *(s + len - 1 - i)
*(s + len - 1 -i) = *(s + i);
*(s + i) = tmp;
}
return;
}
方法二:
void reverse(char *s)
{
int len;
char *p1, *p2, tmp;
len = strlen(s);
p1 = s;
p2 = s + len - 1;
while(p1 < p2) {
tmp = *p2;
*p2 = *p1;
*p1 = tmp;
p1++;
p2--;
}
}
5)字符串拷贝
char *strcpy(char *dest, const char *src)
{
if((dest == NULL) || (src == NULL))
return NULL;
while(*dest++ = *src++);
return dest;
}