目录

  • 1 第一章 C语言简介
    • 1.1 C语言前世今生
    • 1.2 主流开发环境介绍
    • 1.3 第一个小程序解析
    • 1.4 常见编译错误
    • 1.5 章节知识点小结
  • 2 算法基础
    • 2.1 算法-程序的灵魂
    • 2.2 算法的描述-流程图
  • 3 数据类型与运算符
    • 3.1 数据描述
    • 3.2 运算符和表达式1
    • 3.3 运算符和表达式2
    • 3.4 章节知识点小结
  • 4 顺序结构程序设计
    • 4.1 输入和输出
    • 4.2 顺序结构程序设计
    • 4.3 章节知识点小结
  • 5 选择结构程序设计
    • 5.1 关系运算符和关系表达式
    • 5.2 逻辑运算符和逻辑表达式
    • 5.3 if语句
    • 5.4 条件运算符
    • 5.5 switch语句
    • 5.6 章节知识点小结
  • 6 循环结构程序设计
    • 6.1 while循环结构
    • 6.2 do_while循环结构
    • 6.3 for循环结构
    • 6.4 循环的嵌套
    • 6.5 break语句和continue语句
    • 6.6 章节知识点小结
  • 7 数组
    • 7.1 一维数组
    • 7.2 二维数组
    • 7.3 字符数组
    • 7.4 章节知识点小结
  • 8 函数
    • 8.1 子程序设计
    • 8.2 函数定义
    • 8.3 函数的调用
    • 8.4 局部变量和全局变量
    • 8.5 参数传递
    • 8.6 函数递归调用
    • 8.7 章节知识点小结
  • 9 指针
    • 9.1 指针的基本概念
    • 9.2 指针变量的定义及引用
    • 9.3 通过指针引用数组元素
    • 9.4 指向多维数组的指针和指针变量
    • 9.5 用指向数组的指针作函数参数
    • 9.6 指针与字符串
    • 9.7 函数指针和指针函数
    • 9.8 章节知识点小结
  • 10 用户自己建立数据类型
    • 10.1 定义和使用结构体变量
    • 10.2 使用结构体数组
    • 10.3 结构体指针
    • 10.4 章节知识点小结
  • 11 编译预处理
    • 11.1 宏定义预处理
    • 11.2 文件包含预处理
    • 11.3 条件编译预处理
    • 11.4 章节知识点小结
  • 12 文件
    • 12.1 文件的基本知识
    • 12.2 文件的基本操作
    • 12.3 章节知识点小结
算法的描述-流程图

算法的表示

可用不同的方法表示算法,常用的有:自然语言、流程图、伪代码。

 

1) 用自然语言表示算法

自然语言是人们的日常用语(汉语、英语或其它语言)。

                简单的算法通俗易懂

    自然语言

                较复杂算法,描述不清,易出现“歧义性”

 

2)用流程图表示算法

用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。

 


 

 

求5!,用流程图表示

 

小结:

流程图是表示算法的较好的工具。一个流程图包括以下几部分:

(1)表示相应的操作框;

(2)带箭头的流程线;

(3)框内外必要的文字说明。

  但流程图画起来比较费事,因此常用伪代码表示算法。


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

1973年美国学者I.Nassi和B.Shneiderman根据基本结构提出了N-S流程图。N-S流程图中没有带箭头的流程线。全部算法写在一个矩形框内,在该框内包含一些基本框。这种流程图又称N--S结构化流程图。

 

N-S流程图用以下的流程图符号:

 

 

求5!,用N-S图表示

 

将例2.2的算法用N-S图表示。

(打印50名学生中成绩高于80分的学号和成绩)

 

小结:N-S图表示算法的优点

比文字描述直观、形象、易于理解;

比传统流程图紧凑易画;

用N-S图表示的算法都是结构化的算法,只能自上而下地顺序执行。


 

4)用伪代码表示算法

概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。

特点:书写方便 、格式紧凑,容易看懂,也便于向程序过渡。

求5! 用伪代码表示算法:

BEGIN

     1-> t

     2 -> i

     while i≤5

       {t×i ->t

        i +1 ->i}

     print t

   END

小结:

伪代码书写格式比较自由,易于修改;

流程图不便修改,但伪代码不如流程图直观。

5)用计算机语言表示算法

概念:用计算机实现算法。计算机无法识别流程图和伪代码,只有用计算机

语言编写的程序才能被计算机执行。

特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则。

将例2.1用C语言表示。

#include <stdio.h>

void main( )

  { int i,t;

    t=1;   i=2;

    while(i<=5)

     { t=t*i;

        i=i+1;  }

   printf(″%d\n″,t);   }

思考:

   <1> 求 1×3×5×7×9×11

<2> 求 n!

 

例2.2   有50个学生,要求将成绩在80分以上的学生学号和成绩输出。n表示学号,g表示成绩, 算法表示如下:

变量i用来控制序号(第几个学生)。

S1:1 → i

    S2:若gi≥80,则输出学号和成绩;否则不输出。

    S3:i+1→ i

 S4:若i≤50,转S2继续执行;否则算法结束。

用流程图表示

用伪代码表示算法:

BEGIN{算法开始}

    1 →i

    while i≤50

        { input ni and gi

           if gi≥80 print ni and gi  

           i+1 →i}

  END{算法结束}

 

编程:

#include <stdio.h>

void main( )

{ int i, n, g ;

   i=1 ;

    while (i <= 50)

        { scanf(“%d,%d”,&n,&g);

          if (g>=80)

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

           i=i+1 ;}  }

 

小结:

1)算法即解决一个问题而采取的方法和步骤。

2)对相同问题,可有不同的解题方法和步骤。

  3算法有多种描述方式,可用流程图、伪代码、计算机语言等形式表示算法。


例2.3  判定2000~2500年中的每一年是否闰年,将结果输出。

分析:闰年的条件

(1)能被4整除,但不能被100整除的年份是闰年,如1996,2004年;

(2)能被100整除,又能被400整除的年份是闰年,如1600,2000年。



 



 不符合这两个条件的年份不是闰年。 

 

 

其它” 包括能被4整

除,又能被100整除,

而不能被400整除的那

些年份(如1990)是非

闰年。

 

 

 

 

 

设y为被检测的年份,算法可表示如下 :

S1:2000→ y

S2:若y不能被4整除,则输出y “不是闰年”,转到S6。

S3:若y能被4整除,不能被100整除,则输出y “是闰年”,转到S6。

S4:若y能被100整除,又能被400整除,输出y “是闰年” , 转到S6。

S5: 输出y “不是闰年”。

S6:y+1→ y

S7:当y≤2500时,转S2继续执行,如y>2500,算法停止。

 

课堂作业:用流程图描述该算法。

板书讲解

 

 

 







 


例2.4

 

单词作变量名易于理解:

sum表示累加和; sign代表数值的符号;deno代表分母;term代表某一项。 

 

算法如下 :

S1:sum=1

   S2:sign=1

   S3:deno=2

 S4:sign=(-1)×sign

   S5:term=sign×(1/deno)

 S6:sum=sum+term

   S7:deno=deno+1

   S8:若deno≤100返回S4,否则算法结束。

 

用流程图表示