开发手册 欢迎您!
软件开发者资料库

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

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

1、一维数组排序

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

#includeint 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  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、数组二分法查找

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

#includeint 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(keyindex2)printf("not found");}

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

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

#include // 获取数组元素的最大值和最小值int main(void){    int arr[] = {1,2,4,5,17,8,19,33};    int min=1,max=0;    for(int i=0;iarr[i]){            min = arr[i];        }        if (max

5、杨辉三角

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

#includeint 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;}