c语言取余规则_C语言入门学好这一篇就足够了!C语言所有的知识点,满满的干货…

C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。

hello,world

#include<stdio.h>

intmain()

{

/*在双引号中间输入Hello World*/

printf(“Hello World”);

return0;

}

注:在最新的C标准中,main函数前的类型为int而不是void

c语言的具体结构

简单来说,一个C程序就是由若干头文件和函数组成。

f9ecc682f8d3b71b6939daf084166e18.png

C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口

main前面的int就是主函数的类型.

printf()是格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息

return是函数的返回值,根据函数类型的不同,返回的值也是不同的。

n是转义字符中的换行符。(注意:C程序一定是从主函数开始执行的)

良好习惯之规范

一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行

函数体内的语句要有明显缩进通常以按一下Tab键为一个缩进

括号要成对写,如果需要删除的话也要成对删除

当一句可执行语句结束的时候末尾需要有分号

代码中所有符号均为英文半角符号

942727b5b94f8fbdc0d3c74b7314129f.png

变量定义的一般形式为:数据类型 变量名;

多个类型相同的变量:数据类型 变量名, 变量名, 变量名…;

4dec316e2ea0121fa6b4d97c650ebeac.png

最常用的整型, 实型与字符型(char,int,float,double):

534ee040a7224c241b6034f83e0134e1.png

注:

int short int long int是根据编译环境的不同,所取范围不同。

而其中short int和long int至少是表中所写范围, 但是int在表中是以16位编译环境写的取值范围。

另外 c语言int的取值范围在于他占用的字节数 ,不同的编译器,规定是不一样。

ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VC里,一个int是占4个字节的。

浮点数据是指带小数的数字。

生活中有很多信息适合使用浮点型数据来表示,比如:人的体重(单位:公斤)、商品价格、圆周率等等。

因为精度的不同又分为3种(float,double,long double):

274b588cf0e78424575f776bf15f36dc.png

注意:格式符个数要与变量、常量或者表达式的个数一一对应

不可改变的常量

在程序执行过程中,值不发生改变的量称为常量

mtianyan: C语言的常量可以分为直接常量和符号常量。

直接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如:

整型常量:13、0、-13;

实型常量:13.33、-24.4;

字符常量:‘a’、‘M’

字符串常量:”I love imooc!”

aabcd9b4584be4ac3f4106fe3bec7638.png

char类型数据转换为int类型数据遵循ASCII码中的对应值.

注:

字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换

char可以转换为int,int可以转换为double,char可以转换为double。但是不可以反向。

强制类型转换

强制类型转换是通过定义类型转换运算来实现的。其一般形式为:

(数据类型) (表达式)

其作用是把表达式的运算结果强制转换成类型说明符所表示的类型

在使用强制转换时应注意以下问题:

数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。

转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换

强制转换后的运算结果不遵循四舍五入原则。

运算符号

C语言中运算符:

※ 算术运算符

※ 赋值运算符

※ 关系运算符

※ 逻辑运算符

※ 三目运算符

算术运算符

c语言基本运算符:

d50dfa592a60eedc8904fb20b2fee223.png

赋值运算符

C语言中赋值运算符分为简单赋值运算符复合赋值运算符

简单赋值运算符=号了,下面讲一下复合赋值运算符:

复合赋值运算符就是在简单赋值符=之前加上其它运算符构成.

例如+=、-=、*=、/=、%=

分析:定义整型变量a并赋值为3,a += 5;这个算式就等价于a = a+5; 将变量a和5相加之后再赋值给a

注意:复合运算符中运算符和等号之间是不存在空格的。

关系运算符

C语言中的关系运算符:

60cc2f32a35a5f4605130b79a3cd7a58.png

逻辑运算的值也是有两种分别为真和假,C语言中用整型的1和0来表示。其求值规则如下:

与运算 &&

参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 && 7>5 ,运算结果为真;

或运算 ||

参与运算的两个变量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>=5||5>8,运算结果为真;

非运算!

参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>8),运算结果为真。

三目运算符

C语言中的三目运算符:,其格式为:

表达式1表达式2 : 表达式3;

执行过程是:

先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。

#include<stdio.h>

intmain()

{

//定义小编兜里的钱

doublemoney =12.0;

//定义打车回家的费用

doublecost =11.5;

printf(“小编能不能打车回家呢:”);

//输出y小编就打车回家了,输出n小编就不能打车回家

printf(“%cn”,money>=costy’:’n’);

return0;

}

运算符大比拼之优先级比较

各种运算符号的顺序:

35b468ad7248bfb7f2c3843386fcdeb7.png

语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2。

注意:

if()后面没有分号,直接写{},else后面也没有分号,直接写{}

分支结构之多重if-else语句

C语言中多重if-else语句,其结构如下:

454d70e25358fd060c59f97dc87dfcc2.png

循环结构之while循环

反复不停的执行某个动作就是江湖人称的循环

C语言中有三种循环结构,先看一下C语言while循环的结构

c4233ac0045a237df45a2e357ef65e5e.png

do-while循环语句的语义是:

它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句

注意:mtianyan: 使用do-while结构语句时,while括号后必须有分号。

循环结构之for循环(一)

c语言中for循环一般形式:

87d41d42bfa4abc868c2bf62392b1040.png

表达式2一般是关系表达式逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。

各表达式中的变量一定要在for循环之前定义

怎么获得一个数的百位,十位和个位

·百位数:num/100 可以获得,因为 int 是整数型,小数部分会省略。比如 765/100 的结果是7

·十位数:num%100/10 。比如765%100先得到65,65/10得到6

·个位数:num%10。765%10得到5

循环结构之三种循环比较

while, do-while和for三种循环在具体的使用场合上是有区别的,如下:

知道循环次数的情况下更适合使用for循环;

在不知道循环次数的情况下适合使用while或者do-while循环:

如果有可能一次都不循环应考虑使用while循环

如果至少循环一次应考虑使用do-while循环。

但是从本质上讲,while,do-while和for循环之间是可以相互转换的。

循环结构之多重循环

多重循环就是在循环结构的循环体中又出现循环结构。

在实际开发中一般最多用到三层重循环

因为循环层数越多,运行时间越长,程序越复杂,所以一般用2-3层多重循环就可以了。另外不同循环之间也是可以嵌套的。

多重循环在执行的过程中,外层循环为父循环,内层循环为子循环

父循环一次,子循环需要全部执行完,直到跳出循环。父循环再进入下一次,子循环继续执行…

d504e1aa46c0123a7274ce5ebb7c45bc.png

使用for循环打印9×9乘法表

431bc5a8ca6971c85b82a38358b673ca.png

mtianyan: switch语句时还应注意以下几点:

1.在case后的各常量表达式的值不能相同,否则会出现错误。

2.在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。

3.switch后面的表达式语句只能是整型或者字符类型

4.在case后,允许有多个语句,可以不用{}括起来。

5.各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

6.default子句可以省略不用。

臭名远扬之goto语句

C语言中也有这样的语句,就是goto语句,goto语句是一种无条件分支语句.

goto 语句的使用格式为:

goto语句标号;

5386a285da77dc09c1fd8fb87d36f5e5.png

注意:

[] 包含的内容可以省略,数据类型说明省略,默认是 int 类型函数; 参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数;

函数名称遵循标识符命名规范;

mtianyan: 自定义函数尽量放在 main 函数之前,如果要放在main函数后面的话, 需要在main函数之前先声明自定义函数,声明格式为:

[数据类型说明]函数名称([参数]);

函数调用

我们需要用到自定义的函数的时候,就得调用它,那么在调用的时候就称之为函数调用

在C语言中,函数调用的一般形式为:

函数名([参数]);

注意:

对无参函数调用的时候可以将[]包含的省略。

[]中可以是常数,变量或其它构造类型数据及表达式,多个参数之间用逗号分隔。

有参与无参

在函数中不需要函数参数的称之为无参函数,在函数中需要函数参数的称之为有参函数。

有参和无参函数的一般形式如下:

8f732f3a2d577da4be86f85a39be6076.png

函数的返回值

函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。

函数的返回值要注意以下几点:

函数的值只能通过return语句返回主调函数。

return语句的一般形式为:

return表达式 或者为:return(表达式);

函数值的类型和函数定义中函数的类型应保持一致。

notes: 如果两者不一致,则以函数返回类型为准,自动进行类型转换。

没有返回值的函数,返回类型为 void。

注意:

void 函数中可以有执行代码块,但是不能有返回值.

mtianyan: void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为: return;

递归函数(一)

递归就是一个函数在它的函数体内调用它自身。

执行递归函数将反复调用其自身,每调用一次就进入新的一层。

注意递归函数必须有结束条件

递归函数(二)

5的阶乘这个例子进行一下剖析,看一看他的运算过程:

96568efc9253ae8b5c64556e19ff8b35.png

递归demo。

有5个人坐在一起,问第5个人多少岁说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后 问第1个人,他说是10岁。请问第5个人多大/p>

程序分析:

利用递归的方法,递归分为回推和递推两个阶段。要想知道第5个人岁数,需知道第4人的岁数,依次类推,推到第1人(10岁),再往回推。

75b5805c677304d9fb035704bdfd46ae.png

2、用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。如下为静态局部变量:

ac7f5984c9f7b94a251431faa0e17d9a.png

mtianyan: 注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。

4、用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

d1734260f1883c2e752e66d9d7b1ef5c.png

对于hello.c来说,直接引入了test.c文件。那么就可以调用testc中的static方法say()

而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法。

综合练习

北京市出租车打车计费规则如下:

1.每公里单价计费2.3元

2.起步价13元(包含3公里)

3.晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。

4.每次乘车加收1元钱的燃油附加税。

小明每天上下班都要打车,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。

请编写一个小程序计算小明每天打车的总费用。

812ca67d9cab275d8f61d69b21259c18.png

注意以下几点:

最好避免出现数组越界访问,循环变量最好不要超出数组的长度.

C语言的数组长度一经声明,长度就是固定,无法改变,并且C语言并不提供计算数组长度的方法

由于C语言是没有检查数组长度改变或者数组越界的这个机制,可能会在编辑器中编译并通过,但是结果就不能肯定了,因此还是不要越界或者改变数组的长度

c语言获取数组长度

intlength =sizeof(arr)/sizeof(arr[0]);

数组作为函数参数

数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:

整个数组当作函数参数,即把数组名称传入函数中,例如:

2240b18b459b607af097208d3169dc5f.png

数组作为函数参数时注意以下事项:

1.数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。

2.数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。

mtianyan: 数组的应用(一)[冒泡排序]

以升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。就像小学排队时按大小个排一样,将一个同学拉出来和后面的比比,如果高就放后面,一直把队伍排好。

032a1b0d0a6aa385317a77f3001e9bcd.png

字符串与数组

C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。一般有以下两种格式:

char 字符串名称[长度] = “字符串值”;

char 字符串名称[长度] = {‘字符1′,’字符2′,…,’字符n’,’0′};

注意:

[]中的长度是可以省略不写的;

采用第2种方式的时候最后一个元素必须是’0’,’0’表示字符串的结束标志;

采用第2种方式的时候在数组中不能写中文。

在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。

mtianyan:字符串函数

常用的字符串函数如下(strlen,strcmp,strcpy,strcat,atoi):

a1472eee56702c0dbcc18ef9d465b14c.png

strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小,例如:

4fdf4157ae4c680a9725b3438cde89ca.png

strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串,如:

b115e9fb3070ce602f42a028e64ee2cd.png

定义了一个名称为num,数据类型为int的二维数组。其中第一个[3]表示第一维下标的长度,就像购物时分类存放的购物;第二个[3]表示第二维下标的长度,就像每个购物袋中的元素。

eb278964c4eb33eaee1a71d39beadb77.png 文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113319 人正在系统学习中 相关资源:iZotope Ozone VST (臭氧) V4.0.3.274 绿色汉化版.zip-制造工具类…

来源:weixin_39624716

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月19日
下一篇 2020年9月19日

相关推荐