ACM内部函数4

 

11.行列式计算
语法:
result=js(int s[][],int n)
参数:
s[][]:行列式存储数组
n:行列式维数,递归用
返回值:
行列式值
注意:
函数中常数N为行列式维度,需自行定义
源程序:
int js(s,n)
int s[][N],n;
{
    int z,j,k,r,total=0;
    int b[N][N];/*b[N][N]用于存放,在矩阵s[N][N]中元素s[0]的余子式*/
    if(n>2)
        {
        for(z=0;z<n;z++)
            {
            for(j=0;j<n-1;j++)
                 for(k=0;k<n-1;k++)
                        if(k>=z) b[j][k]=s[j+1][k+1]; else b[j][k]=s[j+1][k];
            if(z%2==0) r=s[0][z]*js(b,n-1); /*递归调用*/
            else r=(-1)*s[0][z]*js(b,n-1);
            total=total+r;
            }
        }
    else if(n==2)
       total=s[0][0]*s[1][1]-s[0][1]*s[1][0];
    return total;
}
12.求排列组合数
语法:
result=P(long n,long m); / result=long C(long n,long m);
参数:
m:排列组合的上系数
n:排列组合的下系数
返回值:
排列组合数
注意:
符合数学规则:m<=n
源程序:
long P(long n,long m)
{
    long p=1;
    while(m!=0)
        {p*=n;n--;m--;}
    return p;
}
long C(long n,long m)
{
    long i,c=1;
    i=m;
    while(i!=0)
        {c*=n;n--;i--;}
    while(m!=0)
        {c/=m;m--;}
    return c;
}
1.字符串替换
语法:
replace(char str[],char key[],char swap[]);
参数:
str[]:在此源字符串进行替换操作
key[]:被替换的字符串,不能为空串
swap[]:替换的字符串,可以为空串,为空串表示在源字符中删除key[]
返回值:
null
注意:
默认str[]长度小于1000,如否,重新设定设定tmp大小
需要 string.h
源程序:
void replace(char str[],char key[],char swap[])
{
    int l1,l2,l3,i,j,flag;
    char tmp[1000];
    l1=strlen(str);
    l2=strlen(key);
    l3=strlen(swap);
    for (i=0;i<=l1-l2;i++)
        {
        flag=1;
        for (j=0;j<l2;j++)
            if (str[i+j]!=key[j]) {flag=0;break;}
        if (flag)
            {
            strcpy(tmp,str);
            strcpy(&tmp[i],swap);
            strcpy(&tmp[i+l3],&str[i+l2]);
            strcpy(str,tmp);
            i+=l3-1;
            l1=strlen(str);
            }
        }
}
2.字符串查找
语法:
result=strfind(char str[],char key[]);
参数:
str[]:在此源字符串进行查找操作
key[]:被查找的字符串,不能为空串
返回值:
如果查找成功,返回key在str中第一次出现的位置,否则返回-1
注意:
需要 string.h
源程序:
int strfind(char str[],char key[])
{
    int l1,l2,i,j,flag;
    l1=strlen(str);
    l2=strlen(key);
    for (i=0;i<=l1-l2;i++)
        {
        flag=1;
        for (j=0;j<l2;j++)
            if (str[i+j]!=key[j]) {flag=0;break;}
        if (flag) return i;
        }
    return -1;
}
3.字符串截取
语法:
mid(char str[],int start,int len,char strback[])
参数:
str[]:操作的目标字符串
start:从第start个字符串开始,截取长度为len的字符
len:从第start个字符串开始,截取长度为len的字符
strback[]:截取的到的字符
返回值:
0:超出字符串长度,截取失败;1:截取成功
注意:
需要 string.h
源程序:
int mid(char str[],int start,int len,char strback[])
{
    int l,i,k=0;
    l=strlen(str);
    if (start+len>l) return 0;
    for (i=start;i<start+len;i++)
        strback[k++]=str[i];
    strback[k]='/0';
    return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值