c小函数

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;
	}
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值