目录

  • 1 计算机概述
    • 1.1 计算机简介
    • 1.2 计算机系统
    • 1.3 数值在计算机中的表示
  • 2 C语言概述
    • 2.1 C语言发展及特点
    • 2.2 C语言程序的运行步骤和开发环境
    • 2.3 简单的C语言程序
  • 3 C语言基础
    • 3.1 变量、常量及数据类型
    • 3.2 运算符和表达式
    • 3.3 输入、输出
  • 4 选择结构
    • 4.1 计算机编程和算法
    • 4.2 if语句
    • 4.3 if嵌套和if多分支
    • 4.4 switch语句
  • 5 循环结构
    • 5.1 while语句和do...while语句
    • 5.2 for语句
    • 5.3 break语句和continue语句
    • 5.4 goto语句构成的循环
    • 5.5 嵌套循环结构
    • 5.6 程序设计举例
  • 6 函数
    • 6.1 函数的定义与调用
    • 6.2 函数的嵌套调用和递归调用
    • 6.3 作用域和生命周期
    • 6.4 章节小结与测试
  • 7 数组
    • 7.1 一维数组及应用
    • 7.2 二维数组及应用
    • 7.3 字符数组
    • 7.4 数组作为函数参数
    • 7.5 章节小结与测试
  • 8 指针
    • 8.1 指针变量
    • 8.2 指针与数组
    • 8.3 指针的多种形态
  • 9 字符串
    • 9.1 字符串概念及输入输出
    • 9.2 字符串函数
    • 9.3 指针与字符串
    • 9.4 章节小结与测试
  • 10 编译预处理
    • 10.1 宏定义
    • 10.2 文件包含
    • 10.3 条件编译
  • 11 结构体、共用体和用户定义类型
    • 11.1 结构体类型变量
    • 11.2 结构体类型数组与指针
    • 11.3 结构体与函数
    • 11.4 用指针处理链表
    • 11.5 共用体
  • 12 位运算
    • 12.1 位运算的概念和运算规则
  • 13 文件
    • 13.1 C文件概述
    • 13.2 文件的打开与关闭
    • 13.3 文件读写
    • 13.4 位置指针的定位
程序设计举例

学习目标:

了解为什么需要循环控制

掌握用while语句实现循环

掌握用do…while语句实现循环

掌握用for语句实现循环

理解breakcontinue语句

掌握循环的嵌套

理解循环程序举例

重点:

掌握用while语句实现循环

掌握用for语句实现循环

难点:

理解breakcontinue语句

掌握循环的嵌套  

一、程序设计举例

1:输入两个正整数mn,求它们的最小公倍数。

分析:m*nmn的一个公倍数,设pmn中比较大的数,则p有可能是mn的公倍数,而小于p的数不可能是mn的公倍数,所以可以使用循环方法,在m*np的范围内找出mn的最小公倍数。 

程序代码如下:

 

2统计成人身高,从键盘输入若干个成人身高(单位公分),分三种范围:>=180公分、>=160并且<180公分、<160公分,统计各个范围的人数。

分析:可以通过while循环实现统计。每次循环输入一个身高值,判断该身高值属于哪一个范围,然后让相应的变量累加。

程序代码如下:

   

3利用下面的格里高利公式计算π的近似值,在逐项累加的过程中,若某一项的绝对值小于10–6,则停止累加,输出π的近似值。

分析:可以通过循环实现逐项累加求和,用变量pi存放各项的和,用变量t存放第i项的值。t的值在每次循环中都会改变,t的值由分母(1开始的奇数)和正1或负1(轮流出现)组成。

程序代码如下:


注:本题涉及到数学公式fabs(),需要在头部加上#include<math.h>,后续题目中出现此类数学函数的都需要加#include<math.h>。

4:输入一个正整数存放变量m中,判断m是否为素数。

分析:判断m是否为素数,需要检查该数m是否能被2 ~ m1之间的整数整除。根据数学理论,只须检查m是否能被2~之间的整数整除即可。设i[2]上的整数,如果m不能被该区间上的任何一个整数整除,即对每一个im%i都不为0,则m是素数;但是只要有一个i能使m%i0,则m不是素数。 

程序代码如下:

 

5:已知在直角坐标平面上圆的方程是x2+y2=36,从键盘输入100个点的坐标xyxy都是整数),判断每个点在圆内、圆外、还是圆上。

分析:可以用循环来解决此问题。设变量xy存放点的坐标,输入每一个点的坐标xy,由平面几何知识可知:若x2+y2的值小于36,则该点在圆内;否则,若x2+y2的值大于36,则该点在圆外;否则,则该点在圆上。 

程序代码如下:

 

6:从键盘输入一个十六进制正整数(该整数为unsigned int型),将其转换为二进制数。例如,输入十六进制数“fcdef”,输出0000000000001111-1100110111101111。例如,输入十六进制数“5678”,输出0000000000000000-0101011001111000。例如,输入十六进制数“15”,输出0000000000000000-0000000000001111

分析:对于十六进制整数n,可以从最高位到最低位测试它的二进制(32)形式的每一位,判断每一位是1还是0

具体作法为:定义一个标志变量flag(其十六进制形式为0x80000000,二进制为1000 0000 0000 0000 0000 0000 0000 0000),将flagn进行“按位与”运算,“按位与”运算的结果或者为真、或者为假;若为真,则说明n的最高位值为1;若为假,则说明n的最高位值为0。然后将flag右移一位后,再将flagn进行“按位与”运算,根据“按位与”运算结果的真假,判断n的第2位是1还是0。∙∙∙∙∙∙。依此类推,循环32次,即可求出n的每一位是1还是0

程序代码如下:


7:猜数游戏。让计算机随机生成一个1100之间的整数,请你猜该数是多少,输出你猜的次数以及该数的值。请你每次从键盘输入所猜的数。若猜大了或猜小了,计算机给出提示,你再重新猜。

分析:可能第一次就猜对了,因此不用进入循环,循环体不被执行,所以选择while循环语句比较好。若某次猜的不对,需要继续猜,则循环体被执行。在循环中,根据所猜的数(number)与被猜的数(guess)的大小关系,显示提示信息,帮助你继续猜。

程序中使用函数srand()设置随机数种子,每次执行程序时该函数产生不同的整数序列,即传递给srand()一个整数,以便决定rand()函数从何处开始生成随机数。函数srand()调用函数time (NULL)返回一个自197011日以来经历的秒数。函数rand()的值是取值为032767之间的随机整数。

程序代码如下:

 

8:古典算术问题:搬砖块。某工地需要搬砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。请问用45个人正好搬45块砖,有多少种搬法。 

分析:对于这个组合问题,3个因素决定一种搬法:男人数、女人数和小孩数,每类人数的取值范围为0~45,各类人数的取值之和正好等于45人。

因此,对于每类人数的取值都要反复地试,最后确定正好满足45人搬45块砖的组合。

可以采用三重循环嵌套来解决此问题。

程序代码如下:

 


二、视频学习借鉴