【C语言】常见概念续集

C语言常见概念

1.什么是库函数

首先这可以提及C语言的发展史,起初程序员在编程时总是会反复使用一些常见的代码,开发者为提高编程效率,于是C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,也就是我们所说的库函数
:printf、scanf、strlen、remove、rand等等。

库函数使用前提

C语言中规定一个系列库函数一般会声明在同一个头文件中,所以库函数的使用要包含对应的头文件

#include<stdio.h>//stdio是头文件
int main()
{
 printf("hello");//就如使用printf就要包含stdio的头文件
 return 0;
}

若要进一步了解可以参考链接:https://cplusplus.com/reference/clibrary/

2.关键字介绍

C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字
• 关键字都有特殊的意义,是保留给C语⾔使⽤的
• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
• 关键字也是不能⾃⼰创建的
C语言的32个关键字如下:
在这里插入图片描述
注:在C99标准中加⼊了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字,但最常见的还是上述32个关键字。
可参考链接:https://zh.cppreference.com/w/c/keyword

3.字符和ASCII编码

字符

我们在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:‘a’,‘b’,‘@’。而多个字符组合在一起就叫做字符串,用双引号括起来,例:“abc”,“@qc”。
注:引号输入为英文

ASCII编码

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。
在这里插入图片描述
参考:https://zh.cppreference.com/w/cpp/language/ascii
A~Z的ASCII码值从65-90
a~z的ASCII码值从97-122
• 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32;
• 数字字符0~9的ASCII码值从48~57;
• 换⾏ \n 的ASCII值是:10;
• 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,⽆法打印在屏幕上观察。
如下两种表示法是一样的

#include<stdio.h>
int main()
{
	printf("%c\n", 'N');//单个字符的打印可以使⽤%c
	printf("%c\n", 78);//这⾥的78是字符N的ASCII码值,也是可以正常打印的
	return 0;
}

输出的结果:
在这里插入图片描述

4. 转义字符

在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。
⽐如:我们有字符 n ,在字符串中打印的时候⾃然能打印出这个字符,如下:

#include <stdio.h>
int main()
{
 printf("qecndef");
 return 0;
 }

会输出:qecndef
如果我们修改⼀下代码,在 n 的前⾯加上 \ ,变成如下代码:

#include <stdio.h>
int main()
{
printf("qec\ndef");
return 0;
}

在这里插入图片描述
这就是转义字符的问题, \n 是⼀个转义字符表⽰换⾏的意思,我们可以简单的理解为 \ 让 n 的意思发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换⾏的意思。
C语⾔中像这样的转义字符还有⼀些,具体如下:
• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \’ :⽤于表⽰字符常量’
• \" :⽤于表⽰⼀个字符串内部的双引号
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
• \0 :null字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其ASCII码值是0.

下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
• \ddd :ddd表⽰1~3个⼋进制的数字。如:\130表⽰字符X
• \xdd :dd表⽰2个⼗六进制数字。如:\x30表⽰字符0

代码演示:

#include <stdio.h>
int main()
{
 printf("%c\n", '\'');
 printf("%s\n", "\"");
 printf("c:\\test\\code\\test.c\n");
 printf("\a");
 printf("%c\n", '\130'); //130是8进制,转换成10进制是88,以88作为ASCII码值的字符'X' 
 printf("%c\n", '\x30'); /*x30中的30是16进制,转换成10进制是48,
 以48作为ASCII码值的字符是'0' */
 return 0;
 }

转义字符参考:https://zh.cppreference.com/w/c/language/escape

5.语句和语句分类

C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
• 空语句
• 表达式语句
• 函数调⽤语句
• 复合语句
• 控制语句

这里着重说明一下控制语句:

控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句
可分成以下三类:

  1. 条件判断语句也叫分⽀语句:if语句、switch语句;
  2. 循环执⾏语句:dowhile语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。
    这些具体内容后期与大家一一分享😍

6.结语❤️❤️❤️

在这里插入图片描述
更多内容请待下节分享😍😍😍

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值