计算机程序设计基础_第1页
计算机程序设计基础_第2页
计算机程序设计基础_第3页
计算机程序设计基础_第4页
计算机程序设计基础_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机程序设计基础

B,一、

1

课程目标

■掌握编程方退思路X/

•树立正确的程序设计思考方法,打好基础

£训练抽象思维

•抽象贯穿程序设计与开发活动的始终,对抽象的理

解与把握严重影响着程序的质量与效率

•程序越抽象就越通用,也越合理

•程序能不能解决此问题?能不能解决另一个问题?

回增强解决实际问题的能力

突出“基础”,语言学习并不是主要的,关键是方法、思路与抽

象思维的培养

C程序锭计基础

2

几个基本概念

回程序k\//

•一系列遵循一定规则并正确完成一定功能的代码或指令

序列

•对程序的描述:程序=数据结构+算法

K程序设计

•按照任务需要,设计数据结构与算法,编写代码并测试

其正确性,得到正确运行结果的过程

■W法/\

•问题的求解方法与步骤,不允许存在二义性

•算法设计过程是逐步求精,常使用流程图描述算法

■数据结构

•数据对象、相互关系及构造方法,与算法关系密切

C程序锭计基础

3

C语言的标识符

■字符集:ASCH字符集X会判断标识符

‘,小写英文字母、普字、部?特(号

■标识符(P13)\/\

•定义:以下划线—或字母开头,由下划线、字母、

数字组成,表示常量、变量、函数、类型等名称

f•保留字(关键字):系统专用具有特定意义的标识符

•预定义标识符:编译命令与库函数名,具有特定意

义,一般不能重新定义

•用户定义标识符:用户根据需要定义,主要是为了

使程序容易阅读、理解与维护

C程序锭计基础

C语言程序的结构特点(P15)

阿c语言程序个或多个函数组成/且必

须含有惟一一个名为神山〃的主函数

泞函数是C程序的基本单位

E1程序执行由主函数main开始,到main结

束。其他函数由主函数调用或间接调用。

回程序执行流程与函数定义顺序无关,主函

数可以在程序文件的任何位置

£每个函数包含函数头与函数体两部分

C程序锭计基础

c歼贻

不正确

»在程序中对用

到的所有数据都C语言数据类型

必须指定其数据

,整型(int)

类型。

L单精度型.(float)

「基本类型〈实型

-双精度型(double)

'字符型(char)

空类型(*3d)

数据类型Y

指针类型

厂教组(array)

结构体(struct)

、、构造类型予

联合体(union)

枚举(enuni)

c程汨殳计基础

7

#define标识符常量指数

常量必须为整数

回整型常量的表示

十进制、十六进制(0%开头)、八进制(0开

实型常量的表示

一般形式(小数表示)、指数形式:1.23e-4

♦字符型常量的表示/\

•如:七'、*、7、’\n'尾数

不能省略

回字符串常量的表示

•例:“AnHui"、"ProgramminginC”

注意:字符串的长度〃,占用〃+1字节,最后一

个字节存储NULL字符()。

C程序锭计基础

8

类型名变量名表;变量

£变量的定义:在程序执行过程中,其值改变的量

•系统为每个变量分配合适的存储空间,以存放其值

注意:变量要初始化

£变量的四个基本特征(特性):VANT

/•值(value):在任一时刻,每个变量均具有惟一值

•地址(address):每个变量均具有惟一地址,且除非

其生命结束,地址不可更改

•名称(name):每个变量具有固定的名称或名字标识

•类型(type):每个变量均具有确定的类型,不可更改

C程序锭计基础

9

运算符及其优先级

15

c程序锭计基础

10

K已知intx=5,y;例

那么,y=++x>4&&++x<10;x=7y=1

若intx=8,y;呢?x=10y=0

-错!

①floata=10fb;b=a%5;

回]/*=%+1等价于"=(%+1)

:«(左移n位):x«n

•相当于乘2〃,原高位舍弃,低位补0

回»(右移n位):x»n

•相当于除2〃,原低位舍弃,高位补0(无符号数)或

符号位(有符号数)

C程序锭计基础

11

赋值语句与赋值表达式

■赋值表达\/./

、赋值操作符:'先级较低V/

•赋值表达式的值:赋值操作符赋给目标变量的值

•例:while((c=getcharQ)!=EOF){/*...*/}

■篇值语句/\

/•以分号结束的赋值表反\

•格式:变量名=表达式;例:b=c+(int)a;

•赋值语句对左边变量名或等价的数组元素名实施写

操作

•右边的表达式结果若与左边的类型不同,则先转换

再赋值,此时可能导致数据精度的损失

C程序锭计基础

12

其他运算符与表达式

驾条件运算将会条件表达式/

•格式:表达式1?表达式2:表达式3

•例:x=(q>b)?q:b;

•上例等价于:if(〃〉匕)x=a;elsex=b;

■/逗号运算符与逗号装达式\

•以逗号连接的表达式

•计算过程:从左到右逐个计算各个子表达式,

结果为最后一个子表达式的值

•例:z=(x=m+n/y=m-n/x/y\

m=(x,y,z);

c程序锭计基础

13

输入函数

■输入函数scanfO、//

矿(“格式控制字符串”,输入项地址表);

例:sc〃到V,a=%d,c=%c,s=%s〃,&cage,&ch,str);

多个输入项的分隔:格式控制串中其他字符

需在输入数据时一并输入;未分隔的两个输入

项在输入数据时使用空格、Tab或回车键分隔

8字符输入getchar()I

-字符串输入gets(str)

C程序锭计基础

14

floatpi-3.14159;注意:若数值突破场

宽,则按原数值输出

printf(zzpi=%-8.4f\nA,,pi);

pr客式控制字符串“,输出项列表上

•例6〃age=%小〃〃,age);

■融说明符%\/\/

•%d,、同,%的%s,%ld,%%,%o

〃优表示以“%丁格式输出时,数据所占用的位数(场宽)

“.心可选,表示小数点后的位数

“-”表示数据左对齐(缺省时,数据右对齐,前补空格)

£输出字符putchar(ch)

口输出字符串puts(str)

C程序锭计基础

15

程序的控制结构

回单入口单出口\j/

三种基本控制结构:顺序、分支、循环

■控而结构可以嵌套/\/

顺序结构——复褥/语句块\

/{语句1;语句2;...语句n;}

分支结构----if-else语句、switch^句

循环结构---while>do-while>for语句

C程序锭计基础

16

C程序锭计基础

17

(表达式)

switchP53switch语句

case常量表达式1:语句组1;,

case常量表达式2:语句组2;

18

保证循环终止while循环

£while循环格式:while(表达式){循环体}

•do-while循环格式:do{循环体}while(表达式);

C程序锭计基础

/fO丫循环

思for循环格或“\//

•for(语句1;条件表达式;语句2){循环体}

•例:for(i=0,j=100;i<100;i++,j--)

for(;i<100;);

c程序锭计基础

20

循环控制转移

/\//

回break语句

•终止当前循环的执行,在存在循环嵌套的场

合,它并不能终止外层循环的执行

目continue语句

•终止的是当前循环的当前一次迭代,而不是

整个循环,当前循环的下一次迭代仍会执行

C程序锭计基础

21

回输入一串字符,以回车结束输入,程序统计并

输出其中小写字母的个数

#include<stdio.h>

intmainO{

charc;

intnum=0;

p近〃"("Enterastring:\n/z);

while((c=getcharO)!=z\nz)

{if(c<97IIc>122)continue;

/*非小写字母,本次循环结束*/

num++;_______

若换为break呢?

pyintf("°/od\n",num);

return0;

22

数组

H一维数组/钢类型的一界列数据/

•孳据类型数组名[元素个数]'/

•例:int^[8];\/

-数组元素个数必须为整型常量或整型常量表达

式,但不能含有变量

-数组元素下标从0开始,到元素个数"

/-数组定义与初始化合并时,可省略方括号中的

元素个数

如:inta[]=<1,2,3,4,5}

C程序锭计基础

23

二维数组

K定义:数据类型数组名[常量表达式1][常量率达式2];

•例:int矶2H8];/

•数据按行顺序存放

数组定义与初始化合并时,方括号中的元素个数只

有第一维可以省略,C编译不检查第一维的大小

•正确:

charboard[^\[3]={...};

charboard[][4]={...};

・错误:

charboardl][]={...);

charboard[4][]={...};

c程序锭计基础

24

£用户输入一个4X4的整数矩阵,编写程序求其两对

角线上元素的和

#include<stdio.h>

intmainO

{intwtafrtx[4][4],i,j^esultl=0,result!=

for(t=0;i<4;t++)

{p*时(“Line%d:zz,t);

for(;=0;/<4;/++)

/ou:

{scanf('/odf&matrix[i][]]);

if(i==/)resultl+=mafrtx[i][7];

if(i+/==3)result!+=mafnx[i][/];

)

)

p*(“Results:%d,resultl,result!);

return0;

c程序锭计基础

25

字符型数组

E字符型数组/况素类型为字符的数组/

•常用于存放字符串如:charstr[10];

•二维字符数组:戈素类型为生符弋的一维数组/

如:charc[3][5];

回初始化

•使用数组形式:chars[6]={

•使用字符串形式:chars[6]=z/Hello,z;

或chars[6]={"HeHo"};

•sizeof(s)strlen(s)头文件:string.h

•不允许:chars[6];s=z/Hello";

IB字符型数组的输入输出

•putcharOygetcharO>puts()ygets。、printfO>

----scanfO-------------------------------------------------------

C程序银•基生

字符串

■字符串以字符数组表示,末尾加'\,

■数组型字符串•■■用字符数组保存字符串

•charstr[10];inti;

for(i=0;i<10;i++)str[i]=(char)('屋+i);

瞩指针型字符串■定义一个指针指向字符串

•charstr[10],*p;

for(i=0,p=str;i<10;i++,p++)

*p=(char)('a!+/);

回字符串函数:strcpy(s1,s2)

strcat(s1,s2)...--------

c程^•基^

指针

此指针的意义;通过地址访问数据或函数

回指针的使用场合

理数参数:提高函数参数的传递效率/

I/构造复杂数据结构:建立数据间的联系

•动态内存分配:构造并访问匿名数据对象

回指针数据对象

•指针变量:指针形式定义的变量(数据对象)

•指针变量的值:内存地址值,一般为其他数据

对象地址

£目标数据对象:指针所指向的数据对象

C程序锭计基础

28

指针变量的引用

£指针变量中只能存放地址,[IX他

非地址类型的数据赋给一个inta;int*p;

scanf(''%d':&a);

如:int*pointer_1=100;4

I/int*q=0;空指针,1p=&a;

printf(''a=%d';*p);

回有两个有关的运算符:

(1)&取地址运算符

(2)*指针运算符(或称“间接访问”运算符)

£例如:&a为变量a的地址,*p为指针变量p所指向

的存储单元,即目标对象。

C程序锭计基础

29

K指向数组元素的指针:

•例:inta[10];int*p;p=a;或p=&a[0];

•〃为数组,p是指向数组的首元素a[0]的指针

•使用方法X/

•int倪[10];p=a;〃将数组讥的首地址赋给p

•p++;〃将指针p向前移动一个单位,指向讥[1]

•*p++;〃先得到Ml]的值,再使p+7指向式2]

•注意:*p++等价于*(〃++)

•(*〃)++;//将倪⑵的值加1

■字符指针与字符里/、

•正确例:char*s;s=〃CProgramming";

•错误例:chars[14];s=/ZCProgramming";

〃s为数组名,不可整体赋值

c程序锭计基础

30

有关指针的数据类型

einti;定义整型变量i

■inta[n];定义整型数组a,它有n个元素/

。int*p;p为指针变量,指向整型数据,可指向数组元素

int*p[n];定义指针数组p,有n个指向整型数据的指针元素

回int(*p)[n];定义指向含n个元素的一维数组的指针p

嵋intf();f为带回一个整型值的函数\

Rint*p();p为带回一个指针的函数,该指针指向整型数据

Eint(*p)();p为指向函数的指针,该函数返回一个整型值

£int**p;p为指针变量,指向一个指向整型数据的指针变量

即:指向一个指针的指针变量

C程序锭计基础

31

£使用指针将输入的两个整数交换顺序

#include<stdio.h>

intmainO问题:使用下边的语句替换行不行?

(

intmfn^pm^pn,temp;//定义整型变量和指针变量

pm=&m;pn=&n;//指针pm指向变量神,指针p〃指向变量〃

scanf(u%d%du,pm,pn);//利用指针输入整型数据机和〃

//利用指针进行数据交换,设中间变量ientp

temp=*pm;=*pn;=temp;<---------------------

%d\n/z,m,n);//输出相和〃的结果

ff

print叶'/od,%d\nf^pmf^pn);〃利用指针输出结果

return0;

temp=pm;pm=pn;pn=temp;

C程序锭计基础

32

结构体类型

■结构体类型的性质:\/

不同数据类型组成的集合体

驾声明格式\

structDATE

struct结构体名

(

4/intyear)

数据类型声明符1成员名1;

intmonth;

数据类型声明符2成员名2;

I

Iintday;

I

数据类型声明符〃成员名期intyearday;

c程序锭计基础

33

结构体变量

structDATE

E结构体类型的变量定义{

•格式:intyear;

struct结构体名变量名;

•例:structDATEdate;intday)

按照结构体类型中每个成员的类型分迎yearday)

配实际的存储空间14ate;

注意:联合体(union)各个成员共享同一yn;on「

片存储空间,其他性质与结构体完全{丫且吗工

相向chara[10];

}levels

C程序锭计基础

34

结构体成员的引用

date

结构体成员运算符■■■通过结构体变量

Kyear

•格式:结构体变量名.成员名、ymonth

•例:structDATEdate;day

date.year=2004;yearday

回结构体指向运算符■"通过结构体指针

/•格式:结构体变量名成员名'

•例:structDATE*p=&cdate;p->year=2004;

•说明:p->year=(^p).year

c程序锭计基础

35

枚举类型

圈如果一个变量只有几种可能的值,可以定义为枚举类型。

■声明枚举亲型用equm开头/

enumSex{male,female};

枚举文字的值缺省时从。开始/衣次抽./

■也允许显式定义枚举文字的《、/

类型别名定义

类型别名定义的一般格式:typedef原类型标识新类型名;

例一:typedefintINTEGER;

例二:enumBOOL{FALSE,TRUE};

typedefenumBOOLBoolean;

c程序锭计基础

36

intCtnp(intxfinty)

函数的头部函数

{intz;

缺省返回值为int

.、调if(x==y)z=0;

函数参叵回值elseif(x>y)z=l;

elsez=-1;

/函数返回值%型名函数名(形二

/{函数体}/returnz;

函数声明是使用分号来替代{函数体}

即:函数返回值类型名函数名(形式参数表);

(函数缺省的返回类型是int)

C程序锭计基础

37

函数间的信息传递

s通过全局变量/

考通过参数/

可以分为以下两大类:

(1)传送值先对实参求值,然后将其值传送给

相应的形参。

当形参是变量名时,实参可以是一个可求值的表达

式(包括常数、已赋值的变量名)。

⑵传地址实参是地址名(如数组名)或指针名,

则将该地址或指针传送给相应形参。

K通过函数的返回值

C程序锭计基础

38

voidSwap(int%,inty)

(

inttemp;

printf(,zSwap:x=%d,y=x,y);

temp=%;x=y;y=temp)

z,

printfiSwap:x=%d,y=xfy);

return;

intafb;Swap(a,b);

voidSwap(int*x,int*y)

{

inttemp;

,z,r

printfiSwap:*x=°/od,*y=%d\nf*%,);

temp==temp;

printfiz,Swap:*x=%d,*y=);

return;

intafb;Swap(&倪,&b);

c程序锭计基础

39

变量的存储类别及作用域

回auto:自动变量,局部变量缺省值/

一其生存期自魂t持到函数结*、/

register:寄存器变量,局部变量缺省值’

卜存储于寄存器中、提高游效率\1

回static:静态变量,不改变变量的作用域

/•静态全局变量:限制该变量仅能在本文件内使用

•静态局部变量:与普通局部变量不同,在一次函数调用

后仍维持其值不变,下次调用该函数时使用上一次的值

extern:外部变量,扩展变量的作用域

•将其他文件中的全局变量引入此文件

C程序锭计基础

40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论