C语言一维数组和二维数组编程实例练习题

C语言中数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。数组可能具有多个维度来表示数据,我们将其称之为多维数组,可以使用多个索引来访问多维数组中的元素。本文主要介绍C语言中一维数组和二维数组编程实例练习题,以及相关示例代码。

1、一维数组排序

一维数组使用冒泡排序方法进行排序,代码如下,

#include<stdio.h>
int main(void)
{

    int a[10];
    printf("请输入10个整数:\n");
    for(int i = 0; i < 10; i ++)
        scanf("%d", &a[i]);
    for(int i = 0; i < 10; i ++)
        for(int j = i + 1; j < 10; j ++)
        {
            if(a[i] < a[j])
            {
                int pre = a[i];
                a[i] = a[j];
                a[j] = pre;
            }
        }
    for(int i = 0; i < 10; i ++)
        printf("%d ", a[i]);
   

    return 0;
}

2、计算二维数组中元素的最大值及其所在的行列下标值

循环遍历查找二维数组中的最大值,及所有在行和列的下标,代码如下,

#include <stdio.h>
 int main() {
    int i,j,row=0,colum=0,max;
    int a[3][4]= { {
            1,2,3,4
        }
        , {
            9,8,7,6
        }
        , {
            -10,10,5,2
        }
    }
    ;
    max=a[0][0];
    for (i=0;i<=2;i++)
    for (j=0;j<=3;j++)
    if(a[i][j]>max) {
        max=a[i][j];
        row=i;
        colum=j;
    }
    printf("%d,%d,%d\n",max,row,colum);
    return 0;
}

3、数组二分法查找

二分法查找适用于数据量较大时,但是数据需要先排好顺序。代码如下,

#include<stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};       //定义初始数组
    int i,key,index1,index2,mid;        //key:准备查找的值;index1:最小下标;index2:最大下标;mid:中间值下标
    printf("请输入要查找的整数:\n");
    scanf("%d",&key);       
    for(index1=0,index2=9;index1<=index2;){     //通过for循环进行查找,
        mid=(index1+index2)/2;
        if(key==a[mid]){
            printf("索引位置:%d",mid);        //若是找到key的话,直接break结束循环
            break;
        }else if(key<a[mid]){
            index2=mid-1;       //当mid的值大于key时,将mid-1的值赋值给index2
        }else {
            index1=mid+1;       //当mid的值小于key时,将mid+1的值赋值给index1
        }
    }if(index1>index2)printf("not found");
}

4、计算数组中最大值和最小值

循环遍历找出数组中的最大值和最小值。代码如下,

#include <stdio.h>

// 获取数组元素的最大值和最小值
int main(void){

    int arr[] = {1,2,4,5,17,8,19,33};
    int min=1,max=0;
    for(int i=0;i<sizeof(arr)/sizeof(int);i++){
        if (min>arr[i]){
            min = arr[i];
        }

        if (max<arr[i]){
            max = arr[i];
        }
    }
    printf("result: min = %d , max = %d \n",min,max);
    return 0;
}

5、杨辉三角

杨辉三角是二项式系数在三角形中的一种几何排列,使用C语言输出杨辉三角,代码如下,

#include<stdio.h>
int a[10][10];

int main()
{
    int num = 1;
    for(int i = 0; i < 10; i ++) a[i][0] = 1;
    for(int i = 1; i < 10; i ++)
    {
        for(int j = 1; j < 10; j ++)
        {
            if(j == num)
            {
                num ++;
                a[i][j] = 1;
                break;
            }
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        }
    }
    num = 1;
    for(int i = 0; i < 10; i ++)
    {
        for(int j = 0; j < 10; j ++)
        {
            if(j == num)
            {
                num ++;
                break;
            }
            if(j == num - 1) printf("%d", a[i][j]);
            else printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

推荐阅读
cjavapy编程之路首页