slide1
Download
Skip this Video
Download Presentation
C 语言程序设计

Loading in 2 Seconds...

play fullscreen
1 / 61

C 语言程序设计 - PowerPoint PPT Presentation


  • 102 Views
  • Uploaded on

C 语言程序设计. 主讲:徐大军. Email: [email protected] Tel: 13581894133 QQ 群 : 231175581 (每周二、三晚在线答疑). 教学大纲. 1 、课程教学目标 本课程为非计算机专业的基础课程,任务: 在学生掌握 C 语言的基本内容、程序设计的基本方法与编程技巧的过程中,向学生介绍进行科学计算的一般思路。 2 、教材 《C 程序设计 》 第四版 谭浩强 清华出版社 3 、教学内容及基本要求 目录 17~22. 课程安排

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' C 语言程序设计' - alyssa-harrington


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

C语言程序设计

主讲:徐大军

Email: [email protected]

Tel: 13581894133

QQ群: 231175581(每周二、三晚在线答疑)

slide2
教学大纲
  • 1、课程教学目标
    • 本课程为非计算机专业的基础课程,任务:在学生掌握C语言的基本内容、程序设计的基本方法与编程技巧的过程中,向学生介绍进行科学计算的一般思路。
  • 2、教材
    • 《C程序设计》第四版 谭浩强 清华出版社
    • 3、教学内容及基本要求
    • 目录17~22
slide3
课程安排
    • 上课 32学时,第1~16周,J3-201周二 上午3、4节;
    • 上机 16学时,第2~9周,
    • 地点(待定)
    • 时间(周五上午3、4节)
slide4
成绩
    • 平时作业成绩占20%,上机报告10%,
    • 上机测试10%,期末笔试成绩60%
slide5
第一章 C语言概述
  • 内容提要:
    • C语言历史与发展
    • C语言的特点
    • 简单的C语言程序介绍
    • 如何运行C语言程序
slide6
关于计算机程序的应用
  • 计算机能够做什么?
slide7
计算机程序设计在AA领域的应用
  • 从一则新闻说起。。。

快讯:中国首台千万亿次超级计算机系统“天河一号” 居国际组织全球超级计算机前500强榜首。

2010年11月15日 02:39:45  来源: 新华网

slide8
计算机程序设计在AA领域的应用
  • 从一则新闻说起。。。

世界上第一台电子计算机命名为“埃尼阿克”ENIAC,是1946年美国宾夕法尼亚大学研制成功。

弹道计算

slide9
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例
slide10
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计

slide11
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计

slide12
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计

slide13
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计

slide14
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

航天运载器、导弹、卫星、高超飞行器、浮空器、炮射飞行器等

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计

slide15
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

火箭、导弹、卫星的导航制导与控制,图像处理

导航探测

研究形式:

算法研究

硬件开发

图像处理

slide16
计算机程序设计在AA领域的应用
  • 计算机程序设计的应用案例

液体、固体、固液火箭发动机,电推进发动机,冲压发动机等

动力工程

研究形式:

流场计算

结构计算

传热计算

slide17
关于“计算机程序设计语言”
  • 计算机程序设计语言
  • 真实会话语言

|

  • 面向问题的语言

|

  • 计算机程序设计语言(C语言)

|

  • 机器语言

|

  • 计算机硬件
slide18
关于“计算机程序设计语言”
  • 计算机程序设计语言种类

C,C++, C#

Basic

Fortran

Java

……

slide19
关于“计算机程序设计语言”
  • 为何选择C语言学习?

应用程序界面开发

C++, VB...

科学数值计算

网络编程

C,C++, Fortran.,

MatLab..

Java,C#

数据库编程

C

VC++,VB

硬件编程

C

C++

C#

扩展阅读: 【转载】为什么我们都应该学学C语言

slide20
C语言的发展历史与特点
  • C语言的发展历史

汇编语言

UNIX操作系统

改进

Algol 60

语言

BCPL语言

Bell Lab. B语言

New B

语言

C语言

Ken Thompson

Dennis Ritchie

  • C语言的标准化:

K&R C

(经典C)

ANSI C

(C89或C90)

C99

The C Programming Langurage

Brian Kernighan, Dennis Ritchit

1983-1989, 美国国家标准协会ANSI

1990,国际标准化组织ISO

1999,ISO

slide21
C语言的发展历史与特点
  • C语言的特点
    • C语言是一种底层语言
    • C语言是一种小型语言
    • C语言是一种包容性语言
  • C语言的优点
    • 高效、可移植性、功能强大
    • 灵活、标准库
    • 与UNIX/LINUX系统的集成
slide22
C语言的发展历史与特点
  • C语言的缺点
    • C语言更容易隐藏错误
    • C程序可能会难以理解
    • C程序可能会难以修改

国际模糊C代码大赛

International Obfuscated C Code Contest

http://www.ioccc.org

slide23
简单的C程序

注释

函数

语句

编译预处理

/* example1.1 The first C Program*/

#include

int main()

{

printf(“This is a C Program!\n");

return 0;

}

This is a C Program!

slide24
简单的C程序

格式特点

  • 习惯用小写字母,大小写敏感
  • 不使用行号,无程序行概念
  • 可使用空行和空格
  • 用锯齿形书写格式

10

10

例:求∑ (i*∑j)之积

i=1

j=1

#include

void main( ) //主函数

{

int i , j , sum; //变量

sum=0;

for(i=1; i<10;i++)

{

for(j=1;j<10;j++)

{

sum=sum+i*j ;

}

}

printf(“%d\n”,sum);

}

优秀程序员的素质之一:

  • 使用TAB缩进
  • {} 表示某一层次结构 ,要对齐
  • 有足够的注释
  • 有合适的空行
  • 一个说明或一个语句占一行
slide25
简单的C程序

非法

结构特点

    • 1,编译预处理命令 -> 例:#include "stdio.h“
  • 2,函数与主函数
    • 程序由一个或多个函数组成
    • 必须有且只能有一个主函数main()
    • 程序执行从main开始,在main中结束,

其它函数通过嵌套调用得以执行。

  • 3,程序语句
    • C程序由语句组成
    • 用“;”作为语句终止符
  • 4,注释
    • /* */为C注释,不能嵌套
    • //为C++的注释
    • 不产生编译代码

例: /*This is the main /* of example1.1*/ */

slide26
简单的C程序

c程序结构

slide27
简单的C程序

例1.2 加法运算程序

#include "stdio.h" //编译预处理

int main()

{

int a,b,sum; /*定义变量*/

a=123; /*变量赋值*/

b=456;

sum=a+b; /*算术表达式 ,求和*/

printf("sum is %d\n",sum); /*输出sum的值*/

return 0;

}

  • 在C中,变量必须先定义,后使用
  • 语句具有规定的语法格式和特定的功能
  • ;为语句的终止符。
  • { }表示程序的结构层次范围, 并且必须配对使用。
  • 注释格式

/*注释内容*/

slide28
简单的C程序

C程序由函数组成

  • 例1.3 求最大值

#include "stdio.h"

int max(int x, int y)

{

int z;

if (x>y) z=x;

else z=y;

return (z);

}

void main ( )

{

int a,b,c;

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

c=max(a,b);

printf("max= %d\n",c);

}

  • 至少包含一个且仅有一个名为main( )的主函数。
  • 程序从主函数main( ) 开始执行。
  • main()函数的位置可以任意
  • 函数的语法结构:

函数类型 函数名(形参说明 形参)

内部变量说明;

执行语句部分;

return计算结果;

  • 注意:书写格式
slide29
C程序开发步骤.理论

编辑

编译

链接

执行

C程序的开发步骤

程序代码的录入,生成源程序*.c

语法分析查错,翻译生成目标程序*.obj

与其它目标程序或库链接装配,生成可执行程序*.exe

slide30
C程序开发步骤.实现
  • Windows环境下的开发环境
slide31
C程序开发步骤.实现
  • 为什么是黑窗口?

控制台程序

slide32
第2章 程序的灵魂——算法
  • 内容提要:
    • 算法的概念
    • 算法的表示方法
    • 结构化程序设计方法
slide33
算法的概念
  • 数据结构 + 算法 = 程序

对数据的描述

对数据操作的描述

Nikiklaus Wirth, 1966

1.对数据的描述,即数据结构。

在C语言中,系统提供的数据结构,是以数据类型的形式出现的。

2.对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。

slide34
算法的概念
  • 算法的概念

1、算法:计算机求解某一问题而采用的具体方法;

做事情都有——方法、步骤(顺序)——决定事情的成败

slide35
算法的概念
  • 算法的概念
  • 2、两大类计算机算法:
  • 数值运算算法(数值求解)
    • 非数值运算算法(事务管理)

程序员必备知识:算法、数据结构、程序设计方法、语言工具

slide36
算法的概念

a<60

N

Y

不及格

a<70

Y

N

a<80

及格

N

Y

中等

a<90

Y

N

良好

优秀

  • 算法举例

任务:将学生的成绩按分数段分级。

S1:1i ,输入一个学生成绩a

S2:

S3: i+1 i,输入一个学生成绩a

S4:如果i  10000, 返回S2;

否则,算法结束。

转S3

转S3

转S3

转S3

转S3

slide37
算法的概念

a<60

N

Y

不及格

a<70

Y

N

a<80

及格

N

Y

中等

a<90

Y

N

良好

优秀

  • 算法举例

不及格及格中等良好优秀

分数:0~59 60~69 70~79 80~89 90~99

判断次数:

2

4

4

1

3

比例: 0.05 0.15 0.40 0.30 0.10

次数: 500 3000 12000 12000 4000

总计31500次

slide38
a<80

N

Y

a<90

Y

a<70

N

Y

Y

中等

良好

优秀

a<60

Y

N

不及格

及格

不及格及格中等良好优秀

分数:0~59 60~69 70~79 80~89 90~99

判断次数:

3

2

2

3

2

比例: 0.05 0.15 0.40 0.30 0.10

次数: 1500 4500 8000 6000 2000

原算法

总计31500次

改进后算法

总计22000次

slide39
【转载】李开复:算法的力量

算法与我

“记得我读博时写的Othello对弈软件获得了世界冠军。当时,得第二名的人认为我是靠侥幸才打赢他,不服气地问我的程序平均每秒能搜索多少步棋,当他发现我的软件在搜索效率上比他快60多倍时,才彻底服输。”

网络时代的算法

并行算法:Google的核心优势

算法并不局限于计算机和网络

slide40
算法的概念
  • 算法的特性
    • 有穷性:一个算法必须在执行有穷步之后结束。
    • 确定性:算法的每一步必须是确切定义的。
    • 对于相同输入必须得到相同结果。
    • 有效性:算法的每一步都是能够实现的,即可操作的。
    • 输 入:算法有零个或多个输入。
    • 有输出:算法执行完毕,必须有一个或若干个输出结果。
slide41
算法的表示方法
  • 常用的算法表示方法
    • 1、用带序号的自然语言表示算法

例2.1 求1×2×3×4×5

Step1: 先求1×2,得到结果2。

Step2: 将Step1得到的乘积再乘以3,得到结果6。

Step3: 将6再乘以4,得到24。

Step4: 将24再乘以5,得到120。这就是最后的结果。

通俗易懂,但不直观,不严谨,难以描述分支和循环(如例2.5)。

slide42
算法的表示方法
  • 常用的算法表示方法
    • 2、用流程图表示算法

起止框

输入输出框

判断框

处理框

流程线

连接点

slide43
算法的表示方法

s1TcFwhile cs

s2 s1s2suntil c

  • 常用的算法表示方法
    • 3、用N-S流程图表示算法

N-S图(盒图)

特点:完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框(表示简单、符合结构化思想。)

slide44
算法的表示方法
  • 常用的算法表示方法
    • 4、用伪代码表示算法

用介于自然语言与计算机语言之间的文字及符号来描述算法

(方便、易懂、便于向计算机语言过渡)

if x is positive then

print x

else

print -x

slide45
算法的表示方法
  • 举例:计算 ,写出其算法

自然语言描述

S1: 把0放入S存储单元

S2: 把1放入n存储单元

S3: 把S与n相加,结果放入S存储单元

S4: 把n加1,结果放入n存储单元

S5: 判断n是否小于等于100

是,转S3;否则转S6

S6: 输出S的值

slide46
算法的表示方法
  • 举例:计算 ,写出其算法

流程图描述

N-S流程图描述

开始

0 => S

1 => n

0 => S

1 => n

n≤100

S+n => S

S+n => S

n+1=>n

n+1 => n

T

输出S

n≤100

N

输出S

结束

slide47
算法的表示方法
  • 举例:计算 ,写出其算法

伪代码描述

C语言程序描述

main()

{

int S, n;

S = 0;

n =1;

while(n<=100)

{

S= S+n;

n = n+1;

}

printf(“S=%d\n”,S);

}

0=>S

1=>n

while n≤100

S+n=>S

n+1=>n

print S

slide48
算法的表示方法
  • 如何应用各种算法的表示方法

1、简单问题,或已能够熟练编程

用自然语言打“腹稿”,直接写程序;

2、较为复杂的问题,或尚不熟练掌握编程

画流程图,再写程序

3、大型程序,多人合作编写

一定要画流程图,进行任务分工;

写伪代码,协调讨论,再写程序。

slide49
结构化程序设计方法
  • 结构化程序的三种基本结构

顺序结构、选择结构、循环结构

结构化程序设计

基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)

结构化程序:由三种基本结构反复嵌套构成的程序

优点:结构清晰,易读,提高程序设计质量和效率.

slide50
结构化程序设计方法

A

A

B

B

(a)

(b)

  • 结构化程序的三种基本结构

一、顺序结构

N-S结构流程图

先执行A操作,再执行B操作,两者是顺序执行关系。

slide51
结构化程序设计方法

P

P

A

B

A

B

(a)

(b)

  • 结构化程序的三种基本结构

二、选择结构

当P条件为真时,执行A模块,否则执行B模块。

slide52
结构化程序设计方法

P

当P为真

当P为真

A

A

(b)

(a)

  • 结构化程序的三种基本结构

三、循环结构

1.当型循环结构(while型)

当P条件成立时,反复执行A,直到P为假。

slide53
结构化程序设计方法

A

A

P

直到P为真

(b)

(a)

  • 结构化程序的三种基本结构

三、循环结构

2.直到型循环结构(until型)

先执行A操作,再判断P是否为真,若P为真,再执行A,直到P为假为止。

slide54
结构化程序设计方法

A

当P为真

当P为真

直到P为真

A

(直到型循环)

(当型循环)

  • 结构化程序的三种基本结构

三、循环结构

先判断,后执行

A可能一次都不执行

先执行,后判断

A至少执行一次

slide55
结构化程序设计方法
  • 三种基本结构的共同特点
  • 有且仅有一个入口
  • 有且仅有一个出口
  • 无死块(即永远无法执行到的块)
  • 无死循环块

由这三种基本结构顺序组成的算法,是结构化算法,可以解决任何复杂的问题。

slide56
结构化程序设计方法
  • 结构化程序设计的方法步骤

(1)自顶向下;

(2)逐步细化;

(3)模块化设计;

(4)结构化编码;

1、确定算法:分析问题,(建立数学模型,选择公式),写出算法描述

2、编写程序:用计算机语言写出实现算法的程序;

3、上机调试:输入(编辑)程序编译连接执行程序,输出结果

slide57
百元买百鸡问题

中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

设鸡翁、鸡母、鸡雏的个数分别为x,y,z,

5x+3y+z/3=100x+y+z=100

slide58
设鸡翁、鸡母、鸡雏的个数分别为x,y,z,

5x+3y+z/3=100x+y+z=100

鸡翁x (0

鸡母y (0

鸡雏 z=100-x-y

是否满足5x+3y+z/3=100

输出x,y,z

slide59
#include

void main()

{

int cocks=0,hens,chicks;

while(cocks<=20)

{

hens=0;

while(hens<=33)

{

chicks=100-cocks-hens;

if(5.0*cocks+3.0*hens+chicks/3.0==100.0)

printf("公鸡%d只,母鸡%d只,小鸡%d只\n\n",cocks,hens,chicks);

hens++;

}

cocks++;

}

}

slide60
课外练习 一

一、阅读上机指南, 书 p370, 安装VC6.0

二、Page 15 / 5,7 (阅读与思考)

三、page 36 / 4.(3),(4), 5.(5), 8.(2)

四、用流程图描述:从11 X 11~19 X 19 的算法。

请同学们将作业三、四写在纸上,于第一次上机时交。

以后通过email提交作业,每周日晚12:00截止收本周的作业。作业以0,3,4,5记分。

slide61
下讲预告

第3章 最简单的C程序设计——顺序程序设计

ad