当前课程知识点:C语言程序设计 >  第22讲 编程训练 >  编程训练 >  循环结构程序例子

返回《C语言程序设计》慕课在线视频课程列表

循环结构程序例子在线视频

循环结构程序例子

这一讲包括了判断质数、计算𝝅的近似值、输出九九乘法表。

返回《C语言程序设计》慕课在线视频列表

循环结构程序例子课程教案、知识点、字幕

这一讲讲几个有代表性的循环结构程序的例子

我们前面也强调过

通过程序实例学编程是最好的方法

我们的目标是通过几个典型的循环结构程序例子

让大家掌握程序设计的基本技能

这些例子包含了以前学过的大多数知识

学习本讲也能巩固以前所学的知识

实际上你会发现虽然教材比较厚

但书中的程序大部分都是以前讲过的知识

比如输入 输出 顺序结构 选择结构等等

第一个例子判断质数

要求输入大于1正整数

判断该整数是否是质数

并输出结果

解题思路是这样的

根据质数的性质

让该数依次与从2到比它小的数相除

看能否整除

在实现的时候我们通过求余

结果为0来判断是否整除

如果有一个数能整除

就不是质数

否则就是质数

我们看一下完整的程序

这个程序开始定义了几个变量

x是需要输入的判断是否是质数的正整数

然后呢flag这个地方是一个标记

我们在后面程序中会看到它的作用

这个标记让他暂时设为1 初值设为1

这儿通过scanf读入x变量的值

这个地方做一个判断

如果x小于等于1

就认为是非法的

因为一个数只有当他大于等于0时

判断是否是质数才有意义

下面就讲下核心过程

通过一个for循环

就是让i从2一直增到小于x的这些数

就是让x对这个i求余

看是否等于0

求余等于0就是能整除

发生整除情况以后

我们让flag标志记为0

然后break就跳出这个循环

因为只要有一个数能发生整除

那么就已经能够判断出这个数不是质数

也就没有必要循环再向下做了

然后for循环出来以后

判断flag的值

如果flag等于1

那么就输出这个数是质数

else就不是质数

在这个地方我们可以看到

只有在发生整除时

flag能等于0

没有发生整除的时候

这个for一直是i

从2开始一直到小于x的那个值

就是从头到尾都不会进到if语句中去

那么flag的值就是最初设的值

这就表明x从来没有在这个地方被整除过

所以 在这种情况下x就是质数

否则就不是质数

我们来编译、运行一下这个程序

比如我们输入一个17

那么它输出17是质数

这个程序还有一个需要说的地方是

我们前面在PPT里面讲的在for语句中进行判断时x除以i

这个i是从2到小于x的值

但是实际上这样运算有一部分是多余的

也就是说 根据数学原理

这个地方i完全可以不用从2到小于x

那么你实际上只要让它小于等于sqrt(x)

就是x的平方根到这个地方这样就够了

这个具体的数学原理就不在这里讲了

这样的话 对很多尤其是大的数进行判断的话

循环次数就会减少很多遍

另外一个 在这个地方前面我们说if(flag = = 1)

如果flag=1

那么它是质数

这个地方你也可以写成这样

就直接不要这个等于1

直接写flag

它的涵义和刚才完全一样

这样就更简单一些

也是看他这个flag等于1

那么这个地方他就是质数

否则就不是

这样写更简洁

第二个例子是利用给出的公式计算Π的近似值

我们给出的公式是四分之Π=1- + - ...

一直往后

这个公式有很明显的特点

就是正负交替出现

而且分母部分从1 3 5 7隔两个值往上增长

那么他要求是在累加的时候就是这一项

最后一项的绝对值小于十的负四次方时为止

输出Π的值并统计累加次数

我们看程序

程序当中先定义了几个变量

变量的含义分别是这样的

其中n表示累加项的分母部分

初值设为1

就是这个

sign表示正负号

最开始是正

所以这个就是1

count是这个累加次数

最初是0

然后呢term的含义就是这个里面其中的某一项

三分之一、五分之一或七分之一这一项

sum是它的累加和

好明白了这几个变量的意思

我们看一下这个地方用一个循环while(term>=1e-4)时

term=1.0/n; n的值最开始是1

所以这个值最开始就是1

然后sum=sum+sign*term sign初值是1

所以这个地方加上term实际就是把1加进去

加进去了以后sign=-sign 那么sign变为-1

然后n=n+2 这时n的值就变成3

再count++ 因为已经把第一项加了

即累加了一次

然后回来以后

term=1.0/n

刚才n变成了3

所以 term就变成1/3

3/1这个sign+

刚才的sign变成-1

所以这儿相当于减去1/3

然后完了sign是-1

然后前面再负 负负得正

sign又变成正1

然后n加2以后就变成5

就是这个

n变成5 count++

刚才把这个第二项加了

所以count就变成2

然后回来以后

term就变成1/5

后面的过程就不再一一演示

整个就是这样一个过程

这个循环结束以后

因为这样循环算出来的sum是四分之Π

所以最终输出Π的值时

这个地方要乘以4

然后count就是循环加的次数

第三个例子是编程输出九九乘法表

乘法表有三种不同的形式

这个程序主要展示了双重循环的使用及输出格式控制

我们看一下这三种乘法表的格式特点

第一行1 2 3一直到9

然后第二行是一个杠 9个横杠

然后这个表示123到9 这是竖行

横行也是从1到9

然后里面就是对应的行和列相乘的值全部写在这里

第二种形式中前两行这个一样

后面这个地方呢乘法表构成了一个这样的一个三角形

就是把这个区域并不显示

然后第三种方式和这个方式不同的是

在这个区域不显示而在这个区域显示

还有一个需要注意的就是这几种情况下我们看到

这些地方对齐的时候都是左对齐

这儿也是

这儿也是

都是靠左对齐

好我们看下具体的程序

这个就是实现第一种表格

我们先运行一下

好 这个得到了正确的结果

我们对这个结果我们来分析一下

看在程序当中是怎么实现的

首先输出的第1行靠这样一个循环

i = 1 i <=9 依次输出i的值

注意控制符用-4d

那这是什么意思呢

这个输出占四位宽

但是靠左对齐

这儿1这个地方包括1占4位宽

但是靠左对齐

这就是-4d的含义

然后这个整个完了以后输出一个换行符

换到下一行

这儿再输出九个横杠

然后这再输出一个换行

然后再后面

就是使用双重循环来输出下面的这一部分

这个里面i用来控制他的行号

j 控制它的列号

然后通过这种方式就可以把乘法表输出

好我们把乘法表的第一种注释掉

演示乘法表的第二种

我们还是编译运行一下

这里显示的是乘法表的第二种情况

我们还是对着程序来看一下

因为前两行和第一种形式一样

所以这几条语句就不多讲了

后面的控制部分依然是用双重循环来实现

但它进行了判断当j > i时

然后就直接break 跳出循环不再往后

这些部分当列数大于行数时就跳出

就内层循环就不再往下做

这些地方就不显示

显示的部分就是列数小于等于行数的

我们把第二种实现也注释掉

我们看 这是第三种形式的输出

这个代码再解释一下

同样前两行和前面两种形式一样就不说了

后面这部分也是用双重循环控制

控制时 这个地方当列号小于行号时直接输出四个空格

就不再输出乘法表的值

其他情况下输出它行列相乘的结果

这个例子实际上很好的演示了双重循环以及格式控制

C语言程序设计课程列表:

第0讲 导言

-简单介绍课程性质等

-关于编程训练

第1讲 C程序框架

-C程序框架

-作业

第2讲 C程序编译环境

-C语言的编译环境

-作业

第3讲 顺序程序的几个例子

-顺序程序的几个例子

-作业

第4讲 常见的编译错误

-常见的编译错误

-作业

-编译错误探讨

第5讲 输入输出精要

-输入输出精要

-作业

-输入输出格式探讨

第6讲 选择结构的典型例子

-选择结构的典型例子

-作业

第7讲 选择结构常见错误

-选择结构常见错误

-作业

第8讲 排除程序错误的常规方法

-排除程序错误的常规方法

-排除错误探讨

第9讲 循环结构基础

-循环结构基础

-作业

-循环类型

第10讲 循环结构程序例子

-循环结构程序例子

-作业

-程序结构

第11讲 函数基础

-函数基础

-作业

第12讲 函数举例

-函数举例(上)

-函数举例(下)

第13讲 变量的作用域与生存期

-变量的作用域与生存期

-变量的使用

第14讲 数组基础

-数组基础

-作业

第15讲 数组应用举例

-数组应用举例(上)

-数组应用举例(下)

第16讲 数组参数传递

-数组参数传递(上)

-数组参数传递(下)

-作业

第17讲 指针变量

-指针变量(上)

-指针变量(下)

-作业

第18讲 字符串

-字符串(上)

-字符串(下)

-作业

第19讲 程序调试

-程序调试

-程序调试的重要性

-程序调试讨论

第20讲 结构体及其应用

-结构体及其应用(上)

-结构体及其应用(下)

第21讲 文件

- 文件(上)

-文件(下)

第22讲 编程训练

- 编程训练

循环结构程序例子笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。