目录

  • 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 章节知识点小结
章节知识点小结


知识点

精讲文档

第六章

循环结构

6.1 while循环结构

while语句

while语句的形式:

while (表达式)

        语句

只要循环表达式的值为真,就执行语句。

 

循环体

循环条件成立时执行的语句,即为循环体。

死循环

一个无法靠自身的控制终止的循环称为死循环

累加求和算法

算法思路:

在循环中反复执行“s=s+t”,其中t表示每次要加的项,分析t的变化规律,控制好循环次数或循环条件。

6.2 do-while循环结构

do-while语句

形式为:

     do

         语句

      while (表达式)

while语句与do-while语句比较

while循环的特点是:

先判断条件表达式,后执行循环体语句。

do---while语句特点:

先执行循环体,再判断循环条件是否成立,循环体至少执行一次。

6.3 for循环结构

 

for语句

for语句的一般形式为

    for(表达式1;表达式2;表达式3)

                语句

执行过程:

①求解表达式1

②求解表达式2,若值为真,则执行循环体语句,再转第③步。若为假,则结束循环。

③求解表达式3

④转回第②继续执行。

空语句

空语句只有一个分号(;),它什么也不做。

计数控制的循环

假设循环n次:

i=1;

while(i<=n)

{……

i++;

}

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

{……}

条件控制的循环

条件控制的循环形式如下:

设置循环初始条件;

While for (循环条件)

{……

 修改循环条件;

}

6.4循环嵌套

 

循环嵌套各种形式

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。

三种循环可互相嵌套。

 

穷举法

题目:把15角钱人民币兑换成1分、2分和5分的硬币(每一种都要有)共100枚,问共有多少种兑换方案?每种方案各换多少枚?

解题思路:

若设5分硬币枚数为x2分硬币枚数为y1分硬币枚数为z,则有:x+y+z=1005x+2y+z=150,由于每种硬币都要有,故5分硬币最多可换28枚,2分硬币最多可换72枚,1分硬币可换100-x-y枚,xyz只需满足第2个方程即可。这里用一个两层循环,外层控制x的变化,内层控制y的变化。主要程序段如下:

     for(x=1;x<=28;x++)

        for(y=1;y<=73;y++)

       {

          z=100-x-y;

          if(5*x+2*y+z==150)

           {   count++;

               printf("%-5d%-5d%-5d\n",x,y,z);  }

        }

    printf("兑换方案共%d\n",count);

6.5 break语句和continue语句

break语句

break语句:从循环体内跳出,即提前结束循环,接着执行循环下面的语句。

求素数算法

题目:输入一个大于3的整数n,判定它是否素数。

解题思路:

ni整除(i的值从2变到n-1)

如果n能被2(n-1)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环

注意:此时i的值必然小于n

主要程序段如下:

for (i=2;i<=n-1;i++)

        if(n%i==0) break;

    if(i<=n-1) printf("%d is  not\n",n);

continue语句

continue语句用来结束本次循环,即跳过循环体中下面尚未执行的语句,判定是否执行下一次循环。