c语言每日一练(9)
前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。
五道选择题:
1、以下 scanf 函数调用选项中, 错误的是( )
struct T
{
char name[20];
int age;
int sex;
} a[5], *pa=a;
A、scanf("%s",a[0].name);
B、scanf("%d", &pa[0].age);
C、scanf("%d",&(pa->age));
D、scanf("%d", pa->age);
解析:首先,你要明白scanf需要什么,它需要地址,你只要给它对应数据的地址,它就会根据地址对你所给的目标进行修改。
选项A,通过结构体数组访问到结构体,再通过结构体访问到结构体成员,但它访问的是字符数组,而字符数组的本质就是指针,故A正确。选项B,使用结构体数组的方式访问结构体,再通过结构体访问结构体成员,不同于A的是它访问的是整型变量,整型变量没有字符数组那么特殊,因此要取地址,它也取了,故B正确。
选项C,使用->的方式取到了结构体成员,并取了地址,和B雷同,C正确。D选项,与C不同的就在于没有取地址,因此,scanf无法正确地执行,故D错误。
2、关于指针下列说法正确的是【多选】( )
A、 任何指针都可以转化为void * B、 void *可以转化为任何指针
C、 指针的大小为8个字节 D、 指针虽然高效、灵活但可能不安全
解析:C错误,因为指针的大小是随着平台的变化而变化的,当指针处于32位平台时,大小为4,为64位平台时位8,ABD没有问题。
3、请指出以下程序的错误【多选】( )
void GetMemory(char** p, int num)
{if (NULL == p && num <= 0)//1return;*p = (char*)malloc(num);return;
}
int main()
{char* str = NULL;GetMemory(&str, 80); //2if (NULL != str){strcpy(&str, "hello"); //3printf(str); //4} return 0;
}
A、1 B、2 C、3 D、4
解析:代码1错误,因为得同时满足两个条件才会直接报错,但很显然,我们的目的是令num>0,p!=NULL,因此一个有误就得报错。
在语句GetMemory(&str,100);中传入str的地址,在语句char*str=NULL;中str初始化为空指针,但是str指针变量也有地址,所以参数char**p里面的p保存的是指针变量str的地址,所以调用GetMemory函数之后,动态开辟的空间的地址存放在了str中,在函数返回之后没有释放内存,但是这不会导致程序错误,只会导致内存泄漏。故代码2无误。
代码3错误,&str相当于是对地址的地址进行操作了,没操作到该操作的。代码4是正确的,相当于printf("hello");综上所述,选AC
4、下面这个程序执行后会有什么错误或者效果【多选】( )
#define MAX 255
int main()
{
unsigned char A[MAX], i;
for(i = 0; i <= MAX; i++)
A[i] = i;
return 0;
}
A、 数组越界 B、 死循环 C、 栈溢出 D、 内存泄露
解析:选项A,观察代码可以看出创建的数组大小为255,因此,数组下标最大为244,i<=MAX的条件一定会令i达到255,会越界。选项B,每次循环i++,MAX的值是定值,好像不会造成死循环,但i是unsigned char型的,因此,i最大为255,当要超出255时就会像一个圆绕回到0,所以会导致死循环。
C选项,创建的临时变量,在栈中,应该会由系统自动释放,所以是不存在内存泄漏的问题。栈溢出:属于缓冲区溢出的一种。栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围,D选项,无稽之谈,我都没有申请空间,所以根本不会有内存泄漏。综上所述,答案为AB
5、请问下列程序的输出是多少( )
#include<stdio.h>
int main()
{unsigned char i = 7;int j = 0;for (; i > 0; i -= 3){++j;}printf("%d\n", j);return 0;
}
A、2 B、死循环 C、173 D、172
解析:unsigned char 型的范围为0~255,为负数的时候也会像圆一样绕回来,反着绕。观察代码,i被初始化为7,每次进行循环i-3,i>0循环继续,每次循环j++,最后打印出j,目标计算循环次数。i=7,循环到i=-2时,由于unsigned char的特殊性会令i=254,254/3=84余2,即i=2,再使i=-1,由于特殊性,i=255,255/3=85,i=0,循环结束。综上所述,循环次数为3+84+1+85=173,故选C

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

思路:猜中次数很好计算,一次循环就可以计算出来,难的是伪猜中的次数。首先,猜中不能被算作伪猜中,那么一旦猜中,那两个被猜中的槽就可以看作配对成功,不用再考虑,可以把它们置为-1。在后期的判定中,一遇到-1便continue切换槽位即可,而一旦伪猜中成功,那两个槽也相当于废掉了,不能在同一个槽伪猜中多次,这是一个隐藏规则,所以把这两个槽也置为-1
#include<stdio.h>
#include<stdlib.h>
int* masterMind(char* solution, char* guess, int* returnSize) {*returnSize = 2;//初始化返回的数组,因为我们仅仅只需要返回猜中次数和伪猜中次数,所以必定为2int* order = (int*)malloc(sizeof(int) * 2);//创建返回数组int i = 0; int j = 0;int count_true = 0;//猜中次数计数int count_false = 0;//伪猜中次数计数for (i = 0; i < 4; i++)//一共四个槽,所以solution和guess的数组大小都为4{if (solution[i] == guess[i]){count_true++;solution[i] = -1;guess[i] = -1;//由于猜中的槽,伪猜中的不能重复,所以置为-1,用来判定}}for (i = 0; i < 4; i++){if (solution[i] == -1){continue;}for (j = 0; j < 4; j++){if (guess[j] == -1){continue;}if (solution[i] == guess[j]){count_false++;solution[i] = -1;guess[j] = -1;}}}order[0] = count_true;//存放猜中次数order[1] = count_false;//存放伪猜中次数return order;//返回目标}
编程题2:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
思路:暴力破解,没什么好说的,两个循环遍历完蛋
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {*returnSize = 2;//只用返回两个数,所以数组大小必定为2int* order = (int*)malloc(sizeof(int) * 2);//创建一个符合条件的数组int i = 0; int j = 0;for (i = 0; i < numsSize; i++){for(j=i+1;j<numsSize;j++){ //减少循环次数if (nums[i] + nums[j] == target)//找到目标,直接储存并返回{order[0] = i;order[1] = j;return order;}}}return NULL;//找不到返回空
}
好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O
相关文章:
c语言每日一练(9)
前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…...
毫米波射频方案分析
豪米波被誉为能够带来令人难以置信的网络吞吐量数据,但迄今为止它的采用一直乏善可陈。 毫米波技术的领导者高通公司认为,他们拥有高达60亿美元的前端机会。这 60亿美元将需要在日本、中国、韩国、欧洲和印度广泛采用 mmWave。尽管有这个巨大的机会&am…...
神经网络基础-神经网络补充概念-04-梯度下降法
概念 梯度下降法是一种常用的优化算法,用于在机器学习和深度学习中更新模型参数以最小化损失函数。它通过迭代地调整参数,沿着损失函数的负梯度方向移动,从而逐步逼近损失函数的最小值。 基本思想 梯度下降法的基本思想是:在每…...
神经网络基础-神经网络补充概念-45-指数加权平均
概念 指数加权平均(Exponential Moving Average,EMA)是一种平均方法,用于平滑时间序列数据或者计算变量的滚动均值。它对数据的权重分布呈指数递减,越靠近当前时刻的数据权重越高,越远离当前时刻的数据权重…...
模型预测笔记(一):数据清洗及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
模型预测 一、导入关键包二、如何载入、分析和保存文件三、修改缺失值3.1 众数3.2 平均值3.3 中位数3.4 0填充 四、修改异常值4.1 删除4.2 替换 五、数据绘图分析5.1 饼状图5.1.1 绘制某一特征的数值情况(二分类) 5.2 柱状图5.2.1 单特征与目标特征之间的…...
【Pytroch】基于K邻近算法的数据分类预测(Excel可直接替换数据)
【Pytroch】基于K邻近算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 K最近邻(K-Nearest Neighbors,简称KNN)是一种简单但常用的机器学习算法,用于分类和回归问题。它的核心思想是基于已…...
Centos 7 通过Docker 安装MySQL 8.0.33实现数据持久化及my.cnf配置
要在 CentOS 7 上使用 Docker 启动 MySQL 8.0.33,并配置 MySQL 的 my.cnf 文件,同时实现 MySQL 数据的持久化,可以按照以下步骤进行操作: 1、安装 Docker:确保你在 CentOS 7 上已经安装了 Docker。如果尚未安装&#…...
自夹持P型屏蔽型碳化硅沟槽型绝缘栅双极晶体管,用于低开通电压和开关损耗
目录 标题:Self-Clamped P-shield SiC Trench IGBT for Low On-State Voltage and Switching LossProceedings of the 35st International Symposium on Power Semiconductor Devices & ICs摘要信息解释研究了什么文章的创新点文章的研究方法文章的结论 标题&am…...
【数据结构与算法——TypeScript】树结构Tree
【数据结构与算法——TypeScript】 树结构(Tree) 认识树结构以及特性 什么是树? 🌲 真实的树:相信每个人对现实生活中的树都会非常熟悉 🌲 我们来看一下树有什么特点? ▫️ 树通常有一个根。连接着根的是树干。 ▫️ 树干到…...
多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测
多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.多维时序 | MATLAB实现PSO-CNN-BiGRU多变量时间序列预测; 2.运行环境为Matlab20…...
Shell 编程基础01
0:目录 1.创建新的虚拟机项目 2.linux常见命令和配置时间同步器 3.文件属性 4.if for while和方法 1.创建新的虚拟机项目 默认下一步到虚拟机命名 默认下一步设置磁盘大小 自定义硬件 删除打印机设置映像地址 启动虚拟机 选择 install centOS 7 选择英文 设置时…...
Cross-Site Scripting
文章目录 反射型xss(get)反射型xss(post)存储型xssDOM型xssDOM型xss-xxss-盲打xss-过滤xss之htmlspecialcharsxss之href输出xss之js输出 反射型xss(get) <script>alert("123")</script>修改maxlength的值 反射型xss(post) 账号admin密码123456直接登录 …...
基于java企业员工绩效考评系统设计与实现
摘 要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器,比人类的脑袋要灵光无数倍,什么…...
SpringBoot 操作Redis、创建Redis文件夹、遍历Redis文件夹
文章目录 前言依赖连接 RedisRedis 配置文件Redis 工具类操作 Redis创建 Redis 文件夹查询数据遍历 Redis 文件夹 前言 Redis 是一种高性能的键值存储数据库,支持网络、可基于内存亦可持久化的日志型,而 Spring Boot 是一个简化了开发过程的 Java 框架。…...
c++11 标准模板(STL)(std::basic_stringbuf)(六)
定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbu…...
iceberg系列之 hadoop catalog 小文件合并实战
背景 flink1.15 hadoop3.0pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…...
神经网络基础-神经网络补充概念-25-深层神经网络
简介 深层神经网络(Deep Neural Network,DNN)是一种具有多个隐藏层的神经网络,它可以用来解决复杂的模式识别和特征学习任务。深层神经网络在近年来的机器学习和人工智能领域中取得了重大突破,如图像识别、自然语言处…...
MySQL— 基础语法大全及操作演示!!!(上)
MySQL—— 基础语法大全及操作演示(上) 一、MySQL概述1.1 、数据库相关概念1.1.1 MySQL启动和停止 1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.3.1 DDL — 数据库操作2.3.1 DDL — 表操作 2.4、DML2.4.1 DML—…...
[golang gin框架] 46.Gin商城项目-微服务实战之后台Rbac客户端调用微服务权限验证以及Rbac微服务数据库抽离
一. 根据用户的权限动态显示左侧菜单微服务 1.引入 后台Rbac客户端调用微服务权限验证功能主要是: 登录后显示用户名称、根据用户的权限动态显示左侧菜单,判断当前登录用户的权限 、没有权限访问则拒绝,参考[golang gin框架] 14.Gin 商城项目-RBAC管理,该微服务功能和上一节[g…...
域名和ip的关系
域名和ip的关系 一:什么是域名 域名,简称域名、网域,是由一串用点分隔的名字组成的上某一台计算机或计算机组的名称,用于在数据传输时标识 计算机的电子方位(有时也指地理位置)。网域名称系统,有时也简称为域名…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
