C语言:选择+编程(每日一练Day9)

2023-10-27

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:自除数

思路一:

题二:除自身以外数组的乘积

思路二:

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题:

题一:

1、下列程序的输出是( )
#include<stdio.h>
int main()
{
        int a [12]= {1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
        for(i=0;i<4;i++)
        p[i]=&a [i*3];
        printf("%d\n",p[3][2]);
        return 0;
}

A: 上述程序有错误    B:  C: 8    D: 12

答案解析:

        p是一个指针数组,p[i] = &a[i*3]相当于是把数组a每3个一组分开并把每组的首地址存在p数组,此时p类似一个4行3列的二维数组,p[3][2]就是4行第3个元素12。

题二:

2、二维数组X按行顺序存储,其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为( )

A: Oxf8b821c4       B: Oxf8b821a6

C: Oxf8b82198       D: Oxf8b821c0

答案解析:

        假设每行有n个元素:那x[9][9]元素的地址 - x[4][4]元素的地址 = 0x21c0x140=5n+5(21c和140是地址末三位的十六进制数),这里n是43,假设x[7][7]的地址是z,x[7][7]元素的地址 - x[4][4]元素的地址 = z-0x140 = 3n+3,z = 3n+3+140 =3*43+3+0x140 = 0x84+0x140 = 0x1c4,看地址的尾数,选择A。

题三:

3、以下哪个选项可以正确描述 sizeof(double) ( )

A: 一个整型表达式              B: 一个双精度型表达式

C: 一个不合法的表达式       D: 一种函数调用

答案解析:

        sizeof是C语言中的一个操作符,不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数,结果是无符号整数,因此可以把它看作是整型表达式。所以选择A。

题四:

4、下列代码运行后的结果是什么( )
int main()
{
        char a = 'a',b;
        printf("%c,", ++a);
        printf("%c\n", b = a++);
        return 0;
}

A: b,b    B: b,c    C: a,b    D: a,c

答案解析:

        变量a里边存的是字符'a',第一次输出先加加再输出,输出的是'b';第二次输出的时候,a先赋值再加加,赋值给b的就是a原来的值,输出b的时候的还是‘b’。

题五:

5、以下逗号表达式的值为( )
(x= 4 * 5 , x * 5) , x + 5;

A: 25     B: 20    C: 100    D: 45

答案解析:

        逗号表达式是从前到后依次计算子表达式,而其结果是最后一项的值,此题去掉括号后的表达式,和原表达式是等价的,先计算4*5并赋值给x,x变为20,中间x*5并没有改变x的值,最后一项x+5值是25,也就是整个表达式的值。

编程题:

题一:自除数

728. 自除数 - 力扣(LeetCode)

示例 1:

输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

思路一:

        第一步:returnSize的初始值设为“0”,开辟足够容纳所有可能值的数组num

        第二步:将题目所给的值域遍历一遍,每次用“n”记录当前遍历值

        第三步:在确保每次都将一个数遍历完,当n=“0”,就循环结束,否则开始判断是不是自除数,分别拿到个位、十位、百位的数值并取余

        第四步:如果最后n的值为“0”,说明是自除数放入数组中,否则,不是。

int* selfDividingNumbers(int left, int right, int* returnSize)
{
    int i = 0;
    *returnSize = 0;
    //开辟数组空间
    int* num = (int*)malloc(4000);
    //遍历数组所给元素范围
    for(i = left; i <= right;i++)
    {
        int n = i;
        //确保每次都将一个数遍历完
        for(int j = 0;j < 4;j++)
        {
            //n为0,就不执行
            if(n % 10 != 0)
            {
                int k = n % 10;
                //判断是不是自除数
                if(i % k == 0)
                {
                    n = n / 10;
                }
            }
        }
        //最后遍历完的就是自除数
        if(n == 0)
        {
            num[(*returnSize)++] = i;
        }
    }
    return num;
}

题二:除自身以外数组的乘积

238. 除自身以外数组的乘积 - 力扣(LeetCode)

示例 1:

输入: nums = [1,2,3,4]
输出: [24,12,8,6]

思路二:

需要明确知道: 题目意思是数组下标位置定义的值为除了自身以外数组里的所有元素相乘的值!

        第一步:分别定义两个足够大小的数组前缀arr1(当前数之前所有元素的乘积),后缀arr2(当前数之后所有元素的乘积),开辟相同大小的数组tmp;

        第二步:前缀:前缀数组第一个元素为“1”即arr1[i] = left;,然后乘以原数组的第“i”位,得到的值放到left中;

        第三步:从后往前,后缀:后缀数组最后一个元素为“1”即arr2[i] = right;然后乘以原数组的第“i”位,得到的值放到right中;

        第四步:前缀与后缀的各个对应的元素相乘就是除自身以外的所有元素相乘。

//题目意思是数组下标位置定义的值为除了自身以外数组里的所有元素相乘的值
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{
    int n = numsSize;
    int arr1[100000] = {0};
    int arr2[100000] = {0};
    //开辟空间
    int* tmp = (int*)malloc(sizeof(int)*n);
    *returnSize = n;
    int left = 1;
    int right = 1;
    int i = 0;
    //计算各个元素的前缀
    for(i = 0;i < n;i++)
    {
        arr1[i] = left;
        left = arr1[i] * nums[i];
    }
    //计算各个元素的后缀
    for(i = n-1;i >= 0;i--)
    {
        arr2[i] = right;
        right = right * nums[i];
    }
    //前缀乘以后缀即结果
    for(i = 0;i < n;i++)
    {
        tmp[i] = arr1[i] * arr2[i];
    }

    return tmp;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言:选择+编程(每日一练Day9) 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 车载以太网和工业以太网区别

    车载以太网使用单对非屏蔽电缆以及更小型紧凑的连接器 使用非屏蔽双绞线时可支持15m的传输距离 对于屏蔽双绞线可支持40m 这种优化处理使车载以太网可满足车载EMC要求 可减少高达80 的车内连接成本和高达30 的车内布线重量 100M车载以
  • 【满分】【华为OD机试真题2023 JAVA&JS】分奖金

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 分奖金 知识点栈 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司老板做了一笔大生意 想要给每位员工分配一些奖金 想通过游戏的方式来决定每个人分多少钱 按照员
  • SpringBoot-Kafka使用(一)

    一 简介 Kafka认识一下 Kafka异军突起 是近来非常火热的一款消息中间件 消息中间件的作用非常多 常用作系统业务的解耦 例如最常听到的秒杀业务 我们也能使用消息中间件对业务进行解耦 用户发起秒杀请求后 系统首先会将该请求转发到中间件
  • networkmanger开机自启动

    可以在系统设置中启用 NetworkManager 服务的开机自启动 如果使用的是 Ubuntu 系统 可以使用下面的命令开启 sudo systemctlenable NetworkManager service 然后重启系统 Netwo
  • 矩阵分析——LU分解

    LU分解初步 矩阵的LU分解主要用来求解线性方程组或者计算行列式 在使用初等行变换法求解线性方程组的过程中 系数矩阵的变化情况如下 由上可知 其中U就是上面矩阵A经过行变换后的上三角矩阵 Eij表示将i行元素与j行元素互换的初等矩阵 Eij
  • 谈民营企业股份制改制面临问题

    改革开放以来 民营企业是拉动中国经济增长的重要力量 是中国经济的重要组成部分 是国民经济发展的一支生力军 为国家经济发展做出了巨大的贡献 股份制改制对促进民营企业健康稳定发展起着至关重要的作用 然而 当前民营企业在股份制改制中存在产权不清晰
  • 【python数据挖掘课程】十.Pandas、Matplotlib、PCA绘图实用代码补充

    这篇文章主要是最近整理 数据挖掘与分析 课程中的作品及课件过程中 收集了几段比较好的代码供大家学习 同时 做数据分析到后面 除非是研究算法创新的 否则越来越觉得数据非常重要 才是有价值的东西 后面的课程会慢慢讲解Python应用在Hadoo
  • 【Shell牛客刷题系列】SHELL23 nginx日志分析1-IP统计

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Shell 欢迎关注专栏 本文知识预告 本文首先复习了substr 截取字符串函数和sor
  • 【H.264/AVC视频编解码技术详解】十三、熵编码算法(3):CAVLC原理

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • 高德vue-amap使用(一)标记点位获取地址及经纬度

    vue高德地图 图片示例 准备工作 安装与配置 npm安装 main js配置 使用 父组件 子组件 图片示例 准备工作 高德开放平台 https lbs amap com 注册登录后进入控制台 在应用管理下我的应用里创建应用添加key 就
  • PAT乙级1039 到底买不买 (20 分)

    1039 到底买不买 20 分 一 问题描述 小红想买些珠子做一串自己喜欢的珠串 卖珠子的摊主有很多串五颜六色的珠串 但是不肯把任何一串拆散了卖 于是小红要你帮忙判断一下 某串珠子里是否包含了全部自己想要的珠子 如果是 那么告诉她有多少多余
  • Android音频系统之AudioFlinger(二)

    1 1 1 音频设备的管理 虽然AudioFlinger实体已经成功创建并初始化 但到目前为止它还是一块静态的内存空间 没有涉及到具体的工作 从职能分布上来讲 AudioPolicyService是策略的制定者 比如什么时候打开音频接口设备
  • LeetCode-1344. Jump Game V

    Given an array of integers arr and an integer d In one step you can jump from index i to index i x where i x lt arr leng
  • 计算机网络笔记:动态主机配置协议(DHCP)

    协议配置 为了把协议软件做成通用和便于移植的 协议软件的编写者不会把所有的细节都固定在源代码中 相反 他们把协议软件参数化 这就使得在很多台计算机上有可能使用同一个经过编译的二进制代码 一台计算机和另一台计算机的很多区别 都可以通过一些不同
  • delphi 自定义popupmenu_delphi PopupMenu动态创建菜单

    动态地创建菜单 通常我们使用以下的语句PopupMenu1 TPopupMenu Create Self Item TMenuItem Create PopupMenu1 Item Caption First Menu Item OnCli
  • 赛元SC92F7250单片机开发

    文章目录 芯片简介 开发环境 安装Keil C51 安装SOC Keil插件 配置Keil环境 基本功能开发 gpio操作 外部中断 定时器 看门狗 EEPROM 注意事项 芯片简介 赛元SC92F7250单片机 是国产的超低成本选择 对于
  • QColorDialog中文翻译完整版

    QColorDialog 界面默认显示英文文本 想要翻译成中文 则进行如下步骤 1 搜索qt安装目录下qt zh CN qm文件 拷贝到你的项目Res文件夹 不要问我为什么在这个文件夹 看到最后的 注意 你就知道了 有很多路径下都有 比如
  • jsonp

    一 cookie封装 function getCookie key 获取所有的cookie document cookie let cookie document cookie username zhangsan password 1234
  • 华为服务器pxe装系统,pxe启动服务器

    pxe启动服务器 内容精选 换一换 根据给定的云服务器ID列表 批量启动云服务器 一次最多可以启动1000台 POST v1 project id cloudservers action参数说明请参见表1 参数说明参数是否必选描述proje
  • C语言:选择+编程(每日一练Day9)

    目录 选择题 题一 题二 题三 题四 题五 编程题 题一 自除数 思路一 题二 除自身以外数组的乘积 思路二 本人实力有限可能对一些地方解释和理解的不够清晰 可以自己尝试读代码 或者评论区指出错误 望海涵 感谢大佬们的一键三连 感谢大佬们的