目录

  • 1 历次试题讲解
    • 1.1 高二期末 测试
      • 1.1.1 新建课程目录
    • 1.2 常见英语错误提示
    • 1.3 附录E  C语言程序调试
    • 1.4 351班作业
  • 2 第一章  C语言概述
    • 2.1 第一节  C语言的产生和发展
    • 2.2 第二节  C语言的特点
    • 2.3 第三节  两个简单的C程序
    • 2.4 第四节  C程序的上机步骤
    • 2.5 第五节  Dev-C++介绍
    • 2.6 第六节  VC2010学习版介绍
    • 2.7 第七节  宏定义和文件包含
    • 2.8 第八节 上机实验报告
    • 2.9 本章小结
    • 2.10 本章单元测试
    • 2.11 附录 第一章常见英语及语句
  • 3 第二章  基本数据类型与简单程序设计
    • 3.1 第一节  C语言的基本数据类型
    • 3.2 第二节  常量
    • 3.3 第三节  变量
    • 3.4 第四节  赋值语句
    • 3.5 第五节  数据输出
    • 3.6 第六节 数据输入
    • 3.7 第七节  运算符
    • 3.8 第八节  常用的数学函数
    • 3.9 第九节  顺序结构程序设计
    • 3.10 本章小结
    • 3.11 本章单元测试
  • 4 第三章  分支结构程序设计
    • 4.1 第一节  关系表达式和逻辑表达式
    • 4.2 第二节  if单分支语句
    • 4.3 第四节  if双分支语句
    • 4.4 第五节  if多分支语句
    • 4.5 第六节  case多分支语句
    • 4.6 第七节  分支结构程序设计实例
    • 4.7 本章小结
    • 4.8 本章单元测试
    • 4.9 书中本章习题答案
  • 5 第四章  循环结构程序设计
    • 5.1 第一节  While循环
    • 5.2 第二节  do ... while循环
    • 5.3 第三节  for循环
    • 5.4 第四节  多重循环
    • 5.5 第五节  break语句和continue语句
    • 5.6 第六节  循环结构程序设计实例
    • 5.7 本章小结
    • 5.8 书中本章习题答案
  • 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 第五节 指针作为函数参数
    • 9.6 第六节  指向结构体的指针变量
    • 9.7 第七节 指针应用实例
  • 10 第九章  文件
    • 10.1 第一节  文件概述
    • 10.2 第二节  文件的打开和关闭
    • 10.3 第三节 文件的读/写函数
    • 10.4 第四节  文件定位函数
    • 10.5 第五节  文件应用实例
    • 10.6 本章小节
    • 10.7 本章习题
  • 11 附录
    • 11.1 附录A  基本字符ASCII码表(0~127)
    • 11.2 附录B  运算符优先级表
    • 11.3 附录C 常用C库函数表
    • 11.4 附录D  编译常见错误提示
    • 11.5 附录E  常见C语言英语单词
    • 11.6 附录F  如何从十进制转换为二进制
    • 11.7 附录G  如何把二进制数转化为十进制数
    • 11.8 附录H  什么是编译器
    • 11.9 附录I  与编译器相关的几个知识点
  • 12 数组
    • 12.1 一维数组
    • 12.2 二维数组
    • 12.3 字符数组
    • 12.4 常见问题集锦
    • 12.5 配套课件
    • 12.6 配套实训
  • 13 第一章 C语言程序设计基础
    • 13.1 程序设计语言的发展及其特点
      • 13.1.1 为什么要学习C语言
      • 13.1.2 什么是程序设计语言
      • 13.1.3 程序设计语言发展的三个阶段
    • 13.2 C语言的发展及其特点和应用
      • 13.2.1 C语言的发展史
      • 13.2.2 C语言的特点
      • 13.2.3 C语言的应用以及其他语言的关系
    • 13.3 C语言程序的基本结构
      • 13.3.1 最简单的C语言程序
      • 13.3.2 计算输入的两个整数的和
      • 13.3.3 练习:计算输入的两个整数的和
    • 13.4 编制C语言程序的基本步骤
      • 13.4.1 编写C程序的步骤
      • 13.4.2 VC6.0集成开发环境介绍
      • 13.4.3 建立工程操作演示
      • 13.4.4 练习:我们编的第一个程序
      • 13.4.5 程序调试
    • 13.5 习题
  • 14 基本数据类型、运算符与表达式
    • 14.1 预备知识
      • 14.1.1 计算机系统组成
      • 14.1.2 计算机中数的表示及进制转换
    • 14.2 C语言的数据类型
    • 14.3 常量、变量和标识符
      • 14.3.1 标识符
      • 14.3.2 常量
      • 14.3.3 变量
    • 14.4 简单数据类型与表示范围
      • 14.4.1 整型数据
      • 14.4.2 整数在内存中的表示
      • 14.4.3 整型变量
      • 14.4.4 整数常量的分类
      • 14.4.5 实型数据
      • 14.4.6 字符型数据和字符串常量
      • 14.4.7 简单数据类型的表示范围
      • 14.4.8 简单的数据输出
    • 14.5 运算符与表达式
      • 14.5.1 赋值运算符、赋值表达式
      • 14.5.2 强制类型转换符
      • 14.5.3 算术运算符、算术表达式
      • 14.5.4 自增自减运算符、符号运算符
      • 14.5.5 算术运算符中数据类型转换规则
      • 14.5.6 位运算符、位运算表达式
      • 14.5.7 逗号运算符、逗号表达式
      • 14.5.8 其他运算符:sizeof运算符
      • 14.5.9 关系运算符与表达式
      • 14.5.10 逻辑运算符与表达式
      • 14.5.11 条件运算符与表达式
    • 14.6 运算符的优先级和结合性
  • 15 基本输入输出和顺序程序设计
    • 15.1 程序的控制结构
    • 15.2 格式化输出printf
    • 15.3 格式化输入scanf
    • 15.4 字符数据的非格式化输入输出
    • 15.5 顺序程序设计举例
  • 16 选择结构程序设计
    • 16.1 C程序中语句的分类
    • 16.2 关系运算符、逻辑运算符、条件运算符
      • 16.2.1 关系运算符和关系表达式
      • 16.2.2 逻辑运算符和逻辑表达式
      • 16.2.3 条件运算符和条件表达式
    • 16.3 选择结构的程序设计
      • 16.3.1 if语句
      • 16.3.2 switch语句
    • 16.4 选择结构程序设计举例
      • 16.4.1 例1 计算员工当月薪水
      • 16.4.2 例2 判定闰年
      • 16.4.3 例3  简单表达式计算
  • 17 循环结构程序设计
    • 17.1 循环结构的程序设计
      • 17.1.1 while语句
      • 17.1.2 do-while语句
      • 17.1.3 for语句
      • 17.1.4 循环嵌套
      • 17.1.5 break与continue语句
      • 17.1.6 exit()函数
    • 17.2 循环结构类型的选择及转换
    • 17.3 循环结构程序设计举例
  • 18 数组
    • 18.1 一维数组
      • 18.1.1 一维数组的定义
      • 18.1.2 一维数组的引用
      • 18.1.3 一维数组的赋值
      • 18.1.4 应用实例1:字符统计
      • 18.1.5 应用实例2:冒泡排序
      • 18.1.6 应用实例3:选择排序
      • 18.1.7 应用实例4:斐波那契数列
    • 18.2 二维数组及多维数组
      • 18.2.1 二维数组的定义、引用和赋值
      • 18.2.2 二维数组的应用举例
    • 18.3 字符串与数组
      • 18.3.1 字符串的本质
      • 18.3.2 字符及字符串操作的常用函数
      • 18.3.3 字符串的应用举例
      • 18.3.4 字符串数组
      • 18.3.5 字符串数组的应用举例
    • 18.4 数组综合应用举例
  • 19 函数
    • 19.1 函数的概述
    • 19.2 函数的定义和调用
    • 19.3 函数参数的传递方式
    • 19.4 变量的作用域和生存期
    • 19.5 变量的存储类型
    • 19.6 函数的嵌套与递归调用
    • 19.7 函数的作用域
    • 19.8 函数的封装
    • 19.9 函数应用综合举例
    • 19.10 本章习题
  • 20 指针
    • 20.1 指针与指针变量的概念
    • 20.2 指针变量的定义和引用
    • 20.3 指针和地址运算
    • 20.4 指针与数组
      • 20.4.1 数组的指针和指向数组的指针变量
      • 20.4.2 指向多维数组的指针——数组指针
      • 20.4.3 元素为指针的数组——指针数组
    • 20.5 指针与字符串
    • 20.6 指针与动态内存分配
    • 20.7 多级指针
    • 20.8 指针作为函数参数
    • 20.9 指针作为函数的返回值——指针函数
    • 20.10 本章习题
  • 21 VC6  Debug
    • 21.1 VC6  Debug
第二节  do ... while循环
  • 1 文字讲解
  • 2 视频讲解
  • 3 学习辅导

一、do while循环语句的一般形式

do

{

       语句序列 ;

} while ( 表达式 ) ;

说明:① 是一种直到型的循环结构。  ② 最后一个分号必须有。  ③ 花括号{ }必须有。  ④ 循环体是指语句序列,可以是一条语句或多条语句。

二、do  while循环语句的执行过程

1、do while循环语句的流程图


2、do  while语句的执行过程

① 执行循环体中的语句,开始一个循环的周期。

② 计算表达式的值。如果表达式为非 0,即循环条件为真,则转到第步,开始下一个循环周期;如果表达式为 0,即循环条件为假,则转到第步。

③ 结束 do...while循环,转而执行 do...while 循环语句后的第 1 条语句。

do...while 语句执行的特点是:先执行循环体,后判断条件,至少执行一次循环体。

例4-2  输入若干字符,以'*'作为输入结束符,分别用do...while语句和while语句实现,输入相同的字符串,比较它们的运行结果有何不同。

一、分析:

二、源程序如下:

1、do...while方式实现源代码如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {

  5.       char  ch;

  6.       printf("使用 do...while 语句\n");

  7.       printf("输入若干字符('*'结束).\n");

  8.       ch = getchar( );

  9.       do {

  10.           putchar( ch );

  11.           ch = getchar( );

  12.        } while ( ch != '*' );

  13.        getch( );

  14. }

2、while方式实现源代码如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main( )

  4. {

  5.       char  ch;

  6.       printf("使用 while 语句\n");

  7.       printf("输入若干字符('*'结束).\n");

  8.       ch = getchar( );

  9.       while( ch != '*' )

  10.       {

  11.           putchar( ch );

  12.           ch = getchar( );

  13.        } 

  14.        getch( );

  15. }




三、程序测试

1、测试数据1:ABC*     

期望结果:ABC

         

测试结果:程序达到预期结果。

2、测试数据2:*DEFG*     

期望结果:ABC

    

测试结果:程序达到预期结果。

可以看出,如果第1次执行循环体时表达式为真,那么两种循环得到的结果相同;否则,两者的结果就不同( 前提:两者的循环体中的语句相同 )。

三、do...while循环语句的注意事项

1、不管语句是由多行或一行构成,都必须用"{ }"括起来,表示循环体。

2、while( 表达式 )后的";"不能遗漏。

3、do...while语句循环允许多层循环嵌套。

4、为防止造成死循环,需要在while循环的语句中或判断表达式中进行适当的条件修改,使其可以跳出循环。

这个循环与while循环的不同在于: 它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。

例4-3  输入一个整数,按相反次序输出。例如,输入54321,输出12345.

一、程序分析:


二、源程序参考如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main()

  4. {

  5.       long  num;

  6.       int  b;

  7.       printf("输入一个整数:" );

  8.       scanf("", &num); //输入一个整数,位数可超过5

  9.       do

  10.       {

  11.              b = num % 10;  // 取个位数字

  12.              printf( "%d", b );

  13.              num = num / 10;  // 去掉个位数字

  14.       } while( num );  // 非 0 继续循环,0 结束

  15.       printf("\n");

  16.       getch( );

  17. }

三、程序测试

测试数据:54321     

期望结果:12345

        

测试结果:程序达到预期结果。

四、运行过程


表4-2  例4-3的运行过程
变量名bnum变量名bnum
初始状态
54321第3轮循环354
第1轮循环15432第4轮循环45
第2轮循环2543第5轮循环50

先取后去,除q取余,直到商为0为止。

数学: p(被除数)/q(除数)=m(商).........r(余数)

C语言:    先取后去:r=p%q      p=p/q

    除q取余,直到商为0为止。

        do{

            r=p%q ;

            p=p/q;

        } while(p>0);

    或 

      while(p>0)

      {

            r=p%q ;

            p=p/q;

        } 

十进制转换二进制: 将q改为2或赋值为2

     对于整数部分,除2取余,直到商为0为止。

十进制转换八进制: 将q改为8或赋值为8

十进制转换五进制: 将q改为5或赋值为5

十进制转换十进制: 将q改为10或赋值为10

输出:第一种方法:求取一个,输出一个。

          第二种方法:增加一个变量s,表示存储相反数。

               s=0;     s=s*10+r;   s=s*q+r;

对于整数部分,将二进制数转换十制数。

         s=0;     s=s*2+r;  

1、书上的例题

2、将15转换为二进制并输出。

#include    <stdio.h>

#include    <conio.h>

main()

{     int    num, b,   s=0;

      printf(" 输入一个整数:");

      scanf("%d", &num ); /* 输入一个整数,位数可超过5位 */

     do

     {   b= num % 2; /* 取个位数 */

          printf("%d", b);

         num= num / 2; /* 整除10 */

     } while ( num ); /* 非0继续循环,0结束 */

      getch(  );

}

3、输入:123456,输出:21。

#include    <stdio.h>

#include    <conio.h>

main()

{     int    num, b,   s=0;

      printf(" 输入一个整数:");

      scanf("%d", &num ); /* 输入一个整数,位数可超过5位 */

     do

     {   b= num % 10; /* 取个位数 */

          s=s+b;

         num= num / 10; /* 整除10 */

     } while ( num ); /* 非0继续循环,0结束 */

     printf("%d\n",s);    getch(  );

}

4、输入:不含0的正整数,如 12345,输出:120

#include    <stdio.h>

#include    <conio.h>

main()

{     int    num, b,   s=1;

      printf(" 输入一个整数:");

      scanf("%d", &num ); /* 输入一个整数,位数可超过5位 */

     do

     {   b= num % 10; /* 取个位数 */

          s=s*b;

         num= num / 10; /* 整除10 */

     } while ( num ); /* 非0继续循环,0结束 */

     printf("%d\n",s);    getch(  );

}


从键盘上输入一串0与1数字字符,以#字符结束。输出对应十进制数。

示例1    输入: 1011#,输出:11。

示例2    输入: 11011#,输出:27。

#include  <stdio.h>

#include   <conio.h>

main( )

{   int   s=0;

    char   ch;

    while( (ch=getchar())!='#'  )

    {       s=s*2+ch-'0';

     }

    printf("十进制数为:%d\n", s);

     getch( );

}