C语言精华题目锦集1
第一题
test.c文件中包括如下语句,文件中定义的四个变量中,是指针类型的是()【多选】
#define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;
A:a B:b C:c D:d
#define是宏定义,此时在程序中INT_PTR都会被替换为int*,变量a,b的定义如下:
int * a,b;
可以发现a确实为整型指针类型,而b则为整型类型。
而typedef是给该类型定义一个别名,使用该别名创建出的变量都是这个类型的。
第二题
对于以下说法,正确的是()
A:对于struct X {short s;int i; charc},sizeof(X)sizeof(s)+sizeof(i)+sizeof(c )
B:对于某个double变量a,可以使用a==0.0来判断其是否为0。
C:初始化方式char a[14]=“helloworld”;和char a[14];a=“hello world”;的效果相同。
D:以上说法都不对
解析:
A:结构体大小的计算要考虑内存对齐问题。
B:这道题如果在VS上实验一下的话,会觉得B选项就是正确的,然而不然,因为该数据是double类型的数据,浮点数存在误差,不能直接判断两个数是否相等,通常是采用比较两数之差是否小于一个很小的数字,(具体可以自己设定一个这样的数,作为误差)来确定是否相等。
例如:
运行结果是不是超脱预料之外?
调试观察sub1和sub2的数值。
可以发现误差是存在的,所以不能直接用一个浮点数是否等于0.0来判断该数是否为0。
C:a为数组首元素地址,是一个常量不可以改变。
第三题
请问下列表达式,哪些会被编译器禁止()【多选】
int a=248,b=4; int const*c=21; const int*d=&a; int *const e=&b; int const* const f=&a;
A:*c = 32;
B:*d = 43;
C:e = &a;
D:f = 0x321f;
解析:
这道题是有关const修饰指针变量的题目,要记住只有两种情况,const在*前边的位置和const在*后边。如果const在*前边,就修饰的是指针变量指向的结果。
例如int a=1;
const int *pa=&a;
int const *pa=&a;只要const在pa的左边,那么const修饰的就是*pa,就不可以利用解引用得到a来修改a的值,此时a的值被固定了。
还有一种情况是const在*的右边int a=0;
int b=0;
int * const pa=&a;
这种情况下const修饰的是a这个变量的地址,即pa的指向不能发生变化。此时如果要更改pa的指向如pa=&b,这样的操作是不被允许的。
如果觉得不好记忆的话,可以参考趣味讲解const修饰指针变量。
第四题
对于下边代码段,描述正确的是()
t=0; while(printf("*")) {t++;if(t<3)break; }
A:其中循环控制表达式与0等价。
B:其中循环控制表达式与‘0’等价。
C:其中循环控制表达式是不合法的。
D:以上说法都不对。
解析:
这道题目选B,因为printf函数返回打印的字符·个数,所以判断条件恒为1,字符零不是零。
所以在这里B选项就是正确的。其他选项都是错误的。
编程题
1,至少是其他数字两倍的最大数
题目要求如下
第一种思路
遍历两边,第一遍找出最大值,第二遍判断是否找出的最大值是数组每个元素的二倍,如果满足条件就返回最大数字的下标,如果不满足,那就返回-1。
代码如下:int dominantIndex(int* nums, int numsSize){int i=0;int max=0;for(i=0;i<numsSize;i++){if (nums[i] > max){max = nums[i];}}int num=0;int flag=0;for(i=0;i<numsSize;i++){if(nums[i]==max){num=i;}else{if(nums[i]*2>max){flag=1;}}}if(flag==0){return num;}else{return -1;}return 0; }
代码表达很清晰。
还有一种方法,在找到最大值时,也要保存倒数第二大的值。
代码如下:int dominantIndex(int* nums, int numsSize){int i=0;int max=nums[0];int max1=0;int flag=0;for(i=0;i<numsSize;i++){if(nums[i]>max){flag=i;max1=max;max=nums[i]; }if (max1 < nums[i]&&max!=nums[i]){max1 = nums[i];}}if(max>=2*max1){return flag;}else{return -1;}return 0; }
找到最大值的同时,保存第二大值,因为后边可能会出现比已经保存的第二大的值还要大的值,所以要继续向后遍历找到真正第二大的值,。最后进行判断即可。
第二题
自除数
只需要创建一个数组,得到right和left之间的所有满足条件的数即可,每一个数求出他的个位数,十位数,等等。
数据范围最大也只有10000。
像这种需要用的数字的每一位的数据进行判断的题目,最好还是创建一个大小为6的数组,装输入的数据的每个位的数字,方便最后进行判断。在解题的过程中要注意返回的数组必须是malloc申请的,不然就会有很多的报错。
代码如下(注释十分清晰)
int* selfDividingNumbers(int left,int right,int *returnsize)
{int*ccc=(int*)malloc(sizeof(int)*(right-left+1));int kkk[6];int l = 0;for (int i = left; i <= right; i++){ int j = 0;int a = 1;int num = i;while (i > 0)//获取每位数字{kkk[j++] = i % 10;i = i / 10;}i = num;for (int k = 0; k < j; k++){if (kkk[k] != 0)//如果数字中包含零,就不满足{if (i % kkk[k] != 0){a = 0;}else{a = 1;}}else{a=0;}}if (a != 0)//如果该数字通过前边的测试{ccc[l++] = i;//将该数字存放在预留数组中。}}*returnsize = l;return ccc;
}
第三题
喝汽水问题
小明喝汽水,一瓶汽水1元,2个空瓶可以换一瓶汽水,小明现在有n元,求小明可以喝到多少瓶汽水?
思路一
将上述问题以代码形式解决,如果有n元,那么刚开始就有n个空瓶,假设全部喝完,然后拿着所有空瓶过去换汽水,就能换到n/2瓶汽水,喝完后于是又获得了n/2的瓶子,然后再去换,直到瓶子数目为0或者为1不足以再换汽水为止。
代码实现如下
int main()
{int money = 0;//钱数int total = 0;//总共喝的汽水的数量int empty = 0;//空瓶的数量scanf("%d", &money);total = money;empty = money;while(empty>1)//只要空瓶数大于2,就能继续换{total += empty/2;empty = empty/2+empty%2;}printf("total = %d\n", total);//最终结果totalreturn 0;
}
思路二
利用数学思维求解,我们可以利用上述代码多运行几次观察规律,会发现随着money的增长,能喝到的汽水的数量是一个等差数列。
1元—>1瓶汽水
2元—>3瓶汽水
3元—>5瓶汽水
。。。。
所以只要Money的数量不为0,只需要返回money*2-1即可。
代码如下
int main()
{int money = 0;int total = 0;int empty = 0;scanf("%d", &money); //方法2if(money <= 0){total = 0;}else{total = money*2-1;}printf("total = %d\n", total);return 0;
}
相关文章:

C语言精华题目锦集1
第一题 test.c文件中包括如下语句,文件中定义的四个变量中,是指针类型的是()【多选】 #define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;A:a B:b C:c D:d #define是宏定义,此时在程序中IN…...

头歌答案Python——JSON基础
目录 编辑 Python——JSON基础 第1关:JSON篇:JSON基础知识 任务描述 第2关:JSON篇:使用json库 任务描述 Python——XPath基础 第1关:XPath 路径表达式 任务描述 第2关:XPath 轴定位 任务描述…...

TDengine 与煤科院五大系统实现兼容性互认,助力煤矿智能化安全体系搭建
近日,涛思数据与煤炭科学技术研究院(以下简称煤科院)已完成数个产品兼容互认证工作,经双方共同严格测试,涛思数据旗下物联网、工业大数据平台 TDengine V3.X 与煤炭科学技术研究院旗下煤矿复合灾害监测监控预警系统、煤…...

231030期就业班开班咯!我在前方护航,让你稳稳入职
就业哪家强?还得看优橙! 11月9日,231030期就业班的小伙伴结束了为期8天的基础班学习,正式进入了就业班。优橙教育也为新一批就业班的同学举办了开班典礼。 典礼环节中不仅有多彩的抽奖活动,也有丰富的超值礼品,旨在鼓…...
小白学安全-漏洞编号的理解 CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD
1、以CVE开头,如CVE-1999-1046这样的 CVE的英文全称是“Common Vulnerabilities&Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,能够帮助用…...

助力燃气安全运行:智慧燃气管网背景延展
关键词:城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前,随着我国城市化进程不断加快,城市燃气管网也不断延伸,运行规模庞大,地下管线复杂,不少城市建设“重地上轻地…...

低代码、零代码开源与不开源:区别解析
在如今日益发展的数字时代,程序开发变得越来越重要。为了实现日益提高的业务需求,开发人员必须能够以更高效、更灵活的方式构建和交货软件解决方案。低代码和零代码开源是近几年流行的两种开发方法。本文将探讨它们与传统非开源程序开发的差别࿰…...

LabVIEW中如何在网络上使用远程VI服务器
LabVIEW中如何在网络上使用远程VI服务器 如何在网络上使用远程VI服务器? 解答: 首先,需要在远程的计算机上打开一个在VI服务器上的LabVIEW应用程序的引用。这可以通过“Open ApplicationReference“函数实现。然后用“Open VI Reference”函数打开一个…...
Centos 7rc.local脚本命令开机不执行及指定用户启动的方法
1.开机不启动 在实际生产场景中,我们喜欢在安装了一些软件服务后,将软件设置为开机自启动 配置在/etc/rc.local文件中。直接将软件服务的启动命令写在rc.local文件 注意:编辑完rc.local文件后,一定要给rc.local文件执行权限&#…...
mysql 的存储过程
一组为了完成特定功能的sql 语句的集合,写好了存储过程之后,我们可以向函数一样随时调用sql 的集合 CREATE TABLE info ( id int(3) PRIMARY KEY, name VARCHAR(15), score DECIMAL(5,2), pass varchar(12) ); 创建存储过程 创建过程 delimiter $$ #将语…...
http客户端简单demo
socket.h头文件 #pragma once #include <iostream> #include <cstring> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <string> using std::string;namespace MySocket …...

解决UniAD在高版本CUDA、pytorch下运行遇到的问题
UniADhttps://github.com/OpenDriveLab/UniAD是面向行车规划集感知(目标检测与跟踪)、建图(不是像SLAM那样对环境重建的建图,而是实时全景分割图像里的道路、隔离带等行车需关注的相关物体)、和轨迹规划和占用预测等多任务模块于一体的统一大模型。官网上的安装说明…...
ADC、DMA以及串口之间的联系和区别?
ADC、DMA和串口都是嵌入式系统中常用的模块,它们之间有以下联系和区别: 联系: ADC和DMA都是用于数据采集和传输的模块,ADC可以将模拟信号转换为数字信号,DMA可以在不经过CPU的情况下实现数据的高速传输。而串口则是一…...

jupyter lab配置列表清单
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
爱发电 OAuth 登录 SDK for Remix
目录 概要安装使用配置 Remix Auth配置登录跳转配置 callback 回调配置 Demo 测试页配置注销登录 概要 爱发电 OAuth 文档: https://afdian.net/p/010ff078177211eca44f52540025c377 注意一下这里有两个细节: 这里的 OAuth 非标准化 OAuth,…...

Wpf 使用 Prism 实战开发Day05
首页设计 1.效果图 一.代码现实 根据页面布局,可以将页面设计成3行,每行中分多少列,看需求而定根据页面内容,设计Model 实体类,以及View Model 1.Index.xaml 页面布局设计 RowDefinition 分行(Row…...

性能压测工具:Locust详解
一、Locust介绍 开源性能测试工具https://www.locust.io/,基于Python的性能压测工具,使用Python代码来定义用户行为,模拟百万计的并发用户访问。每个测试用户的行为由您定义,并且通过Web UI实时监控聚集过程。 压力发生器作为性…...

vmware 修改主机名称 hadoop 服务器环境配置(一)
如何在虚拟机配置主机名称: 1. 如图所示在/etc 文件夹下有个hosts文件。追加映射关系: #关系 ip地址 名称 192.168.164.20 hadoop20 2. 保存后,重启reboot即可...

淘宝店铺订单插旗接口(taobao.trade.memo.update淘宝店铺订单交易备注修改接口)
淘宝店铺订单插旗接口是指可以在淘宝店铺的订单系统中进行订单备注的接口。通过该接口,您可以根据用户的身份(买家或卖家),添加相应的交易备注,用于区分不同订单类型等。 具体使用方法可以参考淘宝开放平台的API接口文…...
py文件如何打包成exe?如何压缩文件大小?
打包 要将 Python 文件打包成可执行文件,您可以使用 PyInstaller 这个工具。以下是具体步骤: 首先,确保您已经安装了 PyInstaller。如果没有安装,可以使用以下命令安装: pip install pyinstaller进入您的 Python 程序…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
纯 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、…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...