C语言—数组(2)

在不知道数组类型的情况下,如何确定数组元素的个数?
一维数组:sizeof(a) /sizeof(a[0])

二维数组:sizeof(a[0])/sizeof(a[0][0])

当然此次我做的题没体现出来我在末尾写一段演示了一下

因为二维数组也可以看成是一个一维数组

25⬆2.13
1. 一个二维数组赋了初值,用户输入一个数,在该二维数组中查找。找到则返回行列位置,没找到则提示。

/*1. 一个二维数组赋初值,用户输入一个数,在该二维数组中查找.找到则返回行列位置,没找到则提示.*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define R 3
#define C 4

int main(void)
{
    int a[R][C] = {0};
    int i = 0,j = 0;

    srand(time(NULL));  //生成种子数

    printf("生成随机数组的数为:\n");  //生成随机数组
    for(i = 0;i < R;i++)
    {
        for(j = 0;j < C;j++)
        {
            a[i][j] = rand() % 100 + 1;  //在数组中生成1-100的随机数
            printf("%-5d",a[i][j]);  //5表示宽度 -左对齐
        }
        printf("\n");
    }

    int num;
    printf("请输入一个数:");
    scanf("%d",&num);

    int found = 0;  //定义一个变量找数字
    for(i = 0;i < R;i++)
    {
        for(j = 0;j < C;j++)  //遍历数组的数字
        {
            if(num == a[i][j])
            {
                found = 1;  //表示找该数
                printf("数字%d的位置在[%d][%d]\n",num,i,j);
                //printf("数字%d",a[i][j])这里数字也可以这么表示
            }
        }
    }

    if(found == 0)  //未找到该数,变量没变化
    {
        printf("在该数组中未找到该数。\n");
    }

    return 0;
}


2. 二维整型数组,求所有元素平均值,求每行最大值。

/*2. 二维整型数组,求所有元素平均值,求每行最大值。*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define R 3  //行
#define C 4  //列

int main(void)
{
    int a[R][C] = {0};

    srand(time(NULL));  //使用时间做随机数种子

    int i = 0,j = 0;
    printf("===数组为===\n");  //随机生成数组的元素
    for(i = 0;i < R;i++)  //遍历行
    {
        for(j = 0;j < C;j++)  //遍历列
        {
            a[i][j] = rand() % 100 +1;  //随机生成1-100的数,并赋值给数组
            printf("%-5d",a[i][j]);
        }
        printf("\n");
    }

    int sum = 0;  //定义变量求和
    for(i = 0;i < R;i++)
    {
        int max = a[i][0];  //假设每一行最大值是第一个元素
        for(j = 0;j < C;j++)  //遍历列
        {
            sum += a[i][j];  //累加元素值

            if(max < a[i][j])
            {
                max = a[i][j];  //更新最大值
            }
        }
        printf("第%d行最大值为:%d\n",i + 1,max);  //打印每行最大值,正好可以拿i+1表示
    }

    float ave = (float)sum / (R * C);  //计算平均值,确保数据准确,强制转换float型
    printf("平均值为:%.2f\n",ave);

    return 0;
}


3. 在行列相等数组计算主对角线元素的和

/*3. 在行列相等数组计算主对角线元素的和*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define R 3
#define C 3

int main(void)
{
    int arr[R][C] = {0};

    srand(time(NULL));  //种子数

    printf("随机生成数组为:\n");

    int i,j;
    for(i = 0;i < R;i++)
    {
        for(j = 0;j < C;j++)
        {
            arr[i][j] = rand() % 100 + 1;  //生成随机数赋值给数组
            printf("%-3d",arr[i][j]);
        }
         printf("\n");
    }

    int sum = 0;
    for(i = 0;i < R;i++)
    {
        sum += arr[i][i];  //循环求行列阵的对角线的和a[1][1]...
    }
    printf("主对角线元素的和为: %-5d\n",sum);  //左对齐5个宽度

    return 0;
}


4. 计算一个矩阵下三角元素的和 

/*4. 计算一个矩阵下三角元素的和*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define R 3
#define C 3

int main(void)
{
    int arr[R][C] = {0};

    srand(time(NULL));  //种子数

    int i,j;
    printf("随机生成数组:\n");
    for(i = 0;i < R;i++)
    {
        for(j = 0;j < C;j++)
        {
            arr[i][j] = rand() % 10 + 1;  //随机生成数字赋值给数组
            printf("%3d",arr[i][j]);
        }
         printf("\n");
    }

    int sum;  //定义变量求和
    for(i = 0;i < R;i++)
    {
        for(j = 0;j < C;j++)
        {
            if(i >= j)
            {
                sum += arr[i][j];  //下三角特点行>=列,求和
            }
        }
    }

    printf("矩阵中下三角的和为: %d\n",sum);

    return 0;
}


5. 电影院店庆为了答谢影迷的支持,在每一排的每一列座位上放置了一个礼物,但在满足下面要求的位置上放置了一个大礼包
     (行和列的平方和为开店日期 512(5月12日));
     请设计程序找出大礼包,并输出它的内容,(假定电影院有20排,每排25个座位)

这道题我没赋值给数组,懒得赋值了,和上面几道题赋初值一样的,图方便就没赋随机值,数组里的元素全部被初始化为0了

/*5. 电影院店庆为了答谢影迷的支持,在每一排的每一列座位上放置了一个礼物,但在满足下面要求的位置上放置了一个大礼包
 (行和列的平方和为开店日期 512(5月12日));请设计程序找出大礼包,并输出它的内容,(假定电影院有20排,每排25个座位)*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define R 20
#define C 25

int main(void)
{
    int arr[R][C] = {0};


    int i,j;
    for(i = 0;i < R;i++)  //从第一个元素遍历,嵌套循环,遍历数组
    {
        for(j = 0;j < C;j++)
        {
            if((i + 1) * (i + 1) + (j + 1) * (j + 1) == 512)  //i+1此时表示排数1-20,j+1表示列数1-25,若是512便找到该位置
            {
                printf("该大礼包在第%d行,第%d列,内容为:%d\n",i + 1,j + 1,arr[i][j]);  //打印出来位置,内容是0因为初始化数组存储数据为0
            }
        }
    }

    return 0;
}

在不知道数组类型的情况下,如何确定数组元素的个数?
1.一维数组sizeof(a) /sizeof(a[0])直接可以得到数组中元素个数的,很好用的公式,我没在题目上写是因为我们在定义的时候就知道行列数了,没必要再用公式了。

2.二维数组中的嵌套循环

sizeof(a) /sizeof(a[0])可以理解为求数组的行数,它可以定义一个变量代替行数上的3

sizeof(a[0])/sizeof(a[0][0])可以理解为求数组的列数,它可以定义变量代替列数上的3

/*一维数组:sizeof(a) /sizeof(a[0]) 二维数组:sizeof(a[0])/sizeof(a[0][0])用法演示*/

#include <stdio.h>

int main(void)
{
    int a[3][3] = {
                     {1,6,8},
                     {5,2,9},
                     {3,1,4}
                  };

    int i,j;
    for(i = 0;i < sizeof(a)/sizeof(a[0]);i++)
    {
        for(j = 0;j < sizeof a[0]/sizeof(a[0][0]);j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }

    return 0;

}

相关推荐

  1. C语言的初始化

    2024-02-20 06:24:05       63 阅读
  2. C语言)单元练习二

    2024-02-20 06:24:05       38 阅读
  3. C语言复习--,函数

    2024-02-20 06:24:05       45 阅读
  4. C语言三维的创建

    2024-02-20 06:24:05       117 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-20 06:24:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-20 06:24:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-20 06:24:05       87 阅读
  4. Python语言-面向对象

    2024-02-20 06:24:05       96 阅读

热门阅读

  1. chatgpt的大致技术原理

    2024-02-20 06:24:05       41 阅读
  2. 网络安全威胁杂谈

    2024-02-20 06:24:05       52 阅读
  3. https 为什安全

    2024-02-20 06:24:05       46 阅读
  4. Kafka的介绍

    2024-02-20 06:24:05       53 阅读
  5. zip解压缩

    2024-02-20 06:24:05       50 阅读
  6. 如何在 Linux 系统中查看系统日志

    2024-02-20 06:24:05       54 阅读
  7. effective c++ 笔记 条款18-25

    2024-02-20 06:24:05       50 阅读
  8. Linux ----防火墙值SNAT与DNAT

    2024-02-20 06:24:05       55 阅读
  9. 计算机网络常考面试题——PING命令

    2024-02-20 06:24:05       50 阅读
  10. Day10-Linux系统打包和时间命令及案例精讲

    2024-02-20 06:24:05       51 阅读
  11. 图数据库 之 Neo4j - 应用场景2 - 实时推荐引擎(7)

    2024-02-20 06:24:05       41 阅读