学习笔记第十一天

1.知识点

        在C语言中,数组名作为函数参数时,实际上传递的是数组首元素的地址。这意味着在函数内部,我们可以通过指针来操作数组。

        数组可以在被调函数修改主调函数的内容。

1.数组相关函数。

         1.1打印数组元素

void printArray(int a[],int len)//打印数组元素;
{
    int i;
    for(i = 0;i<len;++i)
    {
        printf("%d,",a[i]);
    }
    printf("\b \n");
}

        1.2数组内元素求和

int sumOfTheArray(int a[],int len)//数组内元素求和;
{
    int i,sum = 0;
    for(i = 0;i<len;++i)
    {
        sum += a[i];
    }
    return sum;
}

        1.3数组最大值

int maxOfTheArray(int a[],int len)//数组最大值
{
    int max,i;
    max = a[0];
    for(i = 1;i<len;++i)
    {
        if(max <a[i])
        {
            max = a[i];
        }
    }
    return max;
}

        1.4数组元素+10。

void fn(int a[],int len)//数组元素+10;
{
    int i;
    for(i = 0;i<len;++i)
    {
        a[i] += 10;
    }
}

        1.5数组逆序

void reverse(int a[],int len)//数组逆序;
{
    int i;
    for(i = 0;i<len/2;++i)
    {
        int t;
        t = a[i];
        a[i] = a[len-i-1];
        a[len-i-1] = t;
    }
}

1.6选择排序

void choiceSort(int a[],int len)//选择排序
{
    int i,j,t;
    for(i = 0;i<len;++i)
    {
        for(j = 0;j<len;++j)
        {
            if(a[i]<a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
}

1.7冒泡排序


void bubbleSort(int a[],int len)//冒泡排序
{
    int i,j,t;
    for(i = len-1;i>0;--i)
    {
        for(j = 0;j<i;++j)
        {
            if(a[j]>a[j+1])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    }

}

1.8插入排序

void inserSort(int a[],int len)//插入排序
{
    int i,t,j;
    for(i = 1;i<len;++i)
    {
        t=a[i];
        j=i;
        while(j >0&&a[j-1]>t)
        {
            a[j]= a[j-1];
            --j;
        }
        a[j] = t;
    }
}

1.9二分法查找

int binarySearch(int a[],int len,int n)
{
    int begin,mid,end;
    begin = 0;
    end = len -1;
    while(begin <= end)         //二分法查找
    {
        mid = (begin + end) / 2;
 
        if(a[mid] > n)
        {
            end = mid -1;
        }
        else if(a[mid] < n)
        {
            begin = mid +1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
    
}

2.字符数组相关函数

2.1打印字符数组

void Puts(char s[])//打印字符数组;
{
    int i = 0;
    while(s[i] !='\0')
    {
        putchar(s[i]);
        ++i;
    }
    putchar(10);
}

2.2返回数组长度

int myStrlen(char s[])//返回数组长度;
{
    int i = 0;
    while(s[i] != '\0')
    {
        ++i;
    }
    return i;
}

2.3字符串复制

void myStrcpy(char dest[],char src[])//字符串复制
{
    int i = 0;
    while(src[i] != '\0')
    {
        dest[i] = src[i];
        ++i;
    }
    dest[i] = '\0';
}

2.4字符串拼接

void myStrcat(char dest[],char src[])//字符串拼接;
{
    int len = myStrlen(dest);
    int i = 0;
    while(src[i] != '\0')
    {
        dest[len +i] = src[i];
        ++i;
    }
    dest[len+i] = '\0';
}

2.5字符串比较

int myStrcmp(char s1[],char s2[])//字符串比较;
{
    int i = 0;
    while(s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0')
    {
        ++i;
    }
    return s1[i]-s2[i];
}

3.二维数组相关函数

3.1二维数组打印

void printArray2D(int a[][4],int rows)//二维数组打印;
{
    int i,j;
    int cols = sizeof(a[0])/sizeof(a[0][0]);
    for(i = 0;i<rows;++i)
    {
        for(j = 0;j<cols;++j)
        {
            printf("%2d ",a[i][j]);
        }
        putchar(10);
    }
}

3.2二维数组求最大值

int maxOfTheArray2D(int a[][4],int rows)//二维数组求最大值;
{
    int max,i,j;
    int cols = sizeof(a[0])/sizeof(a[0][0]);
    max = a[0][0];
    for(i = 0;i<rows;++i)
    {
        for(j = 0;j<4;++j)
        if(max <a[i][j])
        {
            max = a[i][j];
        }
    }
    return max;
} 

3.3二维数组倒序

void reverse2D(int a[][4],int rows)//二维数组倒序;
{
    int i,j;
    int cols = sizeof(a[0])/sizeof(a[0][0]);
    for(i = 0;i<rows;++i)
    {
        for(j = 0;j<cols/2;++j)
        {
            int t;
            t = a[i][j];
            a[i][j] = a[i][cols-j-1];
            a[i][cols-j-1]= t;
        }
    }
}

3.4二维数组边缘求和

int sumOfTheArraEdgey2D(int a[][4],int rows)//二维数组边缘求和;
{
    int sum,i,j;
    int cols = sizeof(a[0])/sizeof(a[0][0]);
    sum = 0;
    for(i = 0;i<rows;++i)
    {
        for(j = 0;j<4;++j)
        {
            if(i == 0||j == 0||i ==2||j ==3)
            {
                sum += a[i][j];
            }
        }
    }
    return sum;

}

3.5二维数组元素*f

void fn2D(int a[][4],int rows,float f)//二维数组元素*f;
{
    int i,j;
    int cols = sizeof(a[0])/sizeof(a[0][0]);
    for(i = 0;i<rows;++i)
    {
        for(j = 0;j<4;++j)
        {
            a[i][j]*=f;
        }
    }
}

4.字符串相关函数

4.1打印字符串

void printstrings(char s[][100],int rows)//打印字符串;
{
    int i;
    for(i = 0;i<rows;++i)
    {
        puts(s[i]);
    }
}

4.2字符串倒序

void reverseStrings(char s[][100],int rows)//字符串倒序;
{
    int i;
    for(i =0;i<rows/2;++i)
    {
        char t[100];
        myStrcpy(t,s[i]);
        myStrcpy(s[i],s[rows-i-1]);
        myStrcpy(s[rows-i-1],t);
    }
}

4.3字符串排序

void sortStrings(char s[][100],int rows)//字符串排序;
{
    int i,j;
    for(i = 0;i<rows;++i)
    {
        for(j = i+1;j<rows;++j)
        {
            if(myStrcmp(s[i],s[j])>0)
            {
                char t[100];
                myStrcpy(t,s[i]);
                myStrcpy(s[i],s[j]);
                myStrcpy(s[j],t);
            }
        }
    }
}

4.5字符串查找

int bianaryFindStrings(char s[][100],int rows,char str[])//字符串查找;
{
    int begin = 0;
    int end = rows -1;
    int mid;
    sortStrings(s,rows);
    while(begin <= end)
    {
        mid =(begin +end)/2;
        if(myStrcmp(str,s[mid])>0)
        {
            begin = mid +1;
        }
        else if(myStrcmp(str,s[mid])<0)
        {
            end =mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值