c语言每日一练(11)

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。

五道选择题:

1.执行完下面一段程序后输出的值是()

#include<stdio.h>
int main()
{
int a = 1,b = 3,c = 5,d = 4;
int x = 0;
if (a < b)//1
if (c < d) x = 1;//2
else//3
if (a < c)//4
if (b < d) x = 2;//5
else x = 3;//6
else x = 6;//7
else x = 7;//8
printf("%d", x);
}

A、1     B、2     C、3      D、6

解析:易错题, 观察代码发现在代码1之前所做的操作只是简单地对变量初始化,到了代码1之后则是一大堆的if,else,这个地方其实考察的便是if,else的匹配问题,if,else的匹配在没有外界因素的影响之下秉承着就近原则,也就是if和else的相对距离小的会互相匹配上,根据这个我们可以得出,2和3匹配,5和6匹配,4和7匹配,1和8匹配

明白了匹配关系之后我们顺着代码走就行了,首先a<b成立,走到2,c<d不成立,走到3再走到4,a<c成立,走到5,b<d成立,令x=2,剩下的else就不用走了,因为之前已经匹配过了。故最后打印出来的是2,选B

 

拓展:当a=4,b=3,c=5,d=4时会打印出来什么(其他不变),                                           

拓展解析:根据if,else的匹配问题,在a<b不成立时,就已经走到了代码8,令x=7,故最后会打印出7

2、以下程序的运行结果是()

#include<stdio.h>
int main()
{int m = 6;if (m++ > 6)printf("%d\n", m);else printf("%d\n", --m);
}

A、4       B、5      C、 7     D、 6

解析:前面有好好做题的小伙伴看到这道题估计是直呼简单。首先定义并初始化m=6,接着走if,后置++,先使用后++,因此6>6不成立,走到else,此时m=7,最后前置--,先--后使用,所以m-1=6,并打印,故最后输出6,选D

3、以下程序运行的结果是()

#include<stdio.h>
int main()
{int k;int a[3][3] = { 1,2,3,4,5,6,7,8,9 };for (k = 0; k < 3; k++) printf("%d ", a[2 - k][k]);
}

A、3 6 9      B、7 5 3     C、9 6 3     D、3 5 7

解析:观察代码发现,主要部分就是一个循环打印。首先定义了一个二维数组,并在里面存放1,2,3,4,5,6,7,8,9接着在循环中打印二维数组中的对应内容。

循环次数少,不需要找规律直接代入,当k=0时,打印a[2][0],当k=1时,打印a[1][1],当k=2时,打印a[0][2]。a[2][0]根据数组的下标就是打印出第三行第一个元素,也就是7,a[1][1]打印出第二行第二个元素,5,a[0][2]打印出第一行第三个元素,3。综上所述,选A

 

4、有两个字符数组a和b,则以下正确的语句是_________()【多选】
A、printf("%s %s",a,b);      B、scanf(“%s %s”,a,b);
C、scanf("%s %s",&a+1,&b+1);D、printf("%s %s",&a,&b);

解析:易错题,考察的是你对于指针,scanf和printf的综合理解。首先我们要明白的一点就是,数组的名字往往代表着它们的首地址,本题没有特殊情况,下一题我给大家讲一种特殊情况。

选项A,以字符串的形式打印a和b,没取地址,但数组名本身此时是地址,故可以,A正确。选项B,使用scanf对a,b字符串修改,此时数组名依然是地址,没毛病,B正确。

选项C,首先对数组名取地址得到的地址确实就是数组的首地址,但是,它的权重是整个数组,什么意思,就是a+1是跳过一个元素,&a+1则是跳过整个数组,C越界,故错误。选项D,对数组名取地址,得到数组首地址并进行打印,没问题,D正确

 5、在32位平台下程序运行的结果是()

#include<stdio.h>
int main()
{int a = 0;char b[9] = "abc";int arr[3] = { 0 };printf("%d ", sizeof(&a));//1printf("%d ", sizeof(a));//2printf("%d ", sizeof(&b));//3printf("%d ", sizeof(b));//4printf("%d ", sizeof(&arr));//5printf("%d ", sizeof(arr));//6
}

A、4 4 4 4 4 4 B、4 4 4 9 4 3   C、4 4 4 9 4 12   D、4 4 4 9 4 4

解析:在32位平台下地址的字节数为4,因此一遇到地址就直接判定为4。代码1,地址,打印4。代码2,整型变量的字节大小为4,打印4。代码3,地址,打印4。代码4,数组名,地址,打印4,代码5,地址,打印4,代码6,地址,打印4,所以答案为4 4 4 4 4 4,选A,好像很合理,实则大错特错。在使用sizeof的时候数组名所代表的并不是数组首元素的地址而是整个数组   也就是说,sizeof(数组)计算的是整个数组所占的字节数,所以代码4和代码6应该打印出9和12,故答案为,4,4,4,9,4,12选C 

 

 编程题1:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

int diagonalSum(int** mat, int matSize, int* matColSize){
int sum=0;
int i=0;
for(i=0;i<matSize;i++)
{sum+=mat[i][matSize-i-1]+mat[i][i];//将对角线上的加起来
}
if(matSize%2!=0)
//为奇数有重复,要减去
{i=matSize/2;sum-=mat[i][i];
}
return sum;
}

编程题2:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提示:注意细节,避免越界,避免忽略特殊情况,其次还需要注意的一点则是已经有花的地方不能再种了

bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n) {int i = 0;int count = 0;if (n == 0)//特殊情况单独处理return true;if (flowerbedSize == 1)//特殊情况单独处理{if (flowerbed[0] == 0)return true;elsereturn false;}for (i = 0; i < flowerbedSize; i++){if (flowerbed[i] == 1)//有花了就直接跳过{continue;}if (i == 0)//第一个元素和最后一个元素正常处理会越界,单独考虑{if (flowerbed[1] == 0){flowerbed[0] = 1;count++;//种上了计数器+1并修改对应位置的值continue;//种上了就直接返回}elsecontinue;//没种上意味着不能种也返回}if (i == flowerbedSize - 1){if (flowerbed[flowerbedSize - 2] == 0){flowerbed[flowerbedSize - 2] = 1;count++;//种上了计数器+1并修改对应位置的值continue;//种上了就直接返回}elsecontinue;//没种上意味着不能种也返回}if (flowerbed[i - 1] == 0 && flowerbed[i + 1] == 0)//通常情况分析{flowerbed[i] = 1;count++;//种上了计数器+1并修改对应位置的值continue;}}if (n <= count){return true;}elsereturn false;
}

好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O

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

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

相关文章

MySQL 日志

目录 一、日志概述 二、二进制日志 1、开启二进制日志 2、查看二进制文件 3、删除二进制日志文件 4、恢复二进制日志 5、暂时停止二进制日志功能 三、错误日志 1、启动和设置错误日志 2、查看错误日志 3、删除错误日志 四、通用查询日志 五、慢查询日志 一、日志概…

LeetCode 138.复制带随机指针的链表

文章目录 &#x1f4a1;题目分析&#x1f4a1;解题思路&#x1f6a9;步骤一&#xff1a;拷贝节点插入到原节点的后面&#x1f369;步骤一代码 &#x1f6a9;步骤二&#xff1a;控制拷贝节点的random进行连接&#x1f369;步骤二代码 &#x1f6a9;步骤三&#xff1a;拷贝节点解…

【小沐学Unity3d】3ds Max 骨骼动画制作(Mixamo )

文章目录 1、简介2、基本操作2.1 Characters&#xff08;角色&#xff09;2.2 Animations&#xff08;动画&#xff09; 3、常见问题FAQ3.1 问题一3.2 问题二 结语 1、简介 官网地址&#xff1a; https://www.mixamo.com/#/ 使用 Mixamo 上传和装配 Adobe Fuse CC 3D 人物、自…

STM32 CAN 波特率计算分析

这里写目录标题 前言时钟分析时钟元到BIT 前言 CubeMX中配置CAN波特率的这个界面刚用的时候觉得非常难用&#xff0c;怎么都配置不到想要的波特率。接下来为大家做一下简单的分析。 时钟分析 STM32F4的CAN时钟来自APB1 在如下界面配置&#xff0c;最好配置为1个整一点的数。…

积跬步至千里 || 数学基础、算法与编程

数学基础、算法与编程 1. BAP 技能 BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基&#xff0c;这三个相辅相成又各有区别。 &#xff08;1&#xff09;数学以线性代数为主要研究工具和部分微积分技术为手…

【QT】绘制旋转等待

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 程序中经常会遇到耗时的操作,需要提供等待的窗口,防止用户多次点击造成卡顿等问题。本文分享旋转等待技术,希望对各位小伙伴有所帮助!结果如下:

记录帖子-开发过程中遇到的问题和感悟记录

记录帖子1:2023年08月25日结束开发 前端规范 1.关于计算属性 计算属性关联的变量不可以过多&#xff0c;同时要保证关联的变量在代码中的变换次数不可过多 例如这段代码的this.options内部数据变化过多&#xff0c;导致计算属性调用次数过多导致页面卡顿 2.关于自定义v-mod…

求生之路2社区服务器sourcemod安装配置搭建教程centos

求生之路2社区服务器sourcemod安装配置搭建教程centos 大家好我是艾西&#xff0c;通过上文我们已经成功搭建了求生之路2的服务端。但是这个服务端是纯净的服务端&#xff0c;就是那种最纯粹的原版。如果想要实现插件、sm开头的命令等功能&#xff0c;需要安装这个sourcemod。…

【golang】for语句和switch语句

使用携带range子句的for语句时需要注意哪些细节&#xff1f; numbers1 : []int{1, 2, 3, 4, 5, 6} for i : range numbers1 {if i 3 {numbers1[i] | i} } fmt.Println(numbers1)这段代码执行后会打印出什么内容&#xff1f; 答案&#xff1a;[1 2 3 7 5 6] 当for语句被执行…

什么是devos勒索病毒,中招之后该怎么办?勒索病毒解密,数据恢复

Devos勒索病毒是一种比较常见的勒索病毒病毒&#xff0c;它利用加密技术来锁定用户的文件&#xff0c;并要求支付赎金才能解锁。这种病毒已经引起了全球范围内的关注&#xff0c;也给众多的企业主和个人造成了不可估量的损失。 Devos勒索病毒的起源尚不清楚&#xff0c;但它的攻…

UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?

文章作者&#xff1a;里海 来源网站&#xff1a;王牌飞行员_里海_里海NX二次开发3000例,C\C,Qt-CSDN博客 简介&#xff1a; NX二次开发使用BlockUI设计对话框时&#xff0c;如何设置默认的代码语言&#xff1f; 效果&#xff1a; 方法&#xff1a; 依次打开“文件”->“实用…

考虑储能电池参与一次调频技术经济模型的容量配置方法(matlab代码)

目录 1 主要内容 储能参与调频原理 储能参与一次调频的充放电策略 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文献《考虑储能电池参与一次调频技术经济模型的容量配置方法》模型&#xff0c;以调频效果最优为目标&#xff0c;考虑储能参与一次调频的充放电…

如何开发小程序 3 个月赚 6.18 元

前言 随着 Ai 的崛起&#xff0c;开发者的就业也越来越困难&#xff0c;好像疫情放开后整个世界都变了&#xff0c;全球都在经历经济下行的压力。那么作为个人开发者如何在工作之余获取额外收入呢&#xff1f;笔者也是个一般开发者&#xff0c;没有牛逼的技术实力&#xff0c;…

Eureka:服务注册-信息配置-自我保护机制

首先在提供者服务下&#xff0c;添加一个依赖 <!-- Eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.6.RELEASE</version><…

常见前端面试之VUE面试题汇总七

20. 对 vue 设计原则的理解 1.渐进式 JavaScript 框架&#xff1a;与其它大型框架不同的是&#xff0c;Vue 被设计 为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上 手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的…

智慧课堂学生行为检测评估算法

智慧课堂学生行为检测评估算法通过yolov5系列图像识别和行为分析&#xff0c;智慧课堂学生行为检测评估算法评估学生的表情、是否交头接耳行为、课堂参与度以及互动质量&#xff0c;并提供相应的反馈和建议。智慧课堂学生行为检测评估算法能够实时监测学生的上课行为&#xff0…

c语言中编译过程与预处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、c语言的编译与链接1、编译与链接概述2、编译与链接详解 二、c语言预处理1.c语言中内置的预定义符号2、#define定义标识符3、#define定义宏4、#define 替换规…

理解图傅里叶变换和图卷积

图神经网络&#xff08;GNN&#xff09;代表了一类强大的深度神经网络架构。在一个日益互联的世界里&#xff0c;因为信息的联通性&#xff0c;大部分的信息可以被建模为图。例如&#xff0c;化合物中的原子是节点&#xff0c;它们之间的键是边。 图神经网络的美妙之处在于它们…

缓存最佳实践

目录 前言 一、Cache Aside&#xff08;旁路缓存&#xff09;策略 二、不一致解决场景及解决方案 一、数据库主从不一致 二、缓存与数据库不一致 三、问题分析 三、缓存误用 一、多服务共用缓存实例 二、调用方缓存数据 三、缓存作为服务与服务之间传递数据的媒介 四…

Android相机-HAL子系统

引言 应用框架要通过拍照预览摄像获得照片或者视频,就需要向相机子系统发出请求, 一个请求对应一组结果 一次可发起多个请求&#xff0c;并且提交请求是非阻塞的&#xff0c;始终按照接收的顺序以队列的形式先进先出地进行顺序处理 一个请求包含了拍摄和拍照配置的所有信息&…