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.hqwc.cn/news/83801.html

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

相关文章

Jira vs Trello:项目管理的深层巅峰对决

引言 项目管理在现代企业运作中起着至关重要的作用。从跨国公司的巨大项目&#xff0c;到创业公司的快速反应&#xff0c;再到个人的日常任务管理&#xff0c;一个好的项目管理工具可以有效地跟踪进度&#xff0c;优化资源分配&#xff0c;确保项目在预定时间内完成。今天&…

【C++杂货铺】探索vector的底层实现

文章目录 一、STL1.1 什么是STL?1.2 STL的版本1.3 STL的六大组件 二、vector的介绍及使用2.1 vector的介绍2.2 vector的使用2.2.1 vector的定义2.2.2 vector iterator2.2.3 vector空间增长问题2.2.4 vector增删查改 2.3 vector\<char\> 可以替代 string 嘛&#xff1f; …

Docker容器:本地私有仓库、harbor私有仓库部署与管理

文章目录 一.本地私有仓库1.本地私有仓库概述2.搭建本地私有仓库3.容器重启策略简介 二.harbor私有仓库部署与管理1.什么是harbor2.Harbor的特性3、Harbor的构成4.Harbor私有仓库架构及数据流向5.harbor部署及配置&#xff08;192.168.198.11&#xff09;&#xff08;1&#xf…

RT-Thread内核学习

内核框架 内核是操作系统最基础也是最重要的部分&#xff0c;内核处于硬件层之上&#xff0c;内核部分包括内核库、实时内核实现。 内核库是为了保证内核能够独立运行的一套小型的类似C库的函数实现子集。这部分根据编译器不同自带C库的情况也会不同。 当使用GNU GCC编译器时&…

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-RequestParam &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c…

python爬虫的js逆向入门到进阶教程文章分享汇总~持续更新

目录 一、内容介绍二 、专栏内容-持续更新1、JS逆向入门2、Js逆向进阶3、爬虫基础知识4、工具与安装5、漫星内容分享 三、星球使用四、b站up主视频推荐 一、内容介绍 二 、专栏内容-持续更新 1、JS逆向入门 2023-08-25》11.常见加密>xx音乐RSA加密 https://articles.zsxq.c…

微信小程序开发教学系列(4)- 数据绑定与事件处理

4. 数据绑定与事件处理 在微信小程序中&#xff0c;数据绑定和事件处理是非常重要的部分。数据绑定可以将数据和页面元素进行关联&#xff0c;实现数据的动态渲染&#xff1b;事件处理则是响应用户的操作&#xff0c;实现交互功能。本章节将详细介绍数据绑定和事件处理的基本原…

STM32--SPI通信与W25Q64(1)

文章目录 前言SPI通信硬件电路移位过程 SPI时序起始与终止条件交换一个字节 W25Q64硬件电路框图 FLASH操作注意事项软件SPI读写W25Q64 前言 USART串口链接入口 I2C通信链接入口 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速的、全双工、同步的串…

C#__自定义类传输数据和前台线程和后台线程

// 前台线程和后台线程 // 默认情况下&#xff0c;用Thread类创建的线程是前台线程。线程池中的线程总是后台线程。 // 用Thread类创建线程的时候&#xff0c;可以设置IsBackground属性&#xff0c;表示一个后台线程。 // 前台线程在主函数运行结束后依旧执行&#xff0c;后台线…

用 Audacity 比较两段音频差异

工作中遇到相同的处理流程&#xff0c;处理同一段音频&#xff0c;看看处理结果是否一致&#xff0c;可以用audacity来处理。 假设待比较的音频分别为 1.wav 2.wav 1、用Audacity打开1.wav 2、用Audacity打开2.wav&#xff0c;选中音频&#xff0c;然后用 效果 -> 反向&am…

弯道超车必做好题集锦二(C语言选择题)

前言&#xff1a; 编程想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#xff01;为此我开启了一个弯道超车必做好题锦集的系列&#xff0c;每篇大约10题左右。此为第二篇选择题篇&#xff0c;该系列会不定期更新&#xff0c;后续还会…

解决idea登录github copilot报错问题

试了好多方案都没用&#xff0c;但是这个有用&#xff0c; 打开idea-help-edit custonm vm options 然后在这个文件里面输入 -Dcopilot.agent.disabledtrue再打开 https://github.com/settings/copilot 把这个设置成allow&#xff0c;然后重新尝试登录copilot就行就行 解决方…