C语言程序设计第六章:循环结构程序设计 知识总结

教材:C语言程序设计教程(第二版)
主编:王敬华、林萍、张清国编著

本章主要有两个很重要的小节:
第一小节主要是介绍循环语句和配套使用的函数
第二小节主要是介绍循环结构类型的选择和转换

1.循环结构的含义:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件成为循环条件,反复执行的程序段成为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。

2.while语句:
while语句是当型循环控制语句,一般形式为:
while(表达式)
语句;
其中,表达式是循环条件,语句是循环体,如果是多条语句,要用符合语句。表达式可以是任意类型的表达式

while循环流程图
while循环的流程图如图所示,当表达是为真时,执行循环语句,继续判断,直到表达式为假,退出循环。

重要例题:求两个正整数的最大公因子
求最大公因子是用欧几里得算法求得的
(1)输入m和n
(2)r=m%n,m=n,n=r;
(3)如果n=0;那么m就是最大公因子,否则继续执行(2)

代码:

#include<stdio.h>
void main()
{
   
  int m,n,r;
  scanf("%d%d",&m,&n);
  while(n!=0)
  {
   
   r=m%n;
   m=n;
   n=r;
  }
  printf("%d",m);
}

3.do-while循环
do-while循环是直到型循环,它的一般形式为:
do
语句;
while(表达式);
while最后面的分号一定不能省。

do-while循环流程图

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C程序设计语言C语言精典版本 目 录 译者序 序 第1版序 前言 第1章 基本概念 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 1.5.1 文件复制 1.5.2 字符计数 1.5.3 行计数 1.5.4 单词计数 1.6 数组 1.7 函数 1.8 变元—按值调用 1.9 字符数组 1.10 外部变量与作用域 第2章 类型、运算符与表达式 2.1 变量名 2.2 数据类型与大小 2.3 常量 2.4 说明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 加一与减一运算符 2.9 按位运算符 2.10 赋值运算符与赋值表达式 2.11 条件表达式 2.12 运算符优先级与表达式求值次序 第3章 控制流 3.1 语句与分程序 3.2 if-else语句 3.3 else-if语句 3.4 switch语句 3.5 while与for循环语句 3.6 do-while循环语句 3.7 break语句与continue语句 3.8 goto语句与标号 第4章 函数与程序结构 4.1 函数的基本知识 4.2 返回非整数值的函数 4.3 外部变量 4.4 作用域规则 4.5 头文件 4.6 静态变量 4.7 寄存器变量 4.8 分程序结构 4.9 初始化 4.10 递归 4.11 C预处理程序 4.11.1 文件包含 4.11.2 宏替换 4.11.3 条件包含 第5章 指针与数组 5.1 指针与地址 5.2 指针与函数变元 5.3 指针与数组 5.4 地址算术运算 5.5 字符指针与函数 5.6 指针数组与指向指针的指针 5.7 多维数组 5.8 指针数组的初始化 5.9 指针与多维数组 5.10 命令行变元 5.11 指向函数的指针 5.12 复杂说明 第6章 结构 6.1 结构的基本知识 6.2 结构与函数 6.3 结构数组 6.4 结构指针 6.5 自引用结构 6.6 查找表 6.7 类型定义 6.8 联合 6.9 位字段 第7章 输入与输出 7.1 标准输入输出 7.2 格式输出—printf函数 7.3 变长变元表 7.4 格式输入—scanf函数 7.5 文件访问 7.6 错误处理—stderr和exit函数 7.7 行输入输出 7.8 其他函数 7.8.1 字符串处理函数 7.8.2 字符类测试和转换函数 7.8.3 ungetc函数 7.8.4 命令执行函数 7.8.5 存储管理函数 7.8.6 数学函数 7.8.7 随机数发生器函数 第8章 UNIX系统界面 8.1 文件描述符 8.2 低级I/O—read和write系统调用 8.3 open、creat、close和unlink系统调用 8.4 随机访问—lseek系统调用 8.5 实例—fopen和getc函数的一种实现 方法 8.6 实例—目录显示 8.7 实例—存储分配程序 附录A 参考手册 A.1 引言 A.2 词法规则 A.3 语法符号 A.4 标识符的含义 A.5 对象和左值 A.6 转换 A.7 表达式 A.8 说明 A.9 语句 A.10 外部说明 A.11 作用域与连接 A.12 预处理 A.13 语法 附录B 标准库 B.1 输入与输出:<stdio.h> B.2 字符类测试:<ctype.h> B.3 字符串函数:<string.h> B.4 数学函数:<math.h> B.5 实用函数:<stdlib.h> B.6 诊断:<assert.h> B.7 变量变元表:<stdarg.h> B.8 非局部跳转:<setjmp.h> B.9 信号处理:<signal.h> B.10 日期与时间函数:<time.h> B.11 由实现定义的限制:<limits.h>和 <float.h> 附录C 变更小结 序自从1978年《C程序设计语言》出版以来,计算机界经历了一场革命。大型计算机变得更大;而个人计算机的能力可以和十年前的主流计算机相媲美。在这段时间中,C语言也在悄悄地改变,并且早已超出了仅仅作为UNIX操作系统的语言的范畴。 C的适用范围的扩大、在这些年中语言的改变和各个组织开发的超出其预定内容的编译器,所有这一切要求对C语言有一个比本书第1版更精确和更新的定义。在1983年,美国国家标准协会(ANSI)成立了一个委员会,它的目标是产生“一个无二义性的、独立于机器的C语言定义”,同时仍保持其精髓。其结果就是C的ANSI标准。此标准规范了一些在本书第1版中提示过但没有描述的结构,特别是结构赋值和枚举。它提供了一种新的函数声明的形式,允许在使用中对函数的定义进行交叉检查。它说明了一个标准库和一个完成输入输出、内存管理和字符串操作等类似任务的函数集扩充。此标准明确地说明了原始定义没有指出的一些特性的行为。同时,此标准还明确地说明了语言中的哪些部分依然依赖于机器。《C程序设计语言》的第2版描述的是ANSI标准定义C语言。尽管我们已经指出语言中的多种革新,但我们还是决定不用新的形式来写。对于大部分内容并没有多大的差别,最明显的改变是新形式的函数声明和定义。现代编译器已能支持此标准的大部分特性。我们尽力保持本书第1版的简洁性。C不是一个大型语言,也不需要一本很厚的书来描述。我们改进了对典型特性的阐述,如指针,它是C程序设计的中心。我们对以前的例子进行了提炼,并在几章中增加了新的例子。例如,我们用程序来处理复杂的声明,这些程序将声明转换为单词或反之。像以前一样,所有例子的文本都以机器可读的形式直接经过测试。附录A是参考手册,不是标准,但我们的目的是希望用较少的篇幅表述标准的要点。它是要对于程序员来说容易理解,而不是提供给编译器实现者的定义—这正是标准承担的角色。附录B是对标准库提供的功能的总结。附录C是对以前版本的变动的小结。就像我们在第1版序中所说的,“当对C的经验增加时它显得很好用”。经过十几年的实践,我们仍然这么认为。我们希望这本书能帮助你学习并使用好C语言。非常感谢那些帮助我们完成本书这一版的朋友们。Jon Bentley、Doug Gwyn、Doug McIlroy、Peter Nelson和Rob Pike几乎对本书手稿的每一页都提出了建议。我们非常感谢Al Aho、Dennis Allison、Joe Campbell、G.R.Emlin、Karen Fortgang、Allen Holub、Andrew Hume、Dave Kristol、John Linderman、Dave Prosser、Gene Spafford和Chris Van Wyk,他们仔细地阅读了本书。我们也收到了来自Bill Cheswick、Mark Kernighan、Andy Koenig、Robin Lake、Tom London、Jim Reeds、Clovis Tondo和Peter Weinberger的有益的建议。Dave Prosser回答了很多关于ANSI标准的细节问题。我们广泛地使用了Bjarne Stroustrup的C++的翻译程序来部分测试我们的程序。Dave Kristol为我们提供了一个ANSI C编译器进行最终测试。Rich Drechsler帮助我们进行了排版。诚挚地感谢每一个人。 Brian W. Kernighan Dennis M. Ritchie
C程序 课程设计报告 201— 201 学年第 学期 课程名称 C语言课程设计 设计题目 《排班系统》 学生姓名 学 号 专业班级 指导教师 201 年 月 日 目录 一、设计任务书…………………………………………………………3 1、题目与要求…………………………………………………3 2、本程序涉及的知识点………………………………………3 二、程序流程图…………………………………………………………4 三、程序代码设计………………………………………………………5 四、程序调试过程………………………………………………………6 五、程序运行过程………………………………………………………6 六、程序有待改进的地方………………………………………………9 七、程序设计总结………………………………………………………9 八、致谢…………………………………………………………………9 参考文献…………………………………………………………………9 附录…………………………………………………………………… 10 一、设计任务书 1、题目与要求 赵:星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在一 星期中可以休息一天。每名保安可以自行选择自己想要的休息日,而对于休息日的选择 既可以是某一天,也可以是某几天中的其中一天。当7名保安依次输入自己想要的休息日 后,系统将会给出可能的值班安排。若系统给出的值班安排是0种,证明系统对7名保安 的选择无法作出排班,需要重新输入。 具体题目:学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需 要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日 。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息 日如下: 钱:星期一、星期六 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日 2、本程序涉及的知识点 输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等 二、程序流程图 三、程序代码设计 输入函数和输出函数、变量的定义、for语句和switch- case语句、ss字符串的使用等。 输入函数: 1)函数原形:自定义swap(int *a, int *b)函数 2) 功 能:swap()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断交换的 功能。 3)函数原形:get char() 4)功 能:向计算机输入一个字符。 5)变量及类型: int a,b,m,k: 整型形参变量,接收main()传过来的随机数字。 int i:循环控制变量,其中i 具有自加功能。 int j: 整型形参变量,其中j 具有自加功能。 6)说 明:输入字符后需要输入-1,待系统做出判断后往下执行。 选择判断结构 switch- case语句:从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行 ,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的 第一个语句继续执行,并忽略其他case;假如任何一个case语句的值都不等于表达式的 值,就运行可选标签default之下的语句。 假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会 跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。 for语句:for(语句1 ; 语句2 ; 语句3 ) {循环体} 执行时,先执行一次语句1(注意只执行一次) 之后判断语句2是否成立 1).如果成立执行循环体,之后执行语句3。再返回语句2判断条件是否成立?成立执行循 环体后再执行语句3,如此直到循环体不成立则跳出循环 2)如果语句2不成立,则不执行循环体也不执行语句3直接跳出循环。 输出函数: 1)函数原形:printf("======",*) 2)功 能:输出相关提示信息及最后结果。 3)相关变量: int n:输出正确结果。 int i,j:输出计算正确,计算排班情况。 4)说 明:输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量前 加逗号。 四、程序调试过程 由于对C语言知识储备有限,且时间精力有限,我们在设计程序程序的过程中遇到了 不少问题。 首先遇到的问题是:使用何种数组以及如何使输出变得简洁易懂,易操作。在思考讨 论之后,我们决定尽量"使输入数字化,输出结果文字化"的做法,也就是再输入星期几 的时候直接用数字代替,在输出的时候,为了更加直观,就需要把原先的数字输出为星 期几这种文字的形式;在单个对象输出结束之后,我们选择了 -1这个不会与其他日期混淆的数字,以此表示可以对下一个对象进行输出。这就需要
内容简介 本书采用生动轻松的语言,深入阐述了C++语言和面向对象程序设计技术。书中设计了超过115个完整的经过教学测试的代码示例,不仅分析了这些示例的代码片段,而且还解释了如何把它们组成一个完整的程序。此外,各章后面都提供了大量练习,有助于加强读者对相关内容的理解。 本书图文并茂,通俗易懂,真正做到寓教于乐,是一本难得的C++面向对象设计入门教材。 -------------------------------------------------------------------------------- 作者简介 Barbara Johnston,任教于新墨西哥中央社区学院,负责教授AA学位的计算机编程课程。她有20多年的软件开发和教学经验,目前兼任Rapid Imaging SoftwarrtCAM3D实时感知软件。e公司的软件开发工程师,负责开发了美国军用无人驾驶飞行器所使用的SmartCAM3D实时感知软件。 -------------------------------------------------------------------------------- 目录 出版者的话 译者序 前言 第1章 C++概述与软件开发 1.1 什么是C语言和C++ 1.1.1 C和C++历史回顾 1.1.2 C/C++是一门编译语言 1.1.3 为什么许多程序员都选择C++ 1.2 什么是面向对象 1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象设计 1.3.1 ATM——结构化设计 1.3.2 采用面向对象方法的ATM——究竟是谁的任务 1.3.3 汽车维护——结构化设计 1.3.4 采用面向对象方法的汽车维护——究竟是谁的任务 1.4 软件开发技术概述 1.5 问题发现与解决 复习题 第2章 C++的入门知识 2.1 编程基础 2.1.1 算法设计 2.1.2 正确的软件开发步骤 2.2 专业术语及工程创建 2.3 C++程序的一般格式 2.3.1 “Hello World!”程序 2.3.2 “How’s the Weather?”程序 2.4 程序的数据及数据类型 2.4.1 C++的数据类型 2.4.2 容器=数据类型,标签=变量名 2.4.3 数据类型修饰符 2.4.4 问题分析:整型数据究竟有多大 2.5 C++中的变量声明 2.5.1 C++的命名规则 2.5.2 在哪里声明变量 2.6 C++中的运算符 2.6.1 计算路程的程序 2.6.2 从键盘输入程序所需数据 2.6.3 赋值运算符 2.6.4 运算符的优先级 2.6.5 数据类型及其存储的值 2.6.6 算术运算符 2.6.7 自增运算符和自减运算符 2.6.8 复合赋值运算符 2.7 #define、const和数据类型转换 2.7.1 #define预处理指令 2.7.2 const修饰符 2.7.3 const比#define好吗 2.7.4 数据类型转换 2.8 关于键盘输入和屏幕输出的更多内容 2.8.1 转义序列 2.8.2 ios格式标记 2.8.3 流的IO控制符 2.9 开始使用类和对象、C++string类 2.10 练习 复习题 第3章 控制语句和循环 3.1 关系运算符和逻辑运算符 3.2 if语句 3.2.1 if-else语句 3.2.2 问题分析:在if语句中使用大括号 3.2.3 if-else if-else语句 3.2.4 低效的编程方法 3.2.5 if-else程序示例 3.2.6 嵌套if-else语句 3.2.7 条件运算符“?” 3.3 switch语句 3.4 循环 3.4.1 括号的用法 3.4.2 无限循环 3.5 for循环 3.5.1 不要改变循环索引 3.5.2 for循环示例 3.6 while循环 3.7 do while循环 3.8 跳转语句 3.8.1 break语句 3.8.2 continue语句 3.9 问题发现与解决 3.9.1 五个常见错误 3.9.2 调试程序 3.10 C++类与vector类 3.11 总结 3.12 练习 复习题 第4章 函数一:基础 4.1 C++中的函数 4.1.1 只由一个main函数构成的程序 4.1.2 包含多个函数的程序 4.1.3 函数是个好东西 4.1.4 三个重要的问题 4.2 函数:基本格式 4.3 函数的编写要求 4.3.1 你想住在C++旅馆中吗 4.3.2 函数为先 4.3.3 函数声明或函数原型 4.3.4 函数定义、函数标题行与函数体 4.3.5 函数调用 4.3.6 传值调用 4.3.7 问题分析:未声明的标识符 4.4 重载函数 4.5 具有默认输入参数列表的函数 4.6 局部变量、全局变量和静态变量 4.6.1 局部变量 4.6.2 块范围 4.6.3 全局变量 4.6.4 危险的全局变量 4.6.5 问题分析:全局变量y0、y1与cmath 4.6.6 静态变量 4.7 C++stringstream类 4.8 总结 4.9 练习 复习题 第5章 函数二:变量地址、指针以及引用 5.1 数据变量和内存 5.1.1 sizeof运算符 5.1.2 预留内存 5.1.3 计算机内存和十六进制 5.2 取地址运算符& 5.3 指针 5.4 函数、指针以及间接运算符 5.4.1 解决思路 5.4.2 指针和函数 5.4.3 有效处理大型数据 5.5 函数和引用 5.5.1 复习:两种机制 5.5.2 为什么要强调指针的重要性 5.6 queue类 5.7 总结 5.8 练习 复习题 第6章 数组 6.1 使用单个数据变量 6.2 数组基础 6.2.1 数组的索引值从0开始 6.2.2 使用for循环和数组来实现的电话账单程序 6.2.3 数组的声明和初始化 6.2.4 数组越界==严重的问题 6.2.5 vector与数组的比较 6.3 数组和函数 6.3.1 每个数组都有一个指针 6.3.2 数组指针 6.3.3 向函数传递数组:最开始的引用调用 6.3.4 利用数组和函数生成随机数并进行排序 6.4 C字符串,也称为字符数组 6.4.1 字符数组的初始化 6.4.2 null字符 6.4.3 C字符串的输入 6.4.4 C++中提供的字符数组函数 6.5 多维数组 6.5.1 二维数组的初始化 6.5.2 嵌套的for循环和二维数组 6.5.3 利用二维数组来实现Bingo游戏 6.6 多维数组和函数 6.6.1 改进的Bingo卡片程序 6.6.2 白雪公主:利用二维数组来存储姓名 6.7 利用数据文件对数组赋值 6.8 总结 6.9 练习 复习题 第7章 类和对象 7.1 我们所了解的类和对象 7.2 编写自己的类 7.2.1 入门实例:自定义日期类 7.2.2 第一个C++类:Date类 7.2.3 揭开类的生命之谜 7.2.4 set和get函数的作用与VolumeCalc类 7.2.5 PICalculator类 7.3 作为类成员的对象 7.4 类的析构函数 7.5 对象数组 7.6 重载运算符与对象 7.7 指针、引用和类 7.7.1 指针和引用实例 7.7.2 处理日期和时间的程序实例 7.8 总结 7.9 练习 复习题 第8章 继承和虚函数 8.1 为什么继承如此重要 8.1.1 IceCreamDialog实例 8.1.2 Counter类实例 8.2 继承基础 8.2.1 Counter和DeluxeCounter实例 8.2.2 保护成员 8.2.3 员工、老板和CEO 8.3 访问控制符的规范和多继承 8.4 继承、构造和析构 8.4.1 构造函数和析构函数回顾 8.4.2 基类和派生类的默认构造函数——没有参数 8.4.3 在重载的构造函数中使用参数 8.4.4 基类和派生类的析构函数 8.4.5 医生也是人 8.4.6 关于派生类和基类构造函数的规则 8.5 多态和虚函数 8.5.1 多态——同一个接口,不同的行为 8.5.2 什么是虚函数 8.5.3 虚函数的作用 8.6 总结 8.7 练习 复习题 附录A 学习使用Visual C++2005Express Edition 附录B C++关键字表 附录C C++运算符 附录D ASCII码 附录E 位、字节、内存和十六进制表示 附录F 文件输入/输出 附录G 部分C++类 附录H 多文件程序 附录I Microsoft visual C++2005Express Edition的调试器 术语表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红心柚大果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值