C语言数组相关练习题

发布于:2024-04-17 ⋅ 阅读:(18) ⋅ 点赞:(0)

1. 求数组中第二大的值

#include <stdio.h>


int main()
{

    int arr[] = {12, 97, 1, 5};

    int len = sizeof(arr) / sizeof(arr[0]);

    // printf("%d\n",len); // 9

    // 冒泡排序(从小到大)
    for (int i = 0; i < len; i++)
    {

        for (int j = 0; j < len - i - 1; j++)
        {
            // printf("arr[j] = %d ,arr[j + 1] = %d\n", arr[j], arr[j + 1]);
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                // printf("i=%d,j=%d\n", i, j);
            }
        }
    }

    for (int i = 0; i < len; i++)
    {
        // printf("%d\n", arr[i]);
    }

     printf("第二大的值是:%d\n", arr[len - 2]);

    return 0;
}

2. 整数的平均值

#include <stdio.h>

int main()
{
    int arr[5] = {};
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("请输入5个整数: ");

    int sum; // 和

    for (int i = 0; i < len; i++)
    {
        scanf("%d", &arr[i]);

        // printf("%d", arr[i]);
        sum += arr[i];
    }
    printf("和为: %d\n", sum);

    int result = sum / len;
    printf("平均值为: %d\n", result);

    return 0;
}

3. 查找某个整数在整数数组的索引位置

#include <stdio.h>

/*
编写一个函数find_index,
接受一个整型数组、数组的长度和一个整数作为参数,
查找并返回该整数在数组中的索引位置。
如果该整数不存在于数组中,则返回-1。
在主函数中定义一个包含10个元素的数组,
并调用find_index函数查找某个整数的索引位置并输出。
*/

int find_index(int *arr, int len, int num)
{
    for (int i = 0; i < len; i++)
    {
        // 判断当前数是否存在
        if (num == arr[i])
        {
            return i;
        }
    };
    // 如果不存在,跳出循环返回-1
    return -1;
};

int main()
{

    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int len = sizeof(arr) / sizeof(arr[0]);

    int index = find_index(arr, len, 4);
    printf("%d\n", index);

    return 0;
}

4. 统计字符串中数字字符的个数

#include <stdio.h>
#include <string.h>

// 编写一个程序,接受用户输入的一个字符串,然后统计字符串中数字字符的个数并输出。
int main()
{
    char str[100] = {};
    printf("请输入一个字符串: ");
    // scanf("%s", str);

    fgets(str, sizeof(str), stdin);

    // printf("%s\n", str);
    int length = strlen(str);
    printf("字符串长度为:%d\n", length); // abc123 /0 // 7

    // 保存数量
    int count;

    for (int i = 0; i < length - 1; i++)
    {
        // printf("%c\n", str[i]);
        // 数字
        // 字符型变量赋值,需要使用''括起来,在存储时,实际存储的是ASCII码
        if (str[i] >= '0' && str[i] <= '9')
        {
            printf("%c\n", str[i]);
            count++;
        }
    }

    printf("个数: %d\n", count);

    return 0;
}

5. 从小到大排序

#include <stdio.h>
// 数组的排序 1,3,6,2,5   ==》1,2,3,5,6
int main()
{

    int arr[5] = {3, 1, 6, 2, 5};

    int len = sizeof(arr) / sizeof(arr[0]);

    // 从小到大排
    // 次数
    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - 1 - i; j++)
        {
            printf("arr[j] = %d ,arr[j + 1] = %d\n", arr[j], arr[j + 1]);
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                printf("i=%d,j=%d\n", i, j);
            }
        }
    }

    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }

    printf("\n");

    return 0;
}