1.交换两个变量的值
void swap(int *a,int *b)
{
int temp = 0;
temp = *a;
*a = *b;
*b = temp;
}
2.查找字符串中的大/小写字符个数(*p -= 32 或者 *p -= ' '可以将小写转大写)
int Find_Low_Latter(const char * p)
{
int num = 0;
while(*p != '\0')
{
if(*p>= 'a' && *p <= 'z')
{
num++;
}
p++;
}
return num;
}
3.计算数组元素和
int arr_sum(int * p,int n)
{
int temp=0,i=0;
while(i<n)
{
temp += *p;
p++;
i++;
}
return temp;
}
4.删除字符串中的空格
char * String_Delete_Space(char * s)
{
char * p = s, * q = s;//快慢指针,p快速遍历,q慢速组建
while(*p != '\0')
{
if(*p == ' ')
p++;
else
{
*q = *p;
p++;
q++;
}
}
*q = '\0';
return q;
}
5.函数返回地址
char *fun(void)
{
//static变量
static int i;
//字符串常量
char* p = "qwertyuiop";
//全局变量
//malloc申请变量
//只有这些地址可以返回
}
6.字符串连接函数
char * String_Link(char * dest,char * src)
{
while(*dest != '\0')
dest++;
while(*src != '\0')
{
*dest++ = *src++;
}
*dest = '\0';
return dest;
}
char * String_Link(char * dest,char * src)
{
while(*dest++)
dest--;
while(*src )
*dest++ = *src++;
*dest = '\0';
return dest;
}
char * String_Link(char * dest,char * src)
{
while(*dest++)
dest--;
while(*dest++ = *src++ )
return dest;
}
7.整形转字符串
char *itoa(int n)
{
int r,i=0,j;
static char p[50] ;
while(n)
{
r = n%10;
n /= 10;
p[i++] = r + '0';// 或者加0x30;
}
p[i] = '\0';
j = i-1;
i = 0;
while(i<j)
{
r = p[i];
p[i] = p[j];
p[j] = r;
i++;
j--;
}
return p;
}
8.整数n的阶乘
int fac(int n)
{
if(n == 0 || n ==1)
return 1;
return n*fac(n-1);
}
9.斐波那契数列
int fib(int n)
{
if(n==1 || n==2)
return 1;
return fib(n-1)+fib(n-2);
}
10.使用库函数qsort()实现快速排序
#include<stdio.h>
#include<stdlib.h>
//void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
int compare(const void *,const void *);
int compare(const void *p,const void *q)
{
return *(int *)p - *(int *)q;
}
int main(int argc,char*argv[])
{
int s[] = {11,22,33,11,22,13,12,4,15},i,n;
n = sizeof(s)/sizeof(int);
for(i=0; i<n;i++)
printf(" %d \n",s[i]);
puts("\n");
qsort(s,n,sizeof(int),compare);
for(i=0; i<n;i++)
printf(" %d \n",s[i]);
puts("\n");
return 0;
}
11.冒泡排序
void Sort(int *arr,int nlength)
{
int i,j;
for(j=0; j<nlength-1;j++)
{
for(i=0; i< nlength-1-j;i++)
{
if(*(arr+i) > *(arr+i+1))
{
int temp;
temp = *(arr+i);
*(arr+i) = *(arr+i+1);
*(arr+i+1) = temp;
}
}
}
}
12.折半查找(仅适用与已经排好序)
int Find_One(int *p,int n ,int one)
{
int start = 0,end = n-1,index;
while(start < end)
{
index = (start+end)/2;
if(one > *(p+index))
start = index+1;
else if(one < *(p+index))
end = index-1;
else
return index;
}
}