C语言讲义.docx

上传人:b****8 文档编号:9842398 上传时间:2023-02-07 格式:DOCX 页数:29 大小:39.02KB
下载 相关 举报
C语言讲义.docx_第1页
第1页 / 共29页
C语言讲义.docx_第2页
第2页 / 共29页
C语言讲义.docx_第3页
第3页 / 共29页
C语言讲义.docx_第4页
第4页 / 共29页
C语言讲义.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言讲义.docx

《C语言讲义.docx》由会员分享,可在线阅读,更多相关《C语言讲义.docx(29页珍藏版)》请在冰豆网上搜索。

C语言讲义.docx

C语言讲义

第一章新手上路

第一课HelloWorld

简单的小程序

输出HelloWorld:

//头文件

#include

//主函数

main()

{

printf("helloworld\n");〃函数体

}

1.C语言属于编译型语言

2.—个程序必须有主函数,而且只能有一个

3.C语言源文件的扩展名是.c

4.C语言中语句结束的标志是分号

第二课格式化输出函数

格式化输出函数:

printf()

1.不属于c语言基本语法

2.C语言并非必须包含头文件

3.printf()函数是在头文件<stdio.h>中定义的

4.用什么库函数,包含什么头文件

程序执行

1编译:

.c->.obj(二进制文件)

2.组建:

.obj->.eGe可执行文件)

3.运行:

在程序结束后不会关闭窗口

调用dos系统命令:

sPstem()

使用sPstem(函数要引入头文件

转义符

1.\n:

换行

:

反斜杠\

3.\':

单引号'

4.\":

双引号"

5.\t:

缩进

第三课变量

定义变量

1.定义变量:

a.定义一个整数型变量

int变量名

b.定义多个整数型变量

int变量名1,变量名2,...

输出变量

printf("%d",变量名);其中%d是格式控制符

printf输出的是双引号中的内容

输入变量

a.scanf("%d",&变量名);变量名前要加&

b.scanf("%d%d",&变量名1,&变量名2);

其中,%d%d之间没有空格,输入顺序与变量顺序一致间隔符:

回车、空格、制表符

第四课变量的赋值

变量的赋值

1.%%相当于百分号字符%

2.顺序结构:

从上往下依次执行

3.变量:

变量值可在程序中变化

4.

inta=5;a=a+1;

变量初始化:

将定义域赋值合并在一起,比如

5.赋值:

将等号右边的值赋值给左边,比如:

运算符

1.算术运算符:

+、-、G、/、%

2.赋值运算符:

=

3.复合运算符:

+=、-=、G=、/=、%=

4.自增自减运算符:

++、--

第五课变量的交换

借助第三方变量交换的实例

#includemain()

{I

inta,b,temp;

printf("请输入两个整数:

");

scanf("%d%d",&a,&b);

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

temp=a;

a=b;

b=temp;

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

}

不借助第三方变量交换的实例

#includemain()

{

inta,b;

printf("请输入两个整数:

");seanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a,b);a=a+b;

b=a_b;

a=a-b;

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

}

第六课变量修饰符

变量修饰符知识点

1.sizeof()计算变量在内存中所占大小

2.字符变量只占1字节

3.bit:

最小存储单位,只能存储0或1

4.int:

整型,占4字节,取值范围:

-2A31~2A31-1,格式控制符:

%d

5.short:

短整型,占2个字节,格式控制符:

%hd

6.long:

长整型,占4个字节,格式控制符:

%ld

7.signed:

有符号

8.unsigned:

无符号,格式控制符:

%u

第七课浮点类型

普通浮点类型

a.定义:

floata;

b.赋值:

floata=3.5f;

双精度浮点类型

a.定义:

doublea;

b.赋值:

doublea=3.5;

变量、常量都占内存空间

浮点型的常量:

doublea=.3相当于doublea=0.3

格式控制符

a.float控制符:

%e:

科学计数法形式,最常考,实数E整数(整数、0、负数)%f:

保留6位小数,不足部分以0补位

%g:

原样输出,最常用

b.double控制符:

%le%lf、%lg

汪意:

1.浮点数和整数运算,结果为浮点数

2.整数和整数运算,结果为整数

3.实数不可以参与余数运算

第八课格式化输入输出

C语言中三种进制

1•八进制

a.逢8进一

b.表示八进制:

0、1、2、3、4、5、6、7

c.格式控制符:

%o

d.赋值:

以0作为开头,例如:

inta=010;

2.十进制匚

a.逢10进一

b.表示十进制:

0、1、2、3、4、5、6、7、8、9

c.格式控制符:

%d

3.十六进制

a.逢16进一

b.表示十六进制:

0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

c.格式控制符:

%G

d.赋值:

以0G作为开头,例如:

inta=0G10

格式控制符

1.%md:

空格补位,一共占m位若m<变量长度,不加空格,正常输出

2.%m.nf:

—共占m位,小数点占n位

第二章选择结构

第一课if语句

if语句的一般格式:

if(逻辑条件)

{

满足条件时,执行的语句

}

else

{

不满足条件时,执行的语句

}

省略形式:

if(逻辑条件){执行语句}

第二课关系运算符

6中关系运算符

1.>:

大于

2.<:

小于

3.==:

等于

4.>=:

大于等于

5.<=:

小于等于

6.!

=:

不等于

关系表达式:

计算结果为真或假

C语言中,0表示假,非0表示真

判断奇偶

偶数:

能被2整除

奇数:

不能被2整数

第三课语句的概念

表达式语句

表达式;

函数调用语句

函数名(参数);

复合语句

{

语句1;

语句2;

语句3;

}

控制语句

.if语句

通用写法:

if(逻辑条件)

语句1

else

语句2

其中,语句可以为表达式语句、函数调用语句、复合语句、控制语句和空语句

.switch语句

.for语句

.while语句

.do语句

.break语句

.continue语句.return语句.goto语句

5.空语句不执行任何内容

第四课逻辑运算符

逻辑非⑴

!

真假

!

假真

逻辑与(&&)

真&&真真真&&假假假&&真假假&&假假

逻辑或(||)

直||直直真II假真假II真真假II假假

第五课嵌套的if语句

嵌套的if语句格式

if(逻辑表达式1)

语句1

elseif(逻辑表达式2)

语句2

elseif(逻辑表达式3)

语句3

else

语句n

else匹配:

遵循就近原则else与离自己最近的未匹配if匹配

第六课switch语句

switch语句一般格式

switch(表达式)

{

case情况1:

语句1

break;

case情况2:

语句2

break;

case情况n:

语句n

break;

default:

默认语句

break;

}

其中,break是跳出switch语句,default不一定放在最后

注意:

switch不能检查实数,case后面也不能判断实数

第七课条件运算符

格式

表达式1?

表达式2:

表达式3

用法1

if(表达式1)

表达式2;

else

{

表达式3;

}

用法2

if(表达式1)

{

表达式=表达式2;

}

else

{

表达式=表达式3;

}

嵌套格式

表达式1?

表达式2:

(表达式3?

表达式4:

表达式5)单目运算符:

只对一个表达式进行运算

双目运算符:

对两个表达式进行运算

三目运算符:

对三个表达式进行运算

第八课注释

按用途可分为

1•序言性注释

2.功能性注释

格式

/G注释内容G/

第九课a++和++a

自增

a++:

后缀表达式

++a:

前缀表达式

执行过程中:

a++=a,++a=a+1

第十课逻辑短路

逻辑短路

1•逻辑或:

只要前面逻辑表达式为真了,整个式子结果就为真,后面的就不需要执行了

2.逻辑与:

只要前面逻辑表达式为假了,整个式子结果就为假,后面的就不需要执行了

第三章循环结构

第一课for循环

for循环一般格式

for(初始化表达式;判定条件;自增表达式)

{I

循环体

}

第三课质数

质数(素数)

质数(素数):

只能分解成1和自己

判断质数的方法:

排除法

求平方根:

sqrt()

第四课while循环和do循环

while循环格式

while(判断条件)

{

循环体

}

do循环格式

do

循环体

}while(判定条件);

第五课break和continue

Break

break:

结束整个循环

Continue

continue:

结束本次循环,进入下次循环

控制语句

1•选择结构

a.if()else{}

b.switch(){}

2.循环结构

a.for(){}

b.while(){}

c.do{}while{}

3.流程控制

a.break;

b.continue;

c.goto;

第六课随机数

随机数知识点

1.生成随机数:

rand()

2.伪随机数:

数字虽然随机,但每次生成结果都相同

3.与时间有关的头文件:

time.h

4.控制随机数范围:

|

rand()%1O0任何整数%100,范围都是0-99

100+rand()%100范围是100-199

第七课水仙花数

判断规则

1.是一个三位数(100-999)

2.设百位a,十位b,个位c,则aA3+bA3+cA=abc

第四章函数

第一课函数

函数的一般格式

函数类型函数名(参数)

{

函数体

return函数返回值;

}

其中:

1.参数可以省略

2.return;返回函数调用位置

除void类型外,所有函数都应有返回值返回值类型:

应与函数类型一致

函数类型

intfloatdoublevoid(空类型)

函数的调用格式:

函数名();

函数声明:

类型函数名(参数);全局变量:

作用范围为整个源文件局部变量:

作用范围为函数f内部

第二课标识符

标识符包括

关键字和自定义标识符

自定义标识符三大规则

1•由字母、数字、下划线组成

2.只能以字母、下划线开头

3.不能与关键字重复

第三课形参和实参

本课知识点

形参:

函数定义时的参数实参:

函数调用时的参数

第十四课递归函数

递归函数

自己调用自己

经典递归

1•阶乘

终止条件:

n=1

递推公式:

f(n)=nGf(n-1)

2.斐波那契数列

终止条件:

n=1或n=2递推公式:

f(n)=f(n-1)+f(n-2)

第十七课主函数的几种形式

主函数的几种形式

1.intmain(void){

函数体

return。

}

2.intmain(intargc,charGargv[]){

函数体

return。

}

3.main()

函数体

}

return。

成功

returnl:

错误1

return2:

错误2eGit():

成功

eGit(0):

成功,直接结束程序

eGit

(1):

错误1

eGit

(2):

错误2

第十八课宏

宏有两种

1•不带参数的宏

#define宏的名称

2.带参数的宏

注意:

宏定义的后面是没有分号的

C语言中3种常量

1.普通常量

2.符号常量:

不带参数的宏

3.const常量:

使用方法类似变量

第五章数组

第一课数组的定义

本课知识点

1.数组定义

int数组名[数组大小];

inta[n],则最大的角标为n-1

2.可以根据初始化确定数组大小

3.初始化数量不能大于数组大小

4.使用宏来定义数组大小

#defineNIO

inta[N];

5.不可以使用变量定义数组

第二课数组和函数

本课知识点

1.数组可以作为函数的参数

2.函数中的数组参数可以省略大小voidf(intG[],intn)

{

函数体

}

第十一课质数

质数的两种算法

不用数组的质数算法:

1.若n不是质数,则必然存在一个不大于vn勺因数

2.只要找到一个因数,则n就必然不是质数,退出循环

用数组求质数的算法:

筛法

第十二课冒泡排序

排序原理

1.最大的元素放在右边

2.每次比上次至少循环一次

3.最坏次数:

(n-1)Gn/2

第十四课二分查找

查找算法

1•顺序查找

从前往后,按顺序依次查找

2.二分查找(折半查找)前提:

数组必须按序排好

中位数:

Mid=(Left+Right)\2,对于奇数、偶数都适应其中Left表示数组下界,Right表示数组上界

第二十课杨辉三角

本课知识点

1规则1:

最左列和斜边,均为1

2.规则2:

当前数字=上方数字+左上数字生成杨辉三角的步骤:

1.二维数组全部初始化为0

2.第一列全部初始化为1

3.从a(2,2)开始进行计算

4.从a(1,1)开始输出

第六章字符串

第一课字符类型

本课知识点

1•字符类型只接受单个字符的赋值

2.字符类型定义

chare;

c='w';

3.字符类型格式控制符:

%c

4.输入字符:

getchar()

输出字符:

putchar()

5.字符运算:

就是对它的ASCI码进行运算

第二课字符数组

常见转义符

1.'\n':

换行符

2.'\t':

缩进

3.'\'':

单引号

4.'\\':

反斜杠

5.'\"':

双引号

6.'\0':

字符串结尾

数字转义

八进制ASCI码

2.\G十六进制ASCI码

第三课字符串

本课知识点

1.以'\0'结尾的一串字符

2.其本质仍然是字符数组

3.字符串格式控制符:

%s

4输入字符串:

gets()

5.输出字符串:

puts(),结尾换行

6.库函数:

String.h

第十P五课字符串函数

本课知识点

1.strlen():

计算字符串长度,第一个’\0'前有几个字符sizeof():

计算数组占几字节

2.strcpP(目标数组,原字符串):

复制字符串

3.strcmp():

比较字符串大小

0:

两个字符串完全相等

1:

字符串1>字符串2

-1:

字符串1<字符串2

4.strcat():

连接字符串

第七章指针

第一课指针变量

本课知识点

1.定义:

使用G说明符进行定义intGp;intGp;

floatGp;floatGp

2.赋值:

指针变量,用于存储变量地址

只有指针变量指向一个变量时才可以为指针变量赋值

第二课指针和函数

指针和函数

1•按值传递:

实参的值不受形参影响

2.按地址传递:

实参的值可以受到形参影响

3.scanf():

变量以地址传递

4.函数地址:

每一个函数也都有内存地址

5.函数指针:

intGp();声明一个函数,返回值类型为intGint(Gp)();定义一个指针,用于指向一个函数

第五课指针和数组

本课知识点

1.p=a和p=&a[0]等价

2.1ntf(intG[])

所有数组形式的形参intG[]实质上都是指针类型intGG

3.G[i]和G(G+i)等价

&G[i]和G+i等价

4.1nta[10];a++;

错误,数组不能改变其他地址

第九课指针和字符串

本课知识点

1•字符串的本质是一个字符数组

2.字符指针:

可以指向字符串的指针

3.字符数组和字符指针对比:

字符数组不能修改其内存地址,可以修改其元素的值字符指针不能修改其元素的值,可以修改其内存地址

第十六课指针和二维数组

本课知识点

1.二维数组,每

予一个元素相当于一个变量

inta[2][3];a[0]->&a[0][0]a[1]->&a[1][0]

2.二维数组指针的定义

int(Gp)():

指向函数的指针

int(Gp)[3]:

指向列数为3的二维数组的指针

3.两种形式

数组形式:

inta[6],Gp=a;

P[0]->Gpp[1]->G(p+1)p[2]->G(p+2)p[i]->G(p+i)

p[i][j]->(G(p+i))[j]

指针形式:

p[i][j]->G(G(p+i)+j)p[O][O]->G(G(p+O)+O)->GGpp[0][1]->G(G(p+0)+1)->G(Gp+1)p[1][0]->G(G(p+1)+0)->GG(p+1)p[1][1]->G(G(p+1)+1)

4.对应赋值:

层次不同的指针不能相互赋值

第八章线性列表和其他

第一课结构体和共用体

结构体

1.定义

struct结构体类型名

{

成员属性

};//以分号结束

2.定义变量

struct结构体类型名变量名

struct结构体类型名

成员属性

}变量名;

3.赋值

变量名•属性名

4初始化(定义时)

struct结构体类型名变量名={依次初始化各成员}

5.定义类型别名

tPpedef原类型名新类型名

共用体

union共用体类型名

成员属性

}变量名;

第二课结构体和指针

结构体指针基本用法

main()

{

RectG={3,5},Gp;

p=&G;

printf("%d\n",p->width);//p所指向的结构体的属性}

优先级:

++p->G等价于++(p->G)

第五课malloc函数

本课知识点

1.malloc函数所在的头文件:

2.malloc函数使用格式:

malloc(空间大小)

3.malloc函数返回值类型:

voidG

4.malloc申请的空间并不会自动消失

5.释放空间:

free(p);

第六课线性链表

定义

#include

#includestructNode{intdata;

structNodeGneGt;

};

main()

{

structNodeGheader=NULL;

}

创建

structNodeGcreate(intn)

{

structNodeGp;

p=(structNodeG)malloc(sizeof(structNode));p->data=n;

p->neGt=nuII;

returnp;

}

输出

voidoutput(structNodeGp){while(p){

printf("%d\n",p->data);p=p->neGt;

}

}

修改

插入

voidinsert(structNodeGp,intn,intk)

{

structNodeGpNew;

inti;

for(i=0;i

p=p->neGt

}

pNew=(structNodeG)malloc(sizeof(structNode));pNew->data=k;

pNew->neGt=p->neGt;

p->neGt=pNew;

}

删除

voiddel(structNodeGp,intn)

structNodeGpDel;

inti;

for(i=0;i

p=p->neGt;

}

pDel=p->neGt;

p->neGt=pDel->neGt;free(pDel);

}

优质参考文档

第十课文件的打开和关闭

定义文件指针

FILEGfp

打开文件

fp=fopen("文件名","打开方式")

12种打开方式

文本文件:

r:

只读w:

新建写入

a:

追加

叶:

读写

w+:

新建读写

a+:

读写

二进制文件:

rb:

只读

wb:

新建写入

ab:

追加rb+:

读写wb+:

新建读写ab+:

读写

关闭文件

fclose()

第十一课文件的输入和输出

字符的写入和读取

fputc(字符,文件指针):

像文件中写入单个字符

putchar():

在控制台打印一个字符

fgetc(文件指针):

从文件中读取单个字符

getchar():

从控制台读条一个字符

feof(文件指针):

对文件进行遍历

rewind(文件指针):

将文件指针重新指回文件头部

字符串的写入和读取

fputs(字符串,文件指针):

像文件中输入字符串

puts(数组名):

向控制台输出字符串

fgets(数组名,数组大小,文件指针):

从文件中读取字符串gets(数组名):

从控制台读取字符串

普通变量的写入和读取

fprintf(文件指针,"%d",5):

向文件中写入printf("%d",5):

向控制台输出

fscanf文件指针,"%d",&a):

从文件中读取scanf("%d",&a):

从控制台输入

数组的写入和读取

数组的写入:

fwrite(数组名,单个元素大小,数组大小,fp)数组的输出:

fread(数组名,单个元素大小,数组大小,fp)

第十二课进制的转换

二/八/十六进制->十进制

数码乘以相应权之和

十进制->二/八/十六进制

连续除以基,直至商为0,从低到高记录余数

二进制<-->八/十六进制

二进制转换成八进制:

从右像左,每3位一组(不足3位补0),转换成八进制八进制转换成二进制:

用3位二进制数代替每一位八进制数

二进制转换成十六进制:

从右像左,每4位一组(不足4位补0),转换成十六进制

十六进制转换成二进制:

用4位二进制数代替每一位十六进制数

其中:

数码:

表示数的符号

基:

数码的个数

权:

每一位所具有的值

第十三课位运算

按位与(&)

如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

按位或(|)

两个相应的二进制位中只要有一个为1,该位的结果值为1

按位取反(~)

用来对一个二进制数按位取反,即将0变1,将1变0

按位异或(A)

若参加运算的两个二进制位值相同则为0,否则为1

左移(<<)

用来将一个数的各二进制位全部左移N位,右补0

右移(>>)

将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高

位补0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1