Download
1 / 61

C 语言程序设计 - PowerPoint PPT Presentation


  • 99 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

C语言程序设计

主讲:徐大军

Email: [email protected]

Tel: 13581894133

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


教学大纲

  • 1、课程教学目标

    • 本课程为非计算机专业的基础课程,任务:在学生掌握C语言的基本内容、程序设计的基本方法与编程技巧的过程中,向学生介绍进行科学计算的一般思路。

  • 2、教材

    • 《C程序设计》第四版 谭浩强 清华出版社

    • 3、教学内容及基本要求

    • 目录17~22


  • 课程安排

    • 上课 32学时,第1~16周,J3-201周二 上午3、4节;

    • 上机 16学时,第2~9周,

    • 地点(待定)

    • 时间(周五上午3、4节)


  • 成绩

    • 平时作业成绩占20%,上机报告10%,

    • 上机测试10%,期末笔试成绩60%


第一章 C语言概述

  • 内容提要:

    • C语言历史与发展

    • C语言的特点

    • 简单的C语言程序介绍

    • 如何运行C语言程序


关于计算机程序的应用

  • 计算机能够做什么?


计算机程序设计在AA领域的应用

  • 从一则新闻说起。。。

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

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


计算机程序设计在AA领域的应用

  • 从一则新闻说起。。。

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

弹道计算


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

飞行器设计

研究形式:

流场计算

结构计算

传热计算

动力学计算

优化设计


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

导航探测

研究形式:

算法研究

硬件开发

图像处理


计算机程序设计在AA领域的应用

  • 计算机程序设计的应用案例

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

动力工程

研究形式:

流场计算

结构计算

传热计算


关于“计算机程序设计语言”

  • 计算机程序设计语言

  • 真实会话语言

|

  • 面向问题的语言

    |

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

    |

  • 机器语言

    |

  • 计算机硬件


关于“计算机程序设计语言”

  • 计算机程序设计语言种类

C,C++, C#

Basic

Fortran

Java

……


关于“计算机程序设计语言”

  • 为何选择C语言学习?

应用程序界面开发

C++, VB...

科学数值计算

网络编程

C,C++, Fortran.,

MatLab..

Java,C#

数据库编程

C

VC++,VB

硬件编程

C

C++

C#

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


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


C语言的发展历史与特点

  • C语言的特点

    • C语言是一种底层语言

    • C语言是一种小型语言

    • C语言是一种包容性语言

  • C语言的优点

    • 高效、可移植性、功能强大

    • 灵活、标准库

    • 与UNIX/LINUX系统的集成


C语言的发展历史与特点

  • C语言的缺点

    • C语言更容易隐藏错误

    • C程序可能会难以理解

    • C程序可能会难以修改

国际模糊C代码大赛

International Obfuscated C Code Contest

http://www.ioccc.org


简单的C程序

注释

函数

语句

编译预处理

/* example1.1 The first C Program*/

#include <stdio.h>

int main()

{

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

return 0;

}

This is a C Program!


简单的C程序

格式特点

  • 习惯用小写字母,大小写敏感

  • 不使用行号,无程序行概念

  • 可使用空行和空格

  • 用锯齿形书写格式

10

10

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

i=1

j=1

#include <stdio.h>

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缩进

  • {} 表示某一层次结构 ,要对齐

  • 有足够的注释

  • 有合适的空行

  • 一个说明或一个语句占一行


简单的C程序

非法

结构特点

  • 1,编译预处理命令 -> 例:#include "stdio.h“

  • 2,函数与主函数

    • 程序由一个或多个函数组成

    • 必须有且只能有一个主函数main()

    • 程序执行从main开始,在main中结束,

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

  • 3,程序语句

    • C程序由语句组成

    • 用“;”作为语句终止符

  • 4,注释

    • /* */为C注释,不能嵌套

    • //为C++的注释

    • 不产生编译代码

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


    简单的C程序

    c程序结构


    简单的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中,变量必须先定义,后使用

    • 语句具有规定的语法格式和特定的功能

    • ;为语句的终止符。

    • { }表示程序的结构层次范围, 并且必须配对使用。

    • 注释格式

      /*注释内容*/


    简单的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计算结果;

    • 注意:书写格式


    C程序开发步骤.理论

    编辑

    编译

    链接

    执行

    C程序的开发步骤

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

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

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


    C程序开发步骤.实现

    • Windows环境下的开发环境


    C程序开发步骤.实现

    • 为什么是黑窗口?

    控制台程序


    2章 程序的灵魂——算法

    • 内容提要:

      • 算法的概念

      • 算法的表示方法

      • 结构化程序设计方法


    算法的概念

    • 数据结构 + 算法 = 程序

    对数据的描述

    对数据操作的描述

    Nikiklaus Wirth, 1966

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

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

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


    算法的概念

    • 算法的概念

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

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


    算法的概念

    • 算法的概念

    • 2、两大类计算机算法:

    • 数值运算算法(数值求解)

      • 非数值运算算法(事务管理)

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


    算法的概念

    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


    算法的概念

    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次


    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次


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

    算法与我

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

    网络时代的算法

    并行算法:Google的核心优势

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


    算法的概念

    • 算法的特性

      • 有穷性:一个算法必须在执行有穷步之后结束。

      • 确定性:算法的每一步必须是确切定义的。

      • 对于相同输入必须得到相同结果。

      • 有效性:算法的每一步都是能够实现的,即可操作的。

      • 输 入:算法有零个或多个输入。

      • 有输出:算法执行完毕,必须有一个或若干个输出结果。


    算法的表示方法

    • 常用的算法表示方法

      • 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)。


    算法的表示方法

    • 常用的算法表示方法

      • 2、用流程图表示算法

    起止框

    输入输出框

    判断框

    处理框

    流程线

    连接点


    算法的表示方法

    s1TcFwhile cs

    s2 s1s2suntil c

    • 常用的算法表示方法

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

    N-S图(盒图)

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


    算法的表示方法

    • 常用的算法表示方法

      • 4、用伪代码表示算法

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

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

    if x is positive then

    print x

    else

    print -x


    算法的表示方法

    • 举例:计算 ,写出其算法

    自然语言描述

    S1: 把0放入S存储单元

    S2: 把1放入n存储单元

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

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

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

    是,转S3;否则转S6

    S6: 输出S的值


    算法的表示方法

    • 举例:计算 ,写出其算法

    流程图描述

    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

    结束


    算法的表示方法

    • 举例:计算 ,写出其算法

    伪代码描述

    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


    算法的表示方法

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

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

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

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

    画流程图,再写程序

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

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

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


    结构化程序设计方法

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

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

    结构化程序设计

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

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

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


    结构化程序设计方法

    A

    A

    B

    B

    (a)

    (b)

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

    一、顺序结构

    N-S结构流程图

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


    结构化程序设计方法

    P

    P

    A

    B

    A

    B

    (a)

    (b)

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

    二、选择结构

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


    结构化程序设计方法

    P

    当P为真

    当P为真

    A

    A

    (b)

    (a)

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

    三、循环结构

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

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


    结构化程序设计方法

    A

    A

    P

    直到P为真

    (b)

    (a)

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

    三、循环结构

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

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


    结构化程序设计方法

    A

    当P为真

    当P为真

    直到P为真

    A

    (直到型循环)

    (当型循环)

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

    三、循环结构

    先判断,后执行

    A可能一次都不执行

    先执行,后判断

    A至少执行一次


    结构化程序设计方法

    • 三种基本结构的共同特点

    • 有且仅有一个入口

    • 有且仅有一个出口

    • 无死块(即永远无法执行到的块)

    • 无死循环块

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


    结构化程序设计方法

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

    (1)自顶向下;

    (2)逐步细化;

    (3)模块化设计;

    (4)结构化编码;

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

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

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


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

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

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


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

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

    鸡翁x (0<x≤20)

    鸡母y (0<y ≤33)

    鸡雏 z=100-x-y

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

    输出x,y,z


    #include <stdio.h>

    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++;

    }

    }


    课外练习 一

    一、阅读上机指南, 书 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记分。


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


    ad