目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  为什么需要循环控制
    • 4.2 第一节  while循环
    • 4.3 第二节  do ... while循环
    • 4.4 第三节  for循环
    • 4.5 第四节  多重循环
    • 4.6 第五节  break语句和continue语句
    • 4.7 第六节  循环结构程序设计实例
    • 4.8 本章小结
    • 4.9 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 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 第五节  文件应用实例
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
第七节  分支结构程序设计实例
  • 1 文字讲解
  • 2 视频讲解
  • 3 过关测试

例3-7  从键盘输入两个整数,输出其中的较大者。

1、程序编写思路分析①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。

2、算法分析:

      从两个数中找出一个较大的数,只要比较一次,就可以分出大小。有三种实现方法。

3、流程图:

      实现方法1:双分支流程图

      

     实现方法2:单分支流程图

     

4、源程序如下:

实现方法1:双分支流程图源程序

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {

  5.      int  a, b, max;

  6.      printf("请输入两个整数:");

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

  8.      if( a > b)

  9.            max = a;

  10.      else 

  11.           max = b;

  12.       printf("两个数中较大的为:%d", max);

  13.       getch( );

  14. }


5、程序测试过程如下:

      对于两个数据a, b,有两种可能,a大或b大,可以采用两组代表数据进行测试。

     第一组数据:选用样例数据 a=17, b=23,代表“a > b”这一类数据。测试如下图所示。

         

      第二组数据:选用样例数据 a=23, b=17,代表“a < b”这一类数据。测试如下图所示。

      

     经过以上两组数据测试,程序输出达到期望结果,从而验证程序正确。

思考题:

     1、 请依据实现方法2(单分支流程图)编写源程序并进行测试。

     2、请用条件表达式编写源程序并进行测试。

例3-9   编写一个程序,判断一个字符是否为英文字母。

1、程序编写思路分析①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。

2、算法分析:

     判断一个字符是否是英文字母,要看它的ASCI码是否符合以下两个条件之一。

     ① ch >= 'A' && ch < 'Z'      大写字母

     ② ch >= 'a' && ch <='z'     小写字母

     因此。判断字符是否为字母可以使用下面的逻辑表达式。

     (ch >= 'A' && ch <= 'Z' ) || (ch>='a' && ch <= 'z')

3、源程序如下

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {    char  ch;

  5.       printf("请输入一个字符∶");

  6.       scanf("%c", &ch);

  7.       if( (ch >= 'A' && ch <= 'Z' ) || (ch>='a' && ch <= 'z'))

  8.             printf("%c 是英文字母\n", ch);

  9.       else

  10.             printf("%c 是其他字符\n", ch);

  11.       getch( );

  12. }


4、程序测试过程如下:

     第一组数据:大写字母

     

     第二组数据:小写字母

     

     第三组数据:其他字符

     

       经过以上三组数据测试,程序输出达到期望结果,从而验证程序正确。

例3-8  从键盘输入两个整数,从小到大输出。

1、程序编写思路分析①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。

2、算法分析:

    ① 只需要做一次比较,然后进行一次交换即可

    ② 用if语句实现条件判断

    ③ 关键是怎样实现两个变量值的互换

   

    变换过程如下:

       

3、流程图如下:

       

4、源程序如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {  int  a, b, tmp;

  5.     printf("输入两个整数:");

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

  7.      if( a > b )

  8.      {

  9.            tmp = a;

  10.            a = b;

  11.            b = tmp;

  12.      }

  13.      printf("%d, %d", a, b);

  14.      getch( );

  15. }

5、程序测试过程如下:

     选用样例数据 a=20, b=15,期望结果:15,20

     

      经过以上数据测试,程序输出达到期望结果,从而验证程序正确。

      例3-10   由半径为 1 的圆和半径为 2 的圆所围成的圆环如图3-19 所示。编写程序,输入点A的坐标x、y,若点A(x,y)在圆环内,则输出 TRUE,否则输出 FALSE。

           

1、程序编写思路分析①正确理解任务,②算法分析,③画出程序流程流,④书写源程序,⑤测试源程序。

2、算法分析:

      根据题意, 求线段OA的长度公式为,若1|OA|≤2,即1≤x²+≤4,则在圆环内;否则在圆环外。因此,此题实际上是求下面表达式的逻辑值。

      ( x*x + y*y >= 1) && ( ( x*x+y*y ) <=4 )

     在C 语言中,逻辑值 TRUE 用 1 表示,FALSE 用 0 表示,它们可以看成是整型值,因此,只需将这个表达式的值赋给一个整型变量 bool,然后输出它的值即可。

3、流程图如下:

      

4、源程序如下∶

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {    int  bool;

  5.      float  x, y, z;

  6.      printf("请输入x,y∶");

  7.      scanf("%f%f", &x, &y);

  8.      z=x * x + y * y;

  9.      bool = ( z >= 1) && ( z <= 4 );

  10.      if ( bool )

  11.            printf("TRUE \n");

  12.      else

  13.           printf("FALSE \n");

  14.      getch( );

  15. }

5、程序测试过程如下:

     第一组数据:选用样例数据 x=1.2, y=1.5,代表点A在圆环内这一类数据。测试如下图所示。


      第二组数据:选用样例数据 x=1.8, b=1.9,代表点A在圆环外这一类数据。测试如下图所示。

   

     经过以上两组数据测试,程序输出达到期望结果,从而验证程序正确。