【C语言】转义字符+结构语句

简介: 通过本文的学习可以让小白将转义字符更加理解,和结构语句的大概了解,加油吧!只为成为更好的自己。

王国探险记系列

文章目录(4)


一,什么是转义字符

1.1转义字符的重要性?

二,了解一下转义字符有那些

三,精讲转义字符

3.1转义字符\n

3.2转义字符\?

3.3转义字符 \‘和\"

3.3转义字符 \\

3.4转义字符 \a,\r,\n

3.5转义字符 \b

3.6转义字符 \f和\v

3.7转义字符 \t

3.8转义字符\ddd

 3.9转义字符\xdd

四,什么是结构语句?

4.1选择语句就是if语句和switch语句

4.2循环结构


前言

C语言王国探险记,是我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将探险转义字符+结构语句这两个知识关卡


一,什么是转义字符

我们在前面看程序的时候,有没有感到疑惑这个\n是什么?
\0为啥是结束标志
\n是换行
这些东西为啥这么写呢
他们叫转义字符
转义字符要怎么理解呢:就是转变原来的意思,就把字符的意思给转变了

1.1转义字符的重要性?

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  printf("c:\\code\\test111\\tets.c");
  //比如说我想要打印一个这样的输出结果c:\code\test111\tets.c
  //但是会发现我们打印的结果和我们想要的结果是不相同的
  return 0;
}

image.gif

image.gif编辑

//为什么会打印不出来呢
//C语言会把这种\在加一个字符的形式会理解为转义字符
//\c好像不是转义字符,但是好像也被处理了一下
//\t也是一个转义字符,编译器就把\加一个字母的形式当成一个转义字符了
//电脑按照自己的方式去理解了,那我们这里怎么办
int main()
{
  printf("c:\\code\\test111\\tets.c");
 //所以我们在转义字符的前面在加一个\就让\t变成原来的意思不在具有转义字符的意思,\转义\让\变的普普通通的
  return 0;
}
//所以大家看有一些时候转义字符是必须存在的,有转义字符这种方式才能打印处理我们想要的结果

image.gif

image.gif编辑

二,了解一下转义字符有那些

image.gif编辑

三,精讲转义字符

3.1转义字符\n

换行符\n:只是在n的前面加了一个\就变的,不在打印n,直接跳到了下一行,这就是n前面加了一个\就变成了换行的意思

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  printf("abcdnef");//当我们这么写的时候,我们的屏幕就会打印出abcdnef
  return 0;
}

image.gif

int main()
{
  printf("abcd\nef");//我们在n的前面加一个\吧
  //这个时候我们运行代码的时候发现不一样了代码被分为了两行,且n没有了
  return 0;
}
//只是在n的前面加了一个\就变的,不在打印n,直接跳到了下一行,
//这就是n前面加了一个\就变成了换行的意思

image.gif

image.gif编辑

image.gif编辑

3.2转义字符\?

解释:在书写连续多个问号时使用,防止他们被解析成三字母词
这个转义字符现在是验证不出来的
因为现在的编译器都不支持

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  printf("(are you ok??)");//在新的编译器下是演示不出来效果的
  //j假如说我们想要打印出这样的一段话(are you ok??)
  //但是在一些古老的编译器上是打印不出来这句话的
  //但是在我们现在的编译器是可以的
  //但是在一些古老的编译器上会打印出这样一段话(are you ok]
  //这是什么原因呢?
  //在早期的机器上我们加入了一个叫??)的东西
  //??( --被解析为[
  //??) --被解析为]
  //像上面这种由??开头加一个符号的形式其实给了几种组合
  //这种叫做三字母词
  //这种三字母词在支持三字母词的编译器上就会被替换成另一个符号
  //但是本质上我就想打印出(are you ok??)
  //如果我们想要在如何一个编译器上都可以打印出我们想要的东西
  //我们就要两个问号的前面都加上一个\就可以了
  printf("(are you ok\?\?)");//这种写法在任何的编译器都可以打印出(are you ok??)
  //我们加一个\是为了让这个?不在是三字母词里面的问号,这就是转义了问号
  return 0;
}

image.gif

image.gif编辑

3.3转义字符 \‘和\"

\'用于表示字符常量’
\"用于表示一个字符串内部的双引号

我们将在代码加注释和结果运行图中进行知识点的讲解:

//%c -- 是打印字符
//打印一个字符
int main()
{ 
  printf("%c\n", 'a');
  printf("%c\n", 'b');
  //这就是打印字符a,单引号a就是字符a的意思
  //如果要打印一个单引号呢,单引号也是一个字符
  //printf("%c\n", ''');
  //我们这样写是不行的,编译器就会报错
  //因为我们编译的的时候,字符就是被单引号引起来的
  //所以编译器看到前两个单引号的时候就以为是它们是一对的,后面那个单引号就落单了
  //我们要怎么解决呢在中间那个单引号前加一个
  printf("%c\n", '\'');
  //把中间那个单引号进行转义,让其不在变成我们一对单引号中的单引号
  //我们打印字符串的时候怎么做
  printf("%s\n", "abc");
  //字符串里面也可能是一个字符
  //也是可以的
  printf("%s\n", "a");//我们打印字符串,即使只有一个字符,但是还是有两个字符的,
  //因为还要一个隐藏的字符\0
  //但是我们要打印的一个双引号,就会在次出现问题
  //printf("%s\n",""");
  //就和单引号一样,就会落单了,所以需要转义一下,中间那个双引号,
  //让他变成一个普普通通的双引号就行了
  printf("%s\n", "\"");
  return 0;
}

image.gif

image.gif编辑

3.3转义字符 \\

转义字符\\:用于表示一个反斜杠,防止它被解释为一个转义系列符
就是在\之前加一个\将第2个斜杠被转义为一普通的\,双重肯定表示否定

3.4转义字符 \a,\r,\n

\a:警告字符,蜂鸣

会触发我们电脑的蜂鸣

\n换行

\r回车

//\a警告字符,蜂鸣
//int main()
//{
//  printf("\a");
//  return 0;
//}
//会触发我们电脑的蜂鸣

image.gif

3.5转义字符 \b

转义字符 \b:退格符

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  printf("abcdef\n");//可以在屏幕上打印出来abcdef这几个字符
  //如果我在d的前面加上一个\b,会是什么样的呢
  printf("abc\bdef\n");
  //我们就会发现输出结果就没有c了,
  //为什么是这样的呢?
  //其实退格符意思是这样 :我们先在屏幕上打印abc,来的c后面的字母了,
  //所谓\b就是往回退一格,就是从c的后面退到c的前面了,然后在开始打印,
    //所以c就被覆盖了,所以打印结果为abdef
  return 0;
}

image.gif

image.gif编辑

3.6转义字符 \f和\v

基本上不使用了,所以我们不去介绍:

3.7转义字符 \t

\t水平制表符

我们将在代码加注释和结果运行图中进行知识点的讲解:

//\t水平制表符
int main()
{
  printf("abciiiidef\n");
  printf("a\tbcdef\n");//会后退7格打印
  printf("ab\tcdef\n");//会后退6格打印
  printf("abc\tdef\n");//会后退5格打印
  printf("abcd\tef\n");//会后退4格打印
  printf("abcde\tf\n");//会后退3格打印
  //就是/t的退格是按照4的倍数来进行退格,在编译器里面按4来退格
  //相当于我们键盘的Tab键
  //p rintf();//我们在p的前面加一个tab键就会退三格,按照4的倍数进行退格
  //12345
  //斜杠t我们一般是用来进行对齐的时候才使用的
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

3.8转义字符\ddd

\ddd ddd表示1~3个八进制的数字。如:\130表示字符x

为什么\130表示字符X呢?因为130是3个八进制的数字,所以转化为十进制就88,那88和x有什么关系呢?

我们键盘上可以打印的如ABC等

我们又知道计算机可以处理的是二进制

数据在存储的时候,存储的也是二进制

我们就把每个字符都编了一个号,A--65,B--66,C--67

所以我们存储的时候将字符的编号的存储起来就行了

给字符编号的动作叫做编码

有一种编码叫做ASCII 编码

而我们c语言中对字符的编码方式就是ASCII编码的方式

每一个字符对于的数字就是它的ASCII码值

我们要进行验证一下看88对应的是不是X呢

这种转义字符呢?代表的是\后面的这3个,1~3个八进制数字转换为十进制数字之后,以那个数字代表的ASCII码值代表的字符进行打印

这个转义字符就是以八进制的形式去打印字符

我们将在代码加注释和结果运行图中进行知识点的讲解:

image.gif编辑

int main()
{
  printf("%c",'\130');
  return 0;
}

image.gif

image.gif编辑

 3.9转义字符\xdd

\xdd dd表示2个十六进制数字。如:\x30表示字符0
x表示的是十六进制的意思,所以后面的dd表示两个十六进制数字
我们可以将其理解为字符的十六进制形式
\x30转换为十进制形式就是48了
所以会打印的是ASCII码值为48的字符也就是0了
ASCII码表的取值是0~127
我们输入的ASCII码值是不能超过取值范围的,超出范围就不可预测了,
ASCII码表的0~31是不可打印字符,
我们看一下\0就是\ddd的这种转义字符

四,什么是结构语句?

其实我们生活中的一切事情都可以抽象为顺序结构,选择结构,和循环结构
或者是这三种结构的组合
我们知道c语言是—结构化的程序设计语言
我们c语言支持三种结构
1,一种叫顺序结构
就是一条道走到黑就可以了,不需要停止
没什么好讲的
2,一种叫选择结构
遇到分叉路口要选择一条路去走
c语言提供了两种结构
一种叫if    一种叫switch
3,一种叫循环结构
一直在原地打转
其实就是我们的while ,for,do{}whiel;

4.1选择语句就是if语句和switch语句

我们要现在先了解if语句,知道switch语句就行:

我们将在代码加注释和结果运行图中进行知识点的讲解:

image.gif编辑

int main()
{
  int input = 0;
  printf("学习c语言\n");
  printf("你打算好好学习吗?(1/0):");
  //如果你选择1,我认为你大算好好学习
  //如果你选择0,我认为你不打算好好学习
  //选1或者选0的时候是不是相当于输入值啊
  scanf("%d",&input );//我们输入的一个是一个整数,所以使用%d,
  //而且输入的值要存起来,所以创建一个变量,存放在里面
  if (input == 1)//选择了好好学习1
  {
    printf("成为大佬\n");
  }
  else//如果没有选择好好学习选择了0
  {
    printf("还是菜鸟\n");
  }
  //不同的选择,面临不同的结果,我们运行看一下,这就是我们的分支结果的效果
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

4.2循环结构

一些事情必须一直去做,比如日复一日的学习
这就是循环啊
当循环被打破就要被终止
生活中,我们有时候会经常做,但是有一天,我们也可能打破这个循环的节奏,然后就是循环终止
c语言中如何实现喜欢呢?
while语句的讲解
for语句(后面文章里面有,先知道有这个)
do...while语句(后面文章里面有,先知道有这个)

while语句的逻辑图

image.gif编辑

实例
我们认为一个人写够30000行代码,这个人的水平就不错了
代码能力就提升上了了
而写不够三万行代码,我们就认为他还不行

我们通过不断重复的敲代码,
   让代码行数不断的增加当你的行数增长到30000行的时候
   你就变成了大佬,当你的代码行数不到30000的时候,我们认为你还不行,
   那我们这个逻辑要怎么做呢?
   我们敲代码,然后行++,是不是把这个动作

   我们就看下面的代码使用while

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  /*我们通过不断重复的敲代码,
  让代码行数不断的增加当你的行数增长到30000行的时候
  你就变成了大佬,当你的代码行数不到30000的时候,我们认为你还不行,
  那我们这个逻辑要怎么做呢?
  我们敲代码,然后行++,是不是把这个动作循环起来就行了*/
  //我们就看下面的代码使用while
  int line = 0;
  while (line<30000)//条件是要大于30000才能跳出循环
  {
    printf("敲代码:%d\n",line);
    line++;
  }
  if (line == 30000)//跳出循环之后,我们在判断一下,是不是到了30000行,到了30000就是大佬了
  {
    printf("大佬一枚\n");
  }
  return 0;
}

image.gif

image.gif编辑

如果不在while()后面加一个if()语句进行判断,这个逻辑是存在问题的

如果自己懒惰了,天天摆烂,在也不敲代码了

他是不是也让这个循环终止了

那他能成为大佬吗?当然不能了

我们将在代码加注释和结果运行图中进行知识点的讲解:

int main()
{
  int line = 0;
  while (line < 30000)
  {
    //提前跳出循环的问题
    /*自己懒惰了,天天摆烂,在也不敲代码了
    他是不是也让这个循环终止了
    那他能成为大佬吗?当然不能了*/
    if (line == 1000)
    {
      printf("开始摆烂了\n");//开始摆烂就打破了这个循环
      break;//使用break终止这个循环
    }
    printf("敲代码:%d\n", line);
    line++;
  }
    //printf("大佬一枚\n");
    //所以说这个逻辑是不正确的,不能说出了循环就变成大佬了所以我们才要判断
    //你即使出了循环,但是你没有写够30000行依然不是大佬
  return 0;
}

image.gif

image.gif编辑

我们通过上述的代码运行图可以知道如果不加if语句判断这个程序的存在逻辑问题的:

我们只需要加一下if判断语句就可以将该程序的逻辑漏洞:

int main()
{
  int line = 0;
  while (line < 30000)//条件是要大于30000才能跳出循环
  {
    //提前跳出循环的问题
    //自己懒惰了,天天摆烂,在也不敲代码了
    //他是不是也让这个循环终止了
    //那他能成为大佬吗?当然不能了
    if (line == 1000)
    {
      printf("开始摆烂了\n");//开始摆烂就打破了这个循环
      break;//使用break终止这个循环
    }
    printf("敲代码:%d\n", line);
    line++;
  }
    //printf("大佬一枚\n");
    //所以说这个逻辑是不正确的,不能说出了循环就变成大佬了所以我们才要判断
    //你即使出了循环,但是你没有写够30000行依然不是大佬
  if (line == 30000)//跳出循环之后,我们在判断一下,是不是到了30000行,到了30000就是大佬了
  {
    printf("大佬一枚\n");//给大家解释一下,这个判断还是很有必要的
  }
  return 0;
}

image.gif

image.gif编辑


总结

以上就是今天要讲的内容,本文仅仅全面介绍了转义字符和大概了解结构语句,可以让你在c语言王国的探险更加有趣,充实。

相关文章
|
1月前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
71 10
|
1月前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
40 10
|
1月前
|
存储 编译器 C语言
【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
本任务要求根据求根公式计算并输出一元二次方程的两个实根,精确到小数点后两位。若方程无实根,则输出提示信息。主要内容包括: - **任务描述**:使用求根公式计算一元二次方程的实根。 - **相关知识**:掌握 `sqrt()` 函数的基本使用方法,判断方程是否有实根。 - **编程要求**:根据输入的系数,计算并输出方程的根或提示无实根。 - **测试说明**:提供两组测试数据及预期输出,确保代码正确性。 - **通关代码**:包含完整的 C 语言代码示例,实现上述功能。 通过本任务,你将学会如何处理一元二次方程的求解问题,并熟悉 `sqrt()` 函数的使用。
32 5
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
36 4
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
本任务要求输入x的值,计算并输出特定阶跃函数的结果。主要内容包括: 1. **选择结构基本概念**:介绍if、if-else、switch语句。 2. **主要语句类型**:详细解释if、if-else、switch语句的使用方法。 3. **跃迁函数中变量的取值范围**:说明如何根据条件判断变量范围。 4. **计算阶跃函数的值**:通过示例展示如何根据给定条件计算函数值。 编程要求:在右侧编辑器Begin-End之间补充代码,实现阶跃函数的计算和输出。测试说明提供了多个输入及其预期输出,确保代码正确性。最后提供通关代码和测试结果,帮助理解整个过程。
33 0
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】判断一个数是不是5和7的倍数(头歌实践教学平台习题)【合集】
本任务要求输入一个正整数,判断其是否同时是5和7的倍数,若是输出&quot;Yes&quot;,否则输出&quot;No&quot;。内容涵盖选择结构的基本概念、主要语句类型(if、if-else、switch)及条件判断逻辑,帮助理解编程中的分支执行与条件表达式。测试用例包括正数、负数及非倍数情况,确保代码逻辑严谨。通关代码示例如下: ```cpp #include &quot;stdio.h&quot; int main(){ int a; scanf(&quot;%d&quot;, &a); if (a &lt;= 0){ printf(&quo
48 0
|
1月前
|
编译器 C语言 C++
【C语言程序设计——选择结构程序设计】求输入的日期是该年的第几天(头歌实践教学平台习题)【合集】
本任务要求编写程序,根据用户输入的年月日(以空格或回车分隔),计算并输出该天是该年的第几天,需注意判断闰年。主要内容包括: 1. **任务描述**:实现从键盘输入年月日,计算该天是当年的第几天。 2. **相关知识**: - `switch` 结构的基本语法及使用注意事项。 - 判断闰年的条件:能被4整除但不能被100整除,或能被400整除的年份为闰年。 3. **编程要求**:根据提示补充代码,确保程序正确处理输入并输出结果。 4. **测试说 示例代码展示了如何使用 `switch` 语句和闰年判断逻辑来完成任务。通过此练习,掌握 `switch` 语句的应用及闰年判断方法。
32 0
|
3月前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
151 16
|
4月前
|
编译器 C语言 Python
C语言结构
C语言结构
34 0
|
4月前
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
152 0

热门文章

最新文章