C语言—数组(2)

news2025/1/19 6:51:31

在不知道数组类型的情况下,如何确定数组元素的个数?
一维数组: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;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1447434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Github 2024-02-13 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-13统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量JavaScript项目2Python项目2C项目2TypeScript项目2Rust项目1Go项目1Dart项目1Java项目1C项目1 系统设计指南 …

彻底改变单词嵌入和文本分类

目录 一、介绍二、起源与发展三、技术基础四、FastText 的优点五、代码六、结论 一、介绍 2016 年由 Facebook 的 AI Research &#xff08;FAIR&#xff09; 团队推出的 FastText 已迅速成为自然语言处理 &#xff08;NLP&#xff09; 领域的基石。这种创新的词嵌入和文本分类…

【MySQL】:分组查询、排序查询、分页查询、以及执行顺序

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 分组查询1.1 语法1.2 where与having区别1.3 注意事项:1.4 案例: 二. 排序查询…

力扣精选算法100道——【模板】前缀和 (二维)

目录 &#x1f388;题目解析 &#x1f388;算法原理 &#x1f388;实现代码 二维前缀和【模板】 &#x1f388;题目解析 上一题我们讲述了一维的前缀和求法。 第一行三个参数&#xff0c;n是行数3&#xff0c;m是列数4&#xff0c;q3代表查询次数 接下来就是n行m列的矩阵…

剪辑视频衔接怎么操作 剪辑视频衔接过渡自然方法 剪辑视频教程新手入门 抖音剪辑短视频 会声会影视频制作教程

视频剪辑在现代社交媒体和数字媒体时代中变得越来越重要。它广泛应用于各种领域&#xff0c;包括电影制作、广告宣传、教育培训、社交媒体内容创作等。 一、剪辑视频衔接怎么操作 会声会影是一款功能强大、易于使用的视频编辑软件。接下来我们拿会声会影为例讲解剪辑视频如何…

探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、引言 核心概念 应用场景 可以解决的问题 二、场景案例 2.1 不用设计模式实现 2.2 存在问题 2.3 使用设计模式实现 2.4 成功克服 三、工作原理 3.1 结构图和说明 3.2 工作原理详解 3.3 实现步骤 四、 优…

2024-02-13 Unity 编辑器开发之编辑器拓展4 —— EditorGUIUtility

文章目录 1 EditorGUIUtility 介绍2 加载资源2.1 Eidtor Default Resources2.2 不存在返回 null2.3 不存在则报错2.4 代码示例 3 搜索框查询、对象选中提示3.1 ShowObjectPicker3.2 PingObject3.3 代码示例 4 窗口事件传递、坐标转换4.1 CommandEvent4.2 GUIPoint 和 ScreenPoi…

关于在分布式环境中RVN和使用场景的介绍3

简介 在《关于在分布式环境中RVN和使用场景的介绍2》和《关于在分布式环境中RVN和使用场景的介绍1》中我们介绍了RVN的概念和在一些具体用例中的使用。在本文中我们讨论一下在分布式环境中使用RVN需要注意的问题。 问题 我们在收到一条待处理的事件时&#xff0c;需要检查该…

代码随想录算法训练营Day56|583. 两个字符串的删除操作、72. 编辑距离

目录 583. 两个字符串的删除操作 前言 思路 算法实现 法二 72. 编辑距离 前言 思路 算法实现 总结 583. 两个字符串的删除操作 题目链接 文章链接 前言 本题与上一题不同的子序列相比&#xff0c;变化就是两个字符串都可以进行删除操作了。 思路 利用动规五部曲进…

Ocr之TesseractOcr的安装及使用

目录 一、安装环境 二、安装内容 三、安装过程及识别测试 1. 安装过程 2. 程序编写 总结 1. 安装复杂度较低 2. 国外开源Ocr 3. 可设置识别参数 4. 工具类 一、 系统环境windows 10 linux环境也可安装, 可借鉴此篇文章>> | 二、安装内容 Tesseract exe 程序安…

《金融人工智能:用python实现ai量化交易》

融合了数学、python、深度学习以及金融知识&#xff0c;是本推荐的好书。请收藏本文&#xff0c;读后再给大学总结。

React18原理: 核心包结构与两大工作循环

React核心包结构 1 ) react react基础包&#xff0c;只提供定义 react组件(ReactElement)的必要函数一般来说需要和渲染器(react-dom,react-native)一同使用在编写react应用的代码时, 大部分都是调用此包的api比如, 我们定义组件的时候&#xff0c;就是它提供的class Demo ext…

Elasticsearch:适用于 iOS 和 Android 本机应用程序的 Elastic APM

作者&#xff1a;来自 Elastic Akhilesh Pokhariyal, Cesar Munoz, Bryce Buchanan 适用于本机应用程序的 Elastic APM 提供传出 HTTP 请求和视图加载的自动检测&#xff0c;捕获自定义事件、错误和崩溃&#xff0c;并包括用于数据分析和故障排除目的的预构建仪表板。 适用于 …

LeetCode:83和82.删除排序链表中的重复元素I,II

这两题算是链表的基础题&#xff0c;就遍历删除没啥特点&#xff0c; 83甚至不需要考虑第一个结点的特殊情况&#xff0c;属实是名副其实的easy了 LeetCode&#xff1a;21.合并两个有序链表之第一次的特殊情况-CSDN博客 83. 删除排序链表中的重复元素 - 力扣&#xff08;Lee…

[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easyrce解析

先看网页 代码审计&#xff1a; error_reporting(0); &#xff1a;关闭报错&#xff0c;代码的错误将不会显示 highlight_file(__FILE__); &#xff1a;将当前文件的源代码显示出来 eval($_GET[url]); &#xff1a;将url的值作为php代码执行 解题&#xff1a; 题目既然允许…

备战蓝桥杯---动态规划(入门1)

先补充一下背包问题&#xff1a; 于是&#xff0c;我们把每一组当成一个物品&#xff0c;f[k][v]表示前k组花费v的最大值。 转移方程还是max(f[k-1][v],f[k-1][v-c[i]]w[i]) 伪代码&#xff08;注意循环顺序&#xff09;&#xff1a; for 所有组&#xff1a; for vmax.....0…

wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

文章目录 前言一、使用gstreamer 获取 pattern 图片二、代码实例1. pattern 图片作为纹理数据源的代码实例1.1 基于opengles2.0 接口的 egl_wayland_texture2_1.c1.2 基于opengles3.0 接口的 egl_wayland_texture3_1.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3…

算法学习——LeetCode力扣二叉树篇8

算法学习——LeetCode力扣二叉树篇8 669. 修剪二叉搜索树 669. 修剪二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 描述 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high…

Day 44 | 动态规划 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ

完全背包 题目 文章讲解 视频讲解 完全背包和0-1背包的区别在于&#xff1a;物品是否可以重复使用 思路&#xff1a;对于完全背包问题&#xff0c;内层循环的遍历方式应该是从weight[i]开始一直遍历到V&#xff0c;而不是从V到weight[i]。这样可以确保每种物品可以被选择多次…

解决Thymeleaf的地震震中距离展示[[]]双引号报错的问题

目录 前言 一、问题场景还原 1、需求场景 2、系统设计 3、功能实现 4、线数据标注展示 5、页面出错 二、解决Thymeleaf报错 1、错误说明 2、参数改造 3、问题修复 总结 前言 今天是2024年2月12日&#xff0c;农历正月初三&#xff0c;还是农历龙年春节。在这里首先…