C语言小练习(一)

在这里插入图片描述
🌞 “人生是用来体验的,不是用来绎示完美的,接受迟钝和平庸,允许出错,允许自己偶尔断电,带着遗憾,拼命绽放,这是与自己达成和解的唯一办法。放下焦虑,和不完美的自己和解,然后去爱那个完整的自己!”

前面,关于C语言的基础知识都学的差不多,但是想要好好掌握这门语言,还是要勤加练习,从现在到开学,每天会更新一个小练笔,大家可以一起来做一下❗

Day01

  • 📝 一.选择题
  • 📝二.编程题

📝 一.选择题

1.🎈执行下面程序,正确的输出是( )

#include <stdio.h>
int x = 5, y = 7;
void swap()
{int z;z = x;x = y;y = z;
}
int main()
{int x = 3, y = 8;swap();printf("%d,%d\n", x, y);return 0;
}

A: 5,7 B: 7,5 C: 3,8 D: 8,3

🏆答案:C
🔭答题思路:swap函数调用的是全局变量,int x = 3, y = 8;属于局部变量,只在主函数内生效。而主函数内的printf函数考虑局部优先的原则,会输出3,8
在这里插入图片描述

2.🎈以下不正确的定义语句是( )
A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
B: char c2[] = {‘\x10’, ‘\xa’, ‘\8’};
C: char c1[] = {‘1’,‘2’,‘3’,‘4’,‘5’};
D: int y[5+3]={0, 1, 3, 5, 7, 9};

🏆答案:B
🔭答题思路:这里的B选项,就用到了转义字符的知识,详细的也可以去看我另外一篇博客:链接: 转义字符
✅ 这里,我们就知道\ddd中ddd表示1~3个八进制的数字。如:\130 X
八进制数是由0~7组成,题目中B选项就错在了'\8'中出现了8.
\ xdd中dd表示2个十六进制的数字。如:\x30 0
十六进制的数是由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.

3.🎈 test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( )

#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;

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

🏆答案:ACD
🔭答题思路:本题主要需要弄清楚define和typedef#define是一种宏,一般会用在预处理阶段,在预处理阶段,define只会替换,不会做任何的算计逻辑等处理。而typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。用typedef定义数组、指针、结构等类型会带来很大的方便,不仅使程序书写简单,也使意义明确,增强可读性。
🔎那么,在上述代码中,INT_PTR a, b;在预处理阶段就会转化成int*a,b;这里,int *是a的类型,而b的类型是int.typedef是起了一个别名,别名是一个独立的类型,使用这个类型创建的变量都是这个类型,因此c和d都是int*.
我们也可以通过调试来验证一下:
在这里插入图片描述

4.🎈若给定条件表达式 (M)?(a++):(a–) ,则其中表达式 M ( )
A: 和(M==0)等价 B: 和(M ==1)等价C: 和(M!=0)等价 D: 和(M!=1)等价

🏆答案:B
🔭答题思路:本题考察的主要是三目运算符表达式1?表达式2:表达式3
✅唯一 一个三目操作符。
🧩表达式1为真,表达式2的结果为整个表达式的结果,表达式3不算.
🧩表达式1为假,表达式3的结果为整个表达式的结果,表达式2不算。
关于操作符的详细知识点,可以跳转见博客:操作符(上)
操作符(下)本题只要知道了操作符的相关知识,就不难解出!

5.🎈有如下定义语句,则正确的输入语句是【多选】( )

int b;
char c[10];

A: scanf(“%d%s”,&b,&c); B: scanf(“%d%s”,&b,c);
C: scanf(“%d%s”,b,c); D: scanf(“%d%s”,b,&c);

🏆答案:AB
🔭答题思路:作为字符数组,c和&c的地址一致,但是,对于整型变量b,想要取它的地址,必须是&b.

📝二.编程题

1.🎈输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

  1. 用返回一个整数列表来代替打印
  2. n 为正整数,0 < n <= 5

OJ链接【牛客网题号: JZ17 打印从1到最大的n位数】【难度:入门】

🔭答题思路:从题目中,我们知道n的取值范围是正整数1~5当n为1,应当输出[1,2,3,4,5,6,7,8,9] 当n为2时,应当输出[1,2,3...99],当n为3,应当输出[1,2,3...999] 当n为4时,应当输出[1,2,3...9999]当n为5时,应当输出[1,2,3...99999]我们发现最大的那位数都可以用10^n^-1来表示,那么打印的过程,我们可以用for循环来实现。

int* printNumbers(int n, int* returnSize)
{*returnSize = pow(10, n) - 1;int* ret = (int*)malloc(sizeof(int) * (*returnSize));//申请足够大的空间//malloc函数是用于动态内存分配的int i = 0;for (i = 0; i < *returnSize; i++){*(ret + i) = i + 1;//下标从0开始,数值从1开始}return ret;
} 

在这里插入图片描述
📖malloc是动态内存分配函数,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址。如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

注意:malloc函数的返回的是无类型指针,在使用时一定要强制转换为所需要的类型。❗
🏆在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放会造内存泄漏。
🔎在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动之后可能出现申请的空间和释放空间大小的不匹配。
📝具体使用方法:指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)

2.🎈根据输入的日期,计算是这一年的第几天。输入保证年份为4位数且日期合法。
输入描述:输入一行,每行空格分割,分别是年,月,日。
输出描述:输出是这一年的第几天
OJ链接【牛客网题号: HJ73 计算日期到天数转换】【难度:简单】

🔭答题思路:拿到这个题目,我们首先想到的是,我们需要判断这一年是否为闰年,闰年的二月有29天,而其他普通年份二月只有28天。那么如果月份大于2,总天数就要进行+1的操作。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int year = 0, month = 0, day = 0;scanf("%d%d%d", &year, &month, &day);int month_day[12] = { 31,59,90,120,151,181,212,243,273,304,334,365 };//建立一个整型数组,表示普通年份,前month个月数的天数和int days = 0;if (month >= 2){days = month_day[month - 2] + day;}elsedays = day;if (month > 2){if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//如果是闰年,天数+1{days++;}}printf("%d\n", days);return 0;
}

在这里插入图片描述

好啦,第一天的练习到这里就结束啦!后期会继续更新C语言的小练笔,欢迎大家持续关注、点赞和评论!❤️❤️❤️

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

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

相关文章

【k8s、云原生】基于metrics-server弹性伸缩

第四阶段 时 间&#xff1a;2023年8月18日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于metrics-server弹性伸缩 目录 一、Kubernetes部署方式 &#xff08;一&#xff09;minikube &#xff08;二&#xff09;二进制包 &#xff08;三&#xff09;Kubeadm 二…

算法与数据结构-哈希算法

文章目录 什么是哈希算法哈希算法的应用安全加密唯一标识数据校验散列函数负载均衡数据分片分布式存储 一致性哈希算法 什么是哈希算法 哈希算法的定义和原理非常简单&#xff0c;基本上一句话就可以概括了。将任意长度的二进制值串映射为固定长度的二进制值串&#xff0c;这个…

nginx+php 出现502 bad gateway

nginxphp 出现502 bad gateway&#xff0c;一般这都不是nginx的问题&#xff0c;而是由于 fastcgi或者php的问题导致的&#xff0c;常见的有以下几种。 1. php.ini 的memory_limit 过小&#xff08;如果有个别php程序进程需要占用极大内存时这个必须注意&#xff09; 2. ph…

QT使用QML实现地图绘制虚线

QML提供了MapPolyline用于在地图上绘制线段&#xff0c;该线段是实线&#xff0c;因此我使用Canvas自定义绘制的方式在地图上绘制线段&#xff0c;如图&#xff1a; 鼠标在地图上点击后&#xff0c;在点击位置添加图标 &#xff0c;当有多个图标被添加到地图上后&#xff0c;计…

windows vscode使用opencv

1.windows vscode使用opencv 参考&#xff1a;https://blog.csdn.net/zhaiax672/article/details/88971248 https://zhuanlan.zhihu.com/p/402378383 https://blog.csdn.net/weixin_39488566/article/details/121297536 g -g .\hello_opencv.cpp -stdc14 -I E:\C-software\…

关于查看处理端口号和进程[linux]

查看端口号 lsof -i:端口号如果-bash: lsof: 未找到命令那我们可以执行yum install lsof 删除端口号进程 一般我们都会使用kill命令 kill -l#列出所有可用信号1 (HUP)&#xff1a;重新加载进程。9 (KILL)&#xff1a;杀死一个进程。15 (TERM)&#xff1a;正常停止一个进程。 …

听GPT 讲Prometheus源代码--discovery

Prometheus是一个开源的系统监控和警报工具包&#xff0c;以下是Prometheus源代码中一些主要的文件夹及其作用&#xff1a; cmd/&#xff1a;这个目录包含了Prometheus主要的命令行工具&#xff0c;如prometheus/&#xff0c;promtool/等。每个子目录都代表一个可执行的命令行应…

Graphql中的N+1问题

开篇 原文出处 Graphql 是一种 API 查询语言和运行时环境&#xff0c;可以帮助开发人员快速构建可伸缩的 API。然而&#xff0c;尽管 Graphql 可以提供一些优秀的查询性能和数据获取的能力&#xff0c;但是在使用 Graphql 的过程中&#xff0c;开发人员也会遇到一些常见问题&…

ajax-axios-url-form-serialize 插件

AJAX AJAX 概念 1.什么是 AJAX ? mdn 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中&#xff0c;使用 AJAX技术&#xff08;XHR对象&#xff09;发起获取省份列表数据的请求&#xff0c;服务器代码响应准备好的省份列表数据给前端&#xff0c;前端拿到数据数…

PCTA 认证考试高分通过经验分享

作者&#xff1a; msx-yzu 原文来源&#xff1a; https://tidb.net/blog/0b343c9f 序言 我在2023年8月10日&#xff0c;参加了 PingCAP 认证 TiDB 数据库专员 V6 考试 &#xff0c;并以 90分 的成绩通过考试。 考试总分是100分&#xff0c;超过60分就算通过考试。试卷…

Mysql 使用JSON_SEARCH函数 判断多表查询时,某个拼接字段是否包含另外一个字段

场景 两个表管理查询 关联字段为A表id, B表的ids A表id是正常的整数, B的ids是id拼接成的字符类型, 格式是111,222,333这样的. A: B: id ids11 11,22,3322 33,44,5533 …

Dubbo 核心概念和架构

以上是 Dubbo 的工作原理图&#xff0c;从抽象架构上分为两层&#xff1a;服务治理抽象控制面 和 Dubbo 数据面 。 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件&#xff0c;而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管…

区块链碎碎念

现在的区块链早已过了跑马圈地的时代&#xff0c;现在还按照以前承接项目的方式做区块链只能是越来越艰难。经过几年的技术沉淀&#xff0c;做区块链项目的公司都已经没落的七七八八了。 区块链不是一个能够快速显现盈利能力的行业&#xff0c;相反这个行业目前的模式还是处于…

算法通关村第十关 | 快速排序

1.快速排序的基本过程 快速排序是分治法运用到排序问题的典型例子&#xff0c;基本思想是&#xff1a;通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right&#xff0c;其中left中的元素都比pivot小&#xff0c;right的都比pivot的大&#xff0c;然后再次对l…

mybatis入门的环境搭建及快速完成CRUD(增删改查)

又是爱代码的一天 一、MyBatis的介绍 ( 1 ) 背景 MyBatis 的背景可以追溯到 2002 年&#xff0c;当时 Clinton Begin 开发了一个名为 iBATIS 的持久化框架。iBATIS 的目标是简化 JDBC 编程&#xff0c;提供一种更直观、易用的方式来处理数据库操作。 在传统的 JDBC 编程中&…

登录失败的 JSON 提示

登录失败的 JSON 提示 如果失败了&#xff0c;默认会跳转到Web工程根目录下的/login.jsp页面&#xff0c;可以配置factoryBean.setLoginUrl(“/myLogin”); 认证失败后会跳转到 setLoginUrl 这个方法指定的路径中 FormAuthenticationFilter 是 Shiro 框架中用于处理基于表单的身…

arm:day4

1. 实现三盏灯的点亮 .text .global _start_start: led1初始化函数LED_INIT: 1 通过RCC_AHB4_ENSETR寄存器&#xff0c;设置GPIOE F组控制器使能 0x50000A28[5:4]1ldr r0,0X50000A28ldr r1,[r0]orr r1,r1,#(0X3<<4)str r1,[r0] 2.1 通过GPIOE_MODER寄存器&#xff0c;…

Jmeter生成可视化的HTML测试报告

Jmeter也是可以生成测试报告的。 性能测试工具Jmeter由于其体积小、使用方便、学习成本低等原因&#xff0c;在现在的性能测试过程中&#xff0c;使用率越来越高&#xff0c;但其本身也有一定的缺点&#xff0c;比如提供的测试结果可视化做的很一般。 不过从3.0版本开始&…

【排序】选择排序

文章目录 选择排序时间复杂度空间复杂度稳定性 代码 选择排序 以从小到大为例进行说明。 选择排序就是定义出一个最小值下标&#xff0c;然后遍历整个剩下的数组选择出最小的放进最小值下标的位置。 时间复杂度 O(N) 遍历一次即可 空间复杂度 O(1) 稳定性 不稳定 代码 p…

HJ21 简单密码

描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应&#xff1a; 1--1&#xff0c; abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0&#xff0c;把密码中出现的小写字母都变成九键键盘对应的数字&#xff0c;如&#xff1a;a 变成 2&…