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

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:自除数

思路一:

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

思路二:

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

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


选择题:

题一:

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

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

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

                                              

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时间提醒软件哪个好用?规划时间管理用哪一款提醒工具

在现代繁忙的工作生活中&#xff0c;时间成了我们最宝贵的资源之一。在时间快速流失的时代&#xff0c;我们需要一款能够有效管理工作计划的软件&#xff0c;特别是在电脑上进行记录和提醒。敬业签&#xff0c;作为一款值得信赖的时间管理工具&#xff0c;为我们的工作提供了高…

一文带你简单了解一下堡垒机是干嘛的!

随着国家对网络安全的重视&#xff0c;随着等保政策的落地执行&#xff0c;越来越多的企业知道了堡垒机。但对于堡垒机的作用还不是很了解&#xff0c;很多人在问&#xff0c;堡垒机是干嘛的、这里我们小编就跟大家来简单唠唠。 首先我们来看看什么是堡垒机&#xff1f; 堡垒…

基于YOLO算法与intel深度相机三维测量(工件尺寸和物体尺寸)

目录 1.简介 1.1 intel D4系列深度相机 (D455) 1.2 yolo算法 2.功能实现 2.1构思&#xff1a; 2.2 主代码 这篇文章还是接着前面的几篇文章的项目延申&#xff0c;这个是最初的方案&#xff0c;因为太贵被否了。 1.简介 1.1 intel D4系列深度相机 (D455) Intel RealSen…

文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题

二、用go语言&#xff0c;用一个单链表 L实现一个栈。要求操作 PUSH和 POP 的运行时间仍为 O(1)。 文心一言&#xff1a; 在 Go 语言中&#xff0c;我们可以用结构体来实现一个单链表&#xff0c;然后再用栈的相关操作。 以下是一个可能的实现方式&#xff1a; package mai…

进来了解实现官网搜索引擎的三种方法

做网站的目的是对自己的品牌进行推广&#xff0c;让越来越多的人知道自己的产品&#xff0c;但是如果只是做了一个网站放着&#xff0c;然后等着生意找上门来那是不可能的。在当今数字时代&#xff0c;实现官网搜索引擎对于提升用户体验和推动整体性能至关重要。搜索引擎可以帮…

4+1视图与UML

目录 逻辑视图过程视图开发视图物理视图&#xff08;部署视图&#xff09;用例视图 41视图&#xff0c;即逻辑视图&#xff0c;过程视图&#xff0c;实现视图&#xff0c;部署视图&#xff0c;用例视图。 为什么不用一个视图&#xff1f; 针对多个用户&#xff0c;即终端用户&a…

python - excel 设置样式

文章目录 前言python - excel 设置样式1. 准备2. 示例2.1. 给单元格设置样式"等线"、大小为24磅、斜体、红色颜色和粗体2.2. 给第二行设置样式"宋体"、大小为16磅、斜体、红色颜色和粗体2.3. 给第三行数据设置垂直居中和水平居中2.4. 给第四行设置行高为30…

协同办公解决方案:你需要了解的5个关键点

随着互联网技术的不断发展和应用&#xff0c;协同办公已成为现代企业不可或缺的一部分。协同办公解决方案不仅提高了企业的工作效率&#xff0c;还加强了团队的协作和沟通。本文将介绍协同办公解决方案的5个关键点&#xff0c;帮助你更好地了解这一领域的发展。 一、协同办公解…

基于Cucumber的行为驱动开发(BDD)实例

本篇介绍 Cucumber 的基本使用&#xff0c; 因为Cucumber是BDD的工具&#xff0c; 所以首先需要弄清楚什么是BDD&#xff0c;而在介绍BDD之前&#xff0c;先看看常见的软件开发方法。 常见的软件开发方法 面向过程开发&#xff08;Procedural Development&#xff09;&#x…

【算法笔记】LCR 086. 分割回文串

基本思想是使用回溯法&#xff0c;回溯法都可以将问题划分为一个解空间树&#xff1a;假设字符串s为"aab"&#xff0c;那么我们可以使用深度优先搜索去构建解空间树&#xff1a; dfs遍历出来的第一个序列是[a, a, b]&#xff0c;显然该序列都是回文子串&#xff0c;…

如何有效改进erp管理系统?erp管理系统改进建议方向

前言&#xff1a; 说到erp&#xff0c;全称是企业资源计划&#xff0c;这可是企业管理的大杀器&#xff0c;也是现在企业管理的必备神器。它的出身可以追溯到上世纪90年代&#xff0c;那时候的企业管理可是个大难题&#xff0c;各种资源调配不灵光&#xff0c;企业主们急需一种…

[ROS2系列] ubuntu 20.04测试rtabmap 3D建图(二)

接上文我们继续 如果我们要在仿真环境中进行测试&#xff0c;需要将摄像头配置成功。 一、配置位置 sudo vim /opt/ros/foxy/share/turtlebot3_gazebo/models/turtlebot3_waffle/model.sdf 二、修改 <joint name"camera_rgb_optical_joint" type"fixed&…