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

news2024/11/23 5:10:07

前言:

编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,每篇大约10题左右。此为第三篇选择题篇,该系列会不定期更新,后续还会开编程题的系列。敬请期待!


1 、请阅读以下程序,其运行结果是()
int main ()
{
char c = 'A' ;
if ( '0' <= c <= '9' ) printf ( "YES" );
else printf ( "NO" );
return 0 ;
}

A: YES          B: NO              C: YESNO           D: 语句错误  

答案解析:
正确答案: A
'0'<=c<='9' 并非判断 x 大于等于字符 0, 小于等于字符 9 ,而是先执行 '0'<=c ,使用这个表达式的结果再和 '9' 比较, '0' ASCII 码值是48 'A' ASCII 码值是 '65' ,故 '0'<c 是真值 1 1 无疑是小于字符 '9' 的,最终是真

2.假设编译器规定 int short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为( )

unsigned short x = 65530 ;
unsigned int y = x ;

A: 0000 7FFA          B: 0000 FFFA              C: FFFF 7FFA               D: FFFF FFFA 

 

答案解析:
正确答案: B
unsigned short 类型的 x 变量 2 个字节保存了 65530 ,十六进制形式为 0xFFFA x y 赋值时会整型提升,而无符号数在提升时 高位补0 ,其实就相当于把 x 的值放在了 y 的低 2 个字节的空间中,故选 B

3.下列程序的输出结果是什么()

#include<stdio.h>
int main ()
{
int n = 1001 ;
int ans = 0 ;
for ( int i = 1 ; i <= n ; ++ i )
{
ans ^ = i % 3 ;
}
printf ( "%d" , ans );
return 0 ;
} 

A: -2                  B: 0              C: 1                   D: 2  

答案解析:
正确答案: B
i % 3 的值按 1 2 0 循环,可推算出 ans 1 3 3 2 0 0 循环,循环进行 1001 次,而 1001%6=5 ,也就是 ans 按规律得到 的第5 个数为最终结果,故 ans=0

4.要使 a 的低四位翻转,需要进行操作是( )

A: a|0xF                B: a&0xF                C: a^0xF               D: ~a 

答案解析:
正确答案: C
十六进制数 0xF 4 1 ,参与运算时整型提升,高位都是 0 。低四位和 1 异或, 0^1 1 1^1 0 ;高位和 0 异或, 0^0 0 1^0是1 。故而可以通过异或 F 使得 a 的低四位翻转,并保持高位不变

 5.如果 x=2014 ,下面函数的返回值是( )

int fun ( unsigned int x )
{
int n = 0 ;
while ( x + 1 )
{
n ++ ;
x = x | ( x + 1 );
}
return n ;
}

A: 20          B: 21              C: 23                D 25  

答案解析:
正确答案: C
这个作用是对整型中 0 的个数进行统计, x=x|(x+1); 的作用是每次循环把 x 的二进制中从右往左数的最后一位 0 变成 1 ,直道变成 全1 的时候 x+1 就溢出为全 0 ,循环结束。 2014 的二进制是 0000 0000 0000 0000 0000 0111 1101 1110 ,所以结果是 23

 


6.有以下函数,该函数的功能是()

int fun ( char* s )
{
   char* t = s ;
   while ( * t ++ );
   return ( t - s );
}
A: 比较两个字符的大小                      B: 计算 s 所指字符串占用内存字节的个数
C: 计算 s 所指字符串的长度                D: s 所指字符串复制到字符串 t

答案解析:
正确答案: B
循环在 *t 0 时停止,同时 t++ t 最后会停在字符串结束的 '\0' 之后的一个位置, t 作为尾部指针减去头部指针就是整个字符串 占用内存的字节数,包含\0 在内;而 c 答案字符串长度不包括最后的 \0

7.关于指针下列说法正确的是【多选】( )

A: 任何指针都可以转化为 void *                         B: void * 可以转化为任何指针
C: 指针的大小为 8 个字节                                   D: 指针虽然高效、灵活但可能不安全
答案解析:
正确答案: ABD
C 选项,指针占几个字节要看平台, 64 位环境下 8 个字节, 32 位环境下 4 个字节

8.指出下列代码的缺陷【多选】( )

flfloat f [ 10 ];
// 假设这里有对 f 进行初始化的代码
for ( int i = 0 ; i < 10 ;)
{
if ( f [ ++ i ] == 0 )
break ;
}
A: for(int i = 0; i < 10;) 这一行写错了                B: f flfloat 型数据直接做相等判断有风险
C: f[++i] 应该是 f[i++]                                         D: 没有缺陷

 

答案解析:
正确答案: BC
一般 flfloat 型只能精确到小数后六位(即 1e-6 ), flfloat型数据的绝对值与1e-6 比较,来判断是否相等(为零)。 flfloat 的精度 误差在1e-6 double 精度误差在 1e-15 ;所以要判断一个 flfloat 型数: if(fabs(f)<1e-6) ;要判断一个 double 型数: if(fabs(f)<1e- 15);若满足,则为零。考虑 B 选项是对的。若要判断 flfloat a,b 是否相等,要看 if(fabs(a-b)<1e-6) 是否为真。 C 选项,考虑的是 数组越界问题

9.请问下列代码的输出结果有可能是哪些【多选】( )

#include <stdio.h>
typedef union
{
int a ;
struct
{
short b ;
short c ;
};
} X ;
int main ()
{
X x ;
x . a = 0x20150810 ;
printf ( "%x,%x\n" , x . b , x . c );
return 0 ;
}

A: 2015,810             B: 50810,201                C: 810,2015                 D:`20150,810  

答案解析:
正确答案: AC
对于 0x20150810
如果按照大端模式存储:从低地址到高地址: 20150810 输出从低地址到高地址: 20150810
如果按照小端模式存储:从低地址到高地址: 10081520 输出从高地址到低地址: 08102015
此数以 int 类型赋值给联合体 x.a ,而以结构成员 b c 分开访问,分别拿到低地址的 2 个字节和高地址的 2 个字节,大端下是2015和 810 ,小端下是 810 2015

10.请问下列程序的输出是多少()

#include<stdio.h>
int main ()
{
   unsignedchar i = 7 ;
   int j = 0 ;
   for (; i > 0 ; i -= 3 )
 {
    ++ j ;
 }
   printf ( "%d\n" , j );
   return 0 ;
} 

A: 2              B: 死循环               C: 173           D: 172 

答案解析:
正确答案: C
本题就是找规律,计算什么时候能遇到 0
unsigned char 8 位数据位,范围在 0-255 ,所以 -2 (11111110)时,变成 254 ;同理 -1 (11111111)时,变成 255 ;最后减 到0 时,不满足循环条件, for 停止。刚好 173 次。 7 4 1 ==> (7-1)/3+1=3 次(1-3=-2,即 254 ,继续循环) 254 251 ... 5 2 ==> 共 (254-2)/3+1=85 次(2-3=-1,即 255 ,继续循环) 255 252 ... 6 3 ==> 共 (255-5)/3+1=85 次(3-3=0,退出循环) 所以总共 173

 

以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

 


 

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

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

相关文章

xxl-job:定时任务执行流程及调度机制

1、Scheduled及Quartz的不足 1.1、Scheduled的不足 Spring的Scheduled对于单机的简单任务使用起来很方便&#xff0c;但只能单节点运行&#xff0c;不利于横向扩展。 1.2、Quartz的不足 Quartz作为开源作业调度中的佼佼者&#xff0c;是作业调度的首选。但是集群环境中Quart…

C语言控制语句——分支语句

条件语句用来根据不同的条件来执行不同的语句&#xff0c;C语言中常用的条件语句包括if语句和switch语句。 if 语句 语法格式&#xff1a; if (条件) {条件成立时&#xff0c;要做的事…… }案例需求&#xff1a; 定义一个整数变量记录年龄判断是否满 18 岁 &#xff08;>…

QOpenGLWidget绘制实时图像

initializeGL()函数&#xff1a; initializeOpenGLFunctions();//创建VBO和VAO对象&#xff0c;并赋予IDglGenVertexArrays(1, &VAO);glGenBuffers(1, &VBO);//绑定VBO和VAO对象glBindVertexArray(VAO);glBindBuffer(GL_ARRAY_BUFFER, VBO);//为当前绑定到target的缓冲…

为什么JVM调优一般都是针对堆内存的,以及堆内存的设置对GC的影响

1、为什么JVM调优一般都是针对堆内存的&#xff1f; 首先JVM的四部分组成&#xff1a;ClassLoader&#xff08;类装载器&#xff09;、Runtime data area 运行数据区、Execution Engine 执行引擎、Native Interface 本地接口。 其中运行数据区&#xff08;Runtime Data Area&am…

AI人员打架识别算法

AI打架识别算法通过yolov8网络模型算法框架&#xff0c;AI打架识别算法识别校园打架斗殴行为&#xff0c;发现立即打架斗殴行为算法会立即抓拍告警推送打架事件信息。目标检测架构分为两种&#xff0c;一种是two-stage&#xff0c;一种是one-stage&#xff0c;区别就在于 two-s…

​无需测试环境!如何利用测试脚手架隔离微服务,实现功能自动化

想在不建立完整测试环境的情况下测试微服务&#xff1f; 想在将变更推送到主线分支之前完成测试&#xff1f; 这是我们在进行项目交付时经常遇到的难题。最近&#xff0c;当我们开始一个新的项目&#xff0c;为客户构建一个新的聚合平台时&#xff0c;我们希望将尽可能多的测…

Java线程 - 详解(2)

一&#xff0c;线程安全问题 有些代码在单个线程的环境下运行&#xff0c;完全正确&#xff0c;但是同样的代码&#xff0c;让多个线程去执行&#xff0c;此时就可能出现BUG&#xff0c;这就是所谓的 "线程安全问题"。举一个例子&#xff1a; public class Demo {s…

Ansible学习笔记12

playbook&#xff1a; playbook&#xff08;剧本&#xff09;&#xff1a;是ansible用于配置、部署和管理被控节点的剧本&#xff0c;用于Ansible操作的编排。 使用的是yaml格式&#xff0c;&#xff08;saltstack、elk、docker、docker-compose、k8s都会使用到yaml格式。&am…

c语言实现二叉树(链式结构)

文章目录 前言一、二叉树的遍历1、二叉树的层序遍历2、二叉树的前序遍历3、二叉树的中序遍历4、二叉树的后序遍历5、代码实现 二、二叉树的一些操作的实现1、求二叉树的结点个数2、求二叉树叶子结点个数3、求二叉树第k层结点个数4、求二叉树深度5、二叉树中查找值为x的结点6、二…

彻底理解浏览器的缓存机制

前言 在前端性能优化的方式中&#xff0c;最重要的当然是缓存了&#xff0c;使用好了缓存&#xff0c;对项目有很大的帮助。比如我们访问网页时&#xff0c;使用网页后退功能&#xff0c;会发现加载的非常快&#xff0c;体验感很好&#xff0c;这就是缓存的力量。 什么是缓存…

SpringBoot的四种handler类型

Controller ReuestMapping 实现Controller接口 使用Component将该类封装成一个Bean 实现HttpRequestHandler 实现RouterFunction

upload-labs文件上传漏洞靶场练习

任意文件上传靶场upload-labs下载地址 文章目录 Pass-01- 前端JS校验绕过Pass-02- 文件类型MIME类型绕过Pass-03- 文件名后缀黑名单绕过Pass-04- .htaccess绕过Pass-05- 文件名后缀大写绕过Pass-06- 文件名后缀加空格绕过Pass-07- 文件名后缀加点绕过Pass-08-文件名后缀 ::$DAT…

控制goroutine 的并发执行数量

goroutine的数量上限是1048575吗&#xff1f; 正常项目&#xff0c;协程数量超过十万就需要引起重视。如果有上百万goroutine&#xff0c;一般是有问题的。 但并不是说协程数量的上限是100多w 1048575的来自类似如下的demo代码: package mainimport ( "fmt" "ma…

SpringMVC使用

文章目录 一.MVC基础概念1.MVC定义2.SpringMVC和MVC的关系 二.SpringMVC的使用1.RequestMapping2.获取参数1.获取单个参数2.传递对象3.后端参数重命名&#xff08;后端参数映射&#xff09;4.获取URL中参数PathVariable5.上传文件RequestPart6.获取Cookie/Session/header 3.返回…

电视盒子什么牌子好?经销商整理线下热销电视盒子品牌排行榜

在面对众多品牌和型号时&#xff0c;不知道电视盒子哪个牌子好的消费者超多&#xff0c;很多人进店都会问我电视盒子哪款好&#xff1f;我根据店铺内近两年的销量情况整理了电视盒子品牌排行榜&#xff0c;看看实体店哪些电视盒子最值得入手吧。 TOP 1.泰捷WEBOX 40Pro Max电视…

案例实操-获取员工数据

案例&#xff1a;获取员工数据&#xff0c;返回统一响应结果&#xff0c;在页面渲染展示 package com.bignyi.controller;import com.bignyi.pojo.Emp; import com.bignyi.pojo.Result; import com.bignyi.utils.XmlParserUtils; import org.springframework.web.bind.annotat…

分享一个在线二维码生成器(基于qrcode.js开发)

一种二维码扫描与生成的工具, 它可生成个性化二维码, 支持文本、网址、图片、短信、电话等格式及主题,提供融合码功能 演示地址 https://qrcode.gitapp.cn 关键代码 var qrcode new QRCode(document.getElementById("qrcode"), {text: "",width: 288,h…

2023下半年西安/北京/深圳NPDP产品经理国际认证开班啦

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

【JavaSE】Java快速入门

Java main 函数 public class Main {public static void main(String[] args) { System.out.printf("Hello and welcome!");} }与C命名规范不同&#xff0c;Java 的命名形式最好使用驼峰法 Java 注释 C/C常用的两种注释习惯Java都可以使用&#xff0c;Java自身…