C语言知识点笔记4

118 阅读2分钟

C语言知识点笔记4

此笔记是我考研备考专业课期间听课的一些C语言知识点混记,可能会有一点乱,有需要的朋友们可以翻阅一下,有利于巩固C语言知识点!

1🚩 例题:计算一个数的每位之和(递归实现)

int DigitSum(int n)
{
    if(n>9)
    {
        return DigitSum(n / 10) + n % 10;
    }
    else
    {
        return n;
    }
}
​
int main()
{
    int num = 1729;
    int sum = DigitSum(num);
​
    printf("%d\n", sum);
    return 0;
}

2🚩 例题:编写一个函数实现n的k次方,使用递归实现

double Pow(int n, int k)
{
    if(k == 0)
        return 1;
    else if(k > 0)
        return n * Pow(n, k - 1); 
    else
        return 1.0 / (Pow (n,-k));
}
​
int main()
{
    int n = 0;
    int k = 0;
    scanf("%d %d", &n, &k);
    double ret = Pow(n,k);
    printf("%lf\n", ret);
    return 0;
}

3🚩 字符串的初始化:

int main() 
{
    char ch1[] = "bit";
    //[b i t \0]
    
    char ch2[] = {'b','i','t'};
    //[b i t]
​
    printf("%s\n",ch1);//输出bit
    printf("%s\n",ch2);//输出bit烫烫烫烫it  没有结束符'\0'
}

4🚩 数组名是数组首元素的地址 △但是有两个例外: (1)sizeof(数组名)--数组名表示整个数组--计算的是整个数组的大小-单位是字节 (2)&数组名-数组名表示整个数组-取出的是整个数组的地址

5🚩 二维数组初始化:

#include <stdio.h>
​
int main()
{
    //创建
    int arr1[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//按顺序存放,第一行1234,第二行5678,第三行9 10 11 12
    int arr2[3][4] = {1,2,3,4,5,6,7};//不完全初始化--按顺序存放,后面补0
    int arr3[3][4] = {{1,2},{3,4},{4,5}}//每行后面补上两个0
    int arr4[][4] = {{1,2},{3,4},{4,5}};//行可以省略,列不能省略。
    //打印二维数组
    int i = 0;
    int j = 0;
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 4; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

6🚩 排序算法之冒泡排序※(很重要的排序算法)

void bubble_sort(int arr[],int sz) //形参arr本质是指针
{
    int i = 0;
​
    //确定趟数
    for(i = 0;i < sz-1; i++)
    {
        //一趟冒泡排序的过程
        int j = 0;
        for(j = 0; j < sz-1-i; j++)
        {
            if(arr[j] > arr[j+1])
            {
                //交换
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
    return;
}
​
int main()
{
    int arr[] = {9,8,7,6,5,4,3,2,1,0};
    //改变排序为升序-冒泡排序
    //冒泡排序的思想:两两相邻的元素进行比较,并且可能的话需要交换。
​
    //计算数组元素个数
    int sz = sizeof(arr) / sizeof(arr[0]);//在外面计算好再传进去
    bubble_sort(arr,sz);//数组传参的时候,其实传递的是数组首元素的地址
    return 0;
}