c语言常见函数模板

获得两个数中较大的数
int getMax(int a,int b)
{
return(a>b?a:b);
}

获得两个数中较小的数
int getMin(int a,int b)
{
return(a}

判断一个年份是不是闰年
int isLeap(int year)
{
if(year%400==0||year%100!=0&&year%4==0)
return 1;
return 0;
}


交换两个数的位置(需要两个数的地址做实参来调用函数)
方法一:利用中间变量
void changeLocal(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
方法二:利用加减法
void changeLocal(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
方法三:利用位运算
void changeLocal(int *a,int *b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}

判断一个数是不是素数
int isPrime(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0)
return 0;
return 1;
}

判断一个数是不是水仙花数
int judgeNumber(int n)
{
int a,b,c;
a=n%10;
b=n/10%10;
c=n/100;
if(a*a*a+b*b*b+c*c*c==n)
return 1;
return 0;
}

初始化菲波那契数列的n项(n<一定范围,否则超int型数据范围)
void fibonacciSequence(int a[],int n)
{
int i;
a[0]=1;
a[1]=1;
for(i=2;ia[i]=a[i-1]+a[i-2];
}
返回菲波那契数列的第n项
int fibonacciSequence(int x)
{
if(x==1||x==2)
return 1;
else
return (fibonacciSequence(x-1)+fibonacciSequence(x-2));
}

初始化n行杨辉三角(形式参数a数组中的列标k改为已知的n,且必须为数字,不能为字母)
void Triangle(int a[][k],int n)
{
int i,j;
for(i=0;ia[i][i]=a[i][0]=1;
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}


冒泡排序
void bubbleSort(int a[],int n)
{
int i,j;
for(i=0;ifor(j=i+1;j{
if(a[i]>a[j])
{
a[i]=a[i]^a[j];
a[j]=a[i]^a[j];
a[i]=a[i]^a[j];
}
}
}

选择排序
void selectionSort(int a[],int n)
{
int i,j,k;
for(i=0;i{
k=i;
for(j=i+1;jif(a[j]k=j;
if(i!=k)
{
a[i]=a[i]^a[k];
a[k]=a[i]^a[k];
a[i]=a[i]^a[k];
}
}
}

快速排序(left传0,right传数组长度-1)
void quickSort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot)&&(left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
quickSort(numbers, left, pivot-1);
if (right > pivot)
quickSort(numbers, pivot+1, right);
}

统计字符串中大写字母,小写字母,数字,其他字符的个数
void count(char a[],int *upper,int *lower,int *number,int *others)
{
int i;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
(*upper)++;
else if(a[i]>='a'&&a[i]<='z')
(*lower)++;
else if(a[i]>='0'&&a[i]<='9')
(*number)++;
else
(*others)++;
}
}

判断一个

数是不是完全平方数
#include"math.h"
int completelySquareNumber(int n){
if((int)sqrt(n)*(int)sqrt(n)==n)
return 1;
return 0;
}

求数列和1-1/2+1/3+…+1/99-1/100+…+1/n
double calculate(int n)
{
double s=0;
int i=1;
while(i<=n)
{
s+=(i%2==0)?(-1.0/i):(1.0/i);
i++;
}
return s;
}

求前n项整数和
int sum(int n)
{
int s=0;
int i=1;
while(i<=n)
{
s+=i;
i++;
}
return s;
}

求两个数的最大公约数
int greatestCommonDivisor(int m,int n)
{
int i;
for(i=m;i>0;i--)
if(m%i==0&&n%i==0)
return i;
}

求两个数的最小公倍数
int lowestCommonMultiple (int m,int n)
{
int i;
for(i=m;i<=m*n;i++)
if(i%m==0&&i%n==0)
return i;
}

大小写转换
char change(char a)
{
if(a>='a'&&a<='z')
return (a-32);
if(a>='A'&&a<='Z')
return (a+32);
}

阶乘
int factorial (int n)
{
int i,k=1;
if(n==0)
return 1;
else
{
for(i=1;i<=n;i++)
k*=i;
return k;
}
}

求绝对值
double abs(double n)
{
return (n>0?n:-n);
}

将一个10进制数字转换为k进制存在字符数组中
char *myitoa(int num,char *str,int radix)
{
const char table[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *ptr = str;
int negative = 0;
if(num == 0){
*ptr++='0';
*ptr='\0';
return str;
}
if(num<0){
*ptr++='-';
num*=-1;
negative = 1;
}
while(num){
*ptr++ = table[num%radix];
num/=radix;
}
*ptr = '\0';
char *start =(negative?str+1:str);
ptr--;
while(startchar temp = *start;
*start = *ptr;
*ptr = temp;
start++;
ptr--;
}
return str;
}

字符串连接
char *scat(char *str1,char *str2)
{
char *p=str1;
while(*p!='\0')
p++;
while(*p++=*str2++);
return str1;
}

从字符串s中删除第i个字符开始的n个字符
char *delete(char *s,int i,int n)
{
int j,k,length=0;
while(s[length])
length++;
i--;
j=i;
if(i{
k=i+n;
if(i+n<=length)
while(ks[j++]=s[k++];
s[j]='\0';
}
return s;
}

字符串转整型
int my_atoi(const char *str){
int result= 0;
int flag=0;
if((*str>='0'&&*str<='9')||*str=='-'||*str=='+'){
if(*str=='-'||*str=='+'){
if(*str=='-')
flag=1;
str++;
}
}
else
return 0;
while(*str>='0'&&*str<='9')
result = result*10+(*str++ -'0');
return flag?-result:result;
}


相关文档
最新文档