当前位置: 首页 > news >正文

C语言编译和链接错题

一、错题重现

1.用在switch语句中的关键字不包含哪个?( )

A.continue

B.break

C.default

D.case

2.下面代码的结果是:( ) 


A.3

B.4

C.随机值

D.5

3.下面那个不是转义字符?

A.'\n'

B.'\060'

C.'\q'

D.'\b'

二、错因分析及思考

1.题目看成C语言中的关键字不包括哪一个了(审题不细心导致)

continue不用于switch结构

正确答案:A

2.strlen用于获取字符串有效长度,不包括'\0'在内

strlen会从前往后检测,直到遇到'\0'结束

题目中的arr是一个字符数组,不是一个有效的字符串

破题关键:主要看't'后面的第一个\0在哪里 但是他不知道 所以答案是不确定 即随机值

运行结果:

strlen 恰好读取了 36 个字节后找到了 \0,因此打印了 36 (这里的36就是一个随机值)

正确答案:C

3.正确答案C

C语言中各个进制的回顾

二进制0b开头

八进制0开头

十六进制0x开头

十进制无特殊前缀

B选项中'\060'转成十进制是48 拓展:0-9ascii值48到57

\n是换行 \b是退格 C语言中没有\q

类别转义字符含义示例代码
控制字符\n换行符printf("Hello\nWorld");
\t水平制表符printf("A\tB");
\r回车符通常与 \n 配合使用(Windows)
\b退格符用于删除前一个字符(较少使用)
特殊符号\\反斜杠printf("\\");
\'单引号printf("It's a test\n");
\"双引号printf("He said: \"Hello\"\n");
不可打印字符\a响铃(警报声)printf("\a");
\v垂直制表符较少使用
进制表示\ooo八进制表示字符printf("\101"); // 输出 'A'
\xhh十六进制表示字符printf("\x41"); // 输出 'A'

C语言中转义字符如上 

注意点:“进制表示”是转义字符的一类特殊形式 

相关文章:

  • IDEA/WebStrom操作之commit前批量清除console.log()与debugger
  • Java基础 4.5
  • Fortran 中读取 MATLAB 生成的数据文件
  • 基于SpringBoot的养老院信息管理系统(源码+数据库)
  • Java的Selenium的特殊元素操作与定位之模态框
  • 7-9 趣味游戏
  • Ubuntu-安装redis
  • 【Kubernetes】ConfigMap 和 Secret 的作用是什么?它们如何影响应用配置?
  • d202545
  • 【MediaPlayer】基于libvlc+awtk的媒体播放器
  • April Fools Day Contest 2025 A-F(没有E) 题解
  • 软件工程面试题(二十八)
  • [ 计算机网络 ] | HTTP协议(一)
  • MySQL:查询
  • 获取KUKA机器人诊断文件KRCdiag的方法
  • Mathematics | Branch
  • STM32 的编程方式总结
  • CCF GESP Python编程 三级认证真题 2025年3月
  • JAVA反序列化深入学习(十二):Groovy1
  • 【家政平台开发(17)】文件存储与管理系统设计:解锁数据的“保险柜”