(史上最细)C语言快速入门宝典(二)

       🔥🔥 欢迎来到小林的博客!!
      🛰️博客主页:✈️小林爱敲代码
      🛰️专栏:✈️C语言快速入门
      🛰️欢迎关注:👍点赞🙌收藏✍️留言
在这里插入图片描述

      今天给大家分享C语言中字符串,转义字符,和选择语句这一块内容,让大家在学习的路上更加轻松。感谢大家对我的支持,祝大家学业有成,事业有成 !



  
      每日一句: 只有不断的努力,才能成为梦想中的自己!

大纲:

在这里插入图片描述

💖4. 字符串、转义字符

"abcdefg" 这种由双引号(Double Quote)引起来的一串字符称为字符串字面(String Literal),或者简称字符串字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

💖4.2 字符串定义

"char a[] = "abcde" 这种方法,末尾会自动追加\0
"char a[] = {'a','b','c','d','e','\0'} 这种方法,需要手动追加\0,否则字符串会没有结束标志。
"char a[20] = {'a','b','c','d','e'} 这种方法,定义了长度为20,那么后面长度不足部分会自动补\0,所以也是可以的。

接下来我们试一下


#include<stdio.h>


int main()
{
	char a[] = "abcde";
	char b[] = { 'a','b','c','d','e','\0' };
	char c[20] = { 'a','b','c','d','e' };

	printf("a = %s\n", a);
	printf("b = %s\n", b);
	printf("c = %s\n", c);

	return 0;
}

在这里插入图片描述

这些都是可以的,但是如果在没有限制的长度的情况下,b是一定要加\0的,否则字符串没有结束标志,会非法访问后面的内容。
在这里插入图片描述
字符串没有结束标志,就会访问随即内容。

💖4.2 字符串长度

字符串长度是从第一个字符开始,到\0停止,不包括\0。

	char a[] = "abcde"; //从a开始,到e后一个\0结束,长度5
	char b[] = { 'a','b','c','d','e','\0'};//从a开始,到\0结束,不包括\0,长度5
	char c[20] = { 'a','b','c','d','e' };//一样,长度5

有一个strlen函数,可以获取一个字符串的长度,我们只需要引入string.h库,即可使用。

#include<stdio.h>
#include<string.h>

int main()
{
	char a[] = "abcde";
	char b[] = { 'a','b','c','d','e','\0'};
	char c[20] = { 'a','b','c','d','e' };

	printf("lena = %d\n", strlen(a));
	printf("lenb = %d\n", strlen(b));
	printf("lenc = %d\n", strlen(c));


	return 0;
}

在这里插入图片描述
我们发现长度都是5,因为后面都有\0作为结束标志,但如果我们把b的\0去掉,那么 b的长度就变成了随机值。
在这里插入图片描述
所以字符串的长度是从第一个字符开始,到\0结束,其中不包括\0。

💖4.3 字符串大小

字符串的大小就是它开辟了多少空间,那么大小就是多少。如果定义时没有明确数组开辟多少空间,那么按数组元素个数计算大小。

	char a[] = "abcde"; //包括\0 , 6个字节
	char b[] = { 'a','b','c','d','e'}; //5个字节,元素个数
	char c[20] = { 'a','b','c','d','e' };//有明确开辟20个空间大小,20字节

在这里插入图片描述
sizeof是一个关键字,会返回变量占用空间的大小。

💖4.4 转义字符

转义字符释义
\?(不常用)在书写连续多个问号时使用,防止他们被解析成三字母词
\’用于表示字符常量’
\“用于表示一个字符内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格字符
\f进纸符
\n换行符
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 X
\xdddd表示2个十六进制数字。 如: \x30 0

接下来演示几个转义字符。

#include<stdio.h>
int main()
{
	printf("ABCD\b\n"); //退格+回车,输出ABC换行
	printf("ABCD\\\n ");// \加换行,输出ABCD\换行
	printf("%d\n",'\010'); //表示8进制的123,输出8回车
	printf("%d\n", '\x10');//16进制的ff,16回车

	return 0;
}

在这里插入图片描述

注意!所有的转义字符,它都只占一个字节。因为转义字符归根结底还是字符!字符占1个字节。


🏀5.选择语句

人无时无刻都在做选择,程序也需要做选择。当我们期望程序达到某个条件时,就做出不同的选择时。我们就需要选择语句,来控制程序走哪条路。

在这里插入图片描述

🏀5.2 if单分支

简单来说,单分支就是你要不要选择这条路。最终的终点是一样的,但中间会不会有小插曲,取决于你的选择。

假如你现在放学了,你可以直接回家。但你也可以选择先去网吧,再回家,而去网吧的这个过程就是你中间的选择。

但是你要去网吧,必须要有个条件,当满足了什么条件时,你才会选择去网吧。如果此时你身上有超过五块钱时,先去网吧,再回家。
在这里插入图片描述
所以我们可以用程序来模拟上面的过程。

#include<stdio.h>
int main()
{
	int money = 6; //你身上的钱
	
	if (money > 5) //如果你身上的钱超过5块
	{
		//去网吧
		printf("去网吧->");
	}

	//不管如何,你都要回家
	printf("回家");
	return 0;
}

此时我有6块钱,所以可以去网吧。
在这里插入图片描述
但如果我们把 money改成小于5呢? 钱不够了,那就不能去网吧了。只能直接回家了。
在这里插入图片描述

🏀5.2 if双分支

那么这时候问题来了,你钱不够,去不了网吧。又不想马上回家,必须要买点东西弥补一下去不了网吧的遗憾。这时就可以用双分支。

在这里插入图片描述
因为你不想立刻回家,必须做点事情才回家,那么就没有直接回家这条选项了。

用程序模拟

#include<stdio.h>
int main()
{
	int money = 4; //你身上的钱
	
	if (money > 5) //如果你身上的钱超过5块
	{
		//去网吧
		printf("去网吧->");
	}
	else //钱不够,就跳到这来
	{
		printf("去买棒棒糖->");
	}

	//不管如何,你都要回家
	printf("回家");
	return 0;
}

当你只有4块钱时
在这里插入图片描述
当你有6块钱时
在这里插入图片描述

🏀5.3 if多分支

那么这时候你又有要求了。 如果身上的钱超过20块,就去游泳,如果不超过20块钱,但是超过10块钱,就去吃肯德基。如果不超过10块钱,但是超过5块钱,就去网吧。五块钱都没有,那就只能吃棒棒糖了。最后再回家。
在这里插入图片描述
那么我们就else if

#include<stdio.h>
int main()
{
	int money = 6; //你身上的钱
	
	if (money > 20) //如果你身上的钱超过20块
	{
		//去游泳
		printf("去游泳->");
	}
	else if(money > 10)//钱不够20,但是超过10块
	{
		printf("去吃肯德基->");
	}
	else if (money > 5)//钱不够10块,但是超过5块
	{
		printf("去网吧->");
	}
	else 
	{
		printf("去买棒棒糖->"); //五块钱都没有
	}

	//不管如何,你都要回家
	printf("回家");
	return 0;
}

21块钱的结果
在这里插入图片描述

11块钱的结果
在这里插入图片描述

6块钱的结果
在这里插入图片描述

4块钱的结果
在这里插入图片描述

🏀5.4 switch分支

switch 分支也是多分支,跟 if else的功能是一样的。只不过在某种特定情况,用switch分支会比 if else分支更加直观,更加方便。

假设 你想制定一个计划表,从周一到周日。每一天都做不同的事情。这种情况用 if else会显得很杂乱,代码可读性并不是很好。

if else的写法

#include<stdio.h>
int main()
{
	int weekday = 1; //星期数

	if (weekday == 1)
	{
		printf("跑步");
	}
	else if (weekday == 2)
	{
		printf("爬山");
	}
	else if (weekday == 3)
	{
		printf("游泳");
	}
	else if (weekday == 4)
	{
		printf("打游戏");
	}
	else if (weekday == 5)
	{
		printf("打篮球");
	}
	else if (weekday == 6)
	{
		printf("踢足球");
	}
	else if (weekday == 7)
	{
		printf("写作业");
	}

	return 0;
}

这种频繁的 if else ,看的让人眼花缭乱。 所以在这里推荐用switch分支!!

switch分支的写法

#include<stdio.h>
int main()
{
	int weekday = 1; //星期数

	switch (weekday)//weekday是要匹配的值
	{
		//如果weekday = 1,那么会走这条语句的内容
	case 1: printf("跑步"); 
		break;

		//如果weekday = 2,那么会走这条语句的内容
	case 2: printf("爬山");
		break;

		//如果weekday = 3,那么会走这条语句的内容
	case 3: printf("游泳");
		break;

		//如果weekday = 4,那么会走这条语句的内容
	case 4: printf("打游戏");
		break;

		//如果weekday = 5,那么会走这条语句的内容
	case 5: printf("打篮球");
		break;

		//如果weekday = 6,那么会走这条语句的内容
	case 6: printf("踢足球");
		break;

		//如果weekday = 7,那么会走这条语句的内容
	case 7: printf("写作业");
		break;

		//如果上面都不满足,那么会执行这一条
	default:
		printf("星期数不存在");
		break;
	}

	return 0;
}

在这里插入图片描述

注意!每条case分支必须要加上break语句,否则会接着执行下一条语句。假设我把case1,和case2的break删掉。
在这里插入图片描述
我们会发现它会接着往下执行,直到遇到break才结束。


结言🥳:

💦💦如果有写的有什么不好的地方,希望大家指证出来,我会不断的改正自己的错误。💯💯如果感觉写的还可以,可以点赞三连一波哦~🍸🍸后续会持续为大家更新大纲上的内容,以及数据结构,C++等方面的知识

🔥🔥你们的支持是我最大的动力,希望在往后的日子里,我们大家一起进步!!!
🔥🔥

  • 39
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 54
    评论
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林 子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值