搜档网
当前位置:搜档网 › C语言的二重循环

C语言的二重循环

C语言的二重循环
C语言的二重循环

5.2 多重循环程序设计案例

案例5.4 九九乘法表

【项目任务】

实现九九乘法表。

【设计思路】

实现九九乘法表的流程图如图5-3所示。

图5-3 九九乘法表流程图

【程序代码】

#include

main()

{

int i,j;

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

{

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

printf("%d*%d=%-3d",j,i,i*j);

printf("\n"); /*换行,整个九九乘法表有9行,所以该语句应被执行9次*/ }

}

【运行结果】

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

【知识拓展】

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

2.在一个循环体内如果有多个语句,应该用大括号括起来,这样就构成了复合语句。案例5.5 金字塔图形

【项目任务】

输出以下图形。

*

***

*****

*******

*********

【设计思路】

从以上图形可以看出,每一行的星号数为该行行数乘以2再减1,每一行前面的空格数为5减去该行行数。用变量i控制行数,用变量j控制行前的空格数以及打印的星号数,循环5次。

【程序代码】

#include

main()

{

int i,j;

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

{

for(j=1;j<=5-i;j++) /*打印5-i个空格*/

printf(" ");

for(j=1;j<=2*i-1;j++) /*打印2i-1个星号*/

printf("*");

printf("\n");

}

}

【运行结果】

*

***

*****

*******

*********

【知识拓展】

1.该程序中临时变量i和j不断地被重新赋值,原值均被新值所替代。

2.一般来说,对于输出图形的任务,只要认真找出其中的规律,按照规律来编写代码就相对容易了。

3.参照给出的案例,编写相应的程序代码,输出以下图形。

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

案例5.6 杨辉三角形

【项目任务】

输出以下杨辉三角形(要求输出6行)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

【设计思路】

(1)杨辉三角形最本质的特征是:它的竖直边和斜边都是由数字1组成的,而其余数则是等于这个数正上一行与左上一行的两个数之和。从杨辉三角形的特点出发,可以总结出:第n行有n+1个值(设起始行为第0行)。

(2)对于第n行的第j个值:(n>=2)

①当j=1或j=n+1时,其值为1。

②当j!=1且j!=n+1时,其值为第n-1行的第j-1个值与第j个值之和。

【程序代码】

#include

#define N 6

main()

{

int n,i,j,k,a[N][N];

for(i=0;i

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i

for(i=0;i

{

for(j=0;j<=i;j++)

printf("%-4d",a[i][j]);

printf("\n");

}

}

【运行结果】

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

【知识拓展】

1.本程序用到了二维数组,其定义的形式为:

类型说明符数组名[常量表达式][常量表达式]

2.程序中,首先使用一个循环体对数组中代表杨辉三角形的两边赋值为1,第二个多重循环体的作用是对数组中代表杨辉三角形的非1数字进行计算和赋值。计算完毕后,值被存储在二维数组的相应位置,第三个多重循环体的作用是打印数组的值。

int i, j;

int count = 0;

for (i = 4; i > 0; i--)

{

for (j = 0; j < 6; j++)

{

count++;

}

}

首先进入外层循环,然后进入内层循环!

第一步i=4

当j=0时count=1,j=1时count=2,j=2时count=3,j=3时count=4,j=4时count=5,j=5时count=6,j=6时,由于不满足条件,然后执行外层循环

第二步i=3

之前的count=6,现在有继续执行内层循环,所以当j=0时count=7,j=1时count=8,j=2时count=9,j=3时count=10,j=4时count=11,j=5时count=12,j=6时,由于不满足条件,然后执行外层循环

第三步i=2

之前的count=12,现在有继续执行内层循环,所以当j=0时count=13,j=1时count=14,j=2时count=15,j=3时count=16,j=4时count=17,j=5时count=6,j=18时,由于不满足条件,然后执行外层循环

第四步i=1

之前的count=18,现在有继续执行内层循环,所以当j=0时count=10,j=1时count=20,j=2时count=21,j=3时count=22,j=4时count=5,j=23时count=6,j=24时,由于不满足条件,然后执行外层循环

第五步i=0

不满足条件,所有循环执行结束

如果在第二个循环内打印结果输出的就是:1,2,3,...24;

如果是在第一个循环中打印结果输出的是:6,12,18,24;

不好意思,写错了一个地方

下面的是正确的

第三步i=2

之前的count=12,现在有继续执行内层循环,所以当j=0时count=13,j=1时count=14,j=2时count=15,j=3时count=16,j=4时count=17,j=5时count=18,j=6时,由于

不满足条件,然后执行外层循环

第四步i=1

之前的count=18,现在有继续执行内层循环,所以当j=0时count=10,j=1时count=20,j=2时count=21,j=3时count=22,j=4时count=5,j=23时count=24,j=6时,由于不满足条件,然后执行外层循环

第二个循环输出时循环了24次,第一个循环输出时循环了4次

用二重循环打印图形教学设计

(2010-04-23 10:02:28)

转载▼

分类:教学论文

标签:

杂谈

用二重循环打印图形教学设计

江苏省盐城中学信息教研组周勇军

一、教材分析

“用二重循环打印图形”是高中信息技术选修《算法与程序设计》第二章2.3.3循环结构中的内容。本文要说的二重循环是建立在一重循环的基础之上的,虽然内容不多,但是用它来实现图形打印,内外循环就被赋予了特殊的含义,即控制行数和每行的字符数。由于图形的多样性,就需要灵活设置内外循环的变化范围。为了让学生从根本上掌握各种图形的打印方法,让学生学会总结图形规律,理解用二重循环打印图形的原理是非常重要的。

二、教学目标

1、知识与技能

①熟练掌握二重循环语句For … Next 的基本格式,并能运用它打印图形

②理解Tab ( ) 函数的含义并能进行运用

③学会用数学函数思想归纳变量与定量之间的关系表达式

2、过程与方法

通过打印各种“*”型图形,让学生能熟练运用二重循环

3、情感态度与价值观

通过图形打印,增强学生对程序设计的兴趣,提高分析问题解决问题的水平

三、教学重点与难点

教学重点

根据”*”型的排列情况,运用数学函数思想总结其规律,灵活运用二重循环语句实现图形打印

教学难点

根据”*”型的排列情况,运用数学函数思想总结其规律

四、学生分析

学生已经学习了一重循环的基本格式,并且能够编写相应程序,具备了用二重循环解决问题的能力基础,加上以图形打印为载体,更能激发他们学习的浓厚兴趣。

五、教学环境

网络机房、VB 6.0,投影。

六、教学策略

本节课以解决二重循环打印图形问题为主线,采用层层深入和自主探究为主要模式,以教师为主导,学生为主体,让学生积极主动地思考问题、解决问题,从而达成学习目标。

七、教学过程

一、创设问题情境,引入新课

师:有这样一条VB语句:print “*”;,大家思考一下它的执行结果?

生:在vb窗体打印一个*。

师:这里的;有什么作用?

生:后面打印的内容紧跟此*显示,不换行。

For j = 1 To 4 step 1

Print “*”;

Next j

师:如果将这条语句(print “*”;)作为如下循环语句的循环体,运行结果是什么?

For j = 1 To 4 step 1

循环体

Next j

生:在vb窗体打印4个连续的*。

For i = 1 To 4 step 1

For j = 1 To 4 step 1

Print “*”;

Next j

Next i

师:如果将这里的循环语句,再作为如下循环语句的循环体,这样写行不行呢?会产生运行结果吗?

For i = 1 To 4 step 1

循环体

Next i

生:行,在vb窗体打印16个连续的*。

师:大家可以看到这里出现了比较特殊的情况,即循环语句套循环语句的情况,这就是“二重循环”。

二、二重循环语句格式

师:根据此例,可以总结出二重循环语句的基本格式为:

For 循环变量 = 初值 To 终值

For 循环变量 = 初值 To 终值

循环体

Next 循环变量

Next 循环变量

师:刚才这个例子,执行结果是打印16个连续的*,如果要将16个*分成4行,代码该如何修改呢?大家还记得前面讲过的实现换行的语句吗?

生:用print

For i = 1 To 4 step 1

For j = 1 To 4 step 1

Print “*”;

Next j

Print

Next i

For i = 1 To 4 step 1

For j = 1 To 4 step 1

Print “*”;

Next j

Next i

师:教师在vb环境里执行这段代码,执行结果是打印出4行4列的*型图形,这是通过二重循环打印出的一个矩形图形。我们进一步分析可以看出,这里的i

变化范围是1到4,即为外循环变量,用来控制打印的行数,这里的j变化范围是1到4,即为内循环变量,用来控制每行打印的字符数,从这个角度来说,这里的内外循环变量(i、j)就有了实际的意义,即i控制行数,j控制每行字符数。

师:请大家上机练习,用二重循环打印一个4行5列的*型图形。

生:学生上机实践。

For i = 1 To 4 step 1

For j = 1 To 5 step 1

Print “*”;

Next j

Print

Next i

学生操作,教师巡视。

教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。

师:显然这里的矩阵图形是一个规则的图形(每行字符数相同),如果是一个三角形(每行字符数不同如图一)好不好打印呢?

(图一)

三、二重循环的进一步运用

(1)(图一)图形的打印(每行字符数不同)

师:大家看(图一)是一个三角形,共4行,但每行的字符数不一样多,外循环应该没问题,那内循环应怎么设置呢?进一步分析,可以看到虽然每行字符数不一样,是一个变量,但变化是有规律的。那我们考虑能不能找出它跟行数的一个对应关系呢?我们从图一中采集行数和相应字符数的一个信息列表如下:

分析此表,我们可以用数学中一次函数的思想(i为自变量,j为函数值)来建立j和i的关系表达式。从而得到:j=i,所以可以得到如下代码:

(图二)

For i = 1 To 4

For j = 1 To i

Print “*”;

Next j

Print

Next i

师:教师在vb环境里执行此代码,执行结果正如如图一。

(2)(图二)图形的打印(每行字符数不同,每行起始*位置不同)

师:看(图二),也是一个三角形,不同的是每行第一个字符的起始位置不一样,是一个变量,这样的图形应该怎么打印呢?

师:这里要用到一个函数tab(),此函数用来控制输出字符的位置。请大家体验下面一段代码的作用。

生:上机输入如下代码,体会tab函数的作用。

Print "1234567890"

Print Tab(2);

Print "*"

Print Tab(4);

Print "*"

师:大家通过实践,可以发现Tab()函数的自变量就表示输出的具体位置。

师:显然图二中,每行的字符数是变的,每行第一个字符的起始位置也是变的,跟刚才的分析方法一样,要建立关系式。

分析此表,我们可以用数学中一次函数的思想(i为自变量,j为函数值,n为函数值)来建立j和i的关系表达式,n和i的关系表达式。从而得到:j=i,n=5-i,所以可以得到如下代码:

For i = 1 To 4

Print Tab(5 – i );

For j = 1 To i

Print “*”;

(图三)

Next j

Print

Next i

师:教师在vb环境里执行此代码,执行结果正如如图二。

四、学生自主探究

师:教师布置任务打印如图三所示图形

For i = 1 To 4

Print Tab(9 – 2*i);

For j = 1 To 2 * i - 1

Print "*";

Next j

Print

Next i

生:

可以归纳出:n=9-2*I j=2*i-1

学生操作,教师巡视。

教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。

(图四)

五、师生共同探究

师:教师布置任务打印如图四所示图形

生:

采取“分而治之”的方法进行处理,即将图形分为上三角和下三角分别进行打印,然后进行合并形成图四所示的形状。

参考代码略

师:大部分同学采用分块处理的方法来实现打印,这样做易于理解但代码较繁琐,能不能简化一下呢?能否通过一个二重循环语句就能实现呢?这个图形一共7

行,如果i的范围取1到7难以归纳n和j的表达式,但稍微观察一下,可以发现此图是一个对称图形,所以行i的范围可以取-3到3,行作为定量可以表示成abs(i),再依此建立关系就方便了。

For i = -3 To 3

Print Tab(2* Abs(i)+4);

For j = 1 To 7 – 2*Abs(i)

Print "*";

Next j

Print

Next i

分析与参考代码如下:

可以归纳出:n=2*abs(i)+4,J=7-2*abs(i)

师:教师在vb环境里执行此代码,执行结果正如如图四。

六、教师总结

这节课我们通过二重循环打印了几种图形,通过学习可以发现打印的关键就是对图形中行和列及打印位置的控制。实际上这些图形还可以变化成很多种其他图形,但只要我们能总结行和列、打印位置的规律,找出它们的内在关系,写出相应的关系式,那么要实现种种图形的打印是不难的。

六、教学反思

这节课的引入本来是直接给学生展示一个用二重循环语句打印的完整图形,但发现学生不能一下子接受,所以采用了先打印一个*,再打印一行*,到若干行*的层层递进的方法,这样学生就很容易接受。

本节课是用二重循环实现图形打印,我们选用的图形都是大家比较熟悉的图形,如矩形、三角形、菱形等,这样学生有亲切感,也容易激发学生的学习兴趣。

本教学设计在讲图形打印技巧方面,注重跟数学学科的紧密结合,利用学生熟悉的函数知识来分析问题,解决问题,加强了学科之间的交流。

在具体教学过程中,通过一系列“*”型图形打印,让学生在这些趣味性的题目中思考、分析、编写代码并上机实践。这里的*型图案,是从简单到复杂慢慢变化的,这样学生易于接受和理解。老师教起来好教,学生学起来带劲,真正做到了课堂的有效教学。

大一上期C语言实验报告5 循环控制语句

成都工业学院·计算机工程学院 《程序设计基础》实验报告 1.实验目的 (1)熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用三 种循环语句实现循环结构; (2)掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧; (3)进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。2.实验内容 (1)输出两个整数m和n,求它们的最大公约数和最小公倍数。 要求: ①画出算法流程图,从键盘输入m和n; ②对负数和零可不做考虑; ③运行程序,对m>n、m

③按照数字、大写字母、小写字母及其他字符数的顺序输出结果 3.流程图 4.源程序

5. 运行结果 (1 ) 求最大公约数和最小公倍数 (2)求1000内最大的10个素数之和(3)计算π值

C语言for循环语句教案

for循环结构程序设计教案 课程名称:C语言程序设计 本课内容:循环结构程序设计——for 语句 一、教学目标 1、领会程序设计中构成循环的方法 2 、掌握for 语句的用法 二、教学重点 1、for 语句的一般格式 2、for语句的执行过程 三、教学难点 for 语句的综合利用 四、教学方法 1、课堂讲授,给出主要内容。 2、讲解其基本格式。 3、应用示例,结合相应的知识讲解。 4、执行过程用流程图和例题用(演示法和讲解法)进行详细说明。 五、教学过程 (一)导入 1、复习前两节课我们学习的两种循环语句——while语句和do~while 语句的基本格式和执行过程和特征。 2、给出例子如下:

main( ) {int x=1; (表达式1) s=0; while(x<=100) (表达式2) {s=s+x; x=x+1; (表达式3) } printf(“%d”,s); } 分析用while语句来完成的程序,主要完成1到100的累加和,对一个循环程序来说最关键的三个部分:循环变量的赋初值、控制循环条件、循环控制变量的更新。 (二)教学过程 1、写出本节课要介绍的for语句的一般格式 for(表达式1;表达式2;表达式3) 循环体; 2、掌握:基本格式和各个表达式的功能和特征 强调:for语句中的所有表达式和while语句中的表达式所完成的功能是相同的。 表达式1:循环变量的初始化(初始值) 表达式2:循环条件(终止值) 表达式3:循环变量自增 3、for语句的执行过程 for ( int i = 0 ; i < 10 ; i++) { printf("我最棒"); }

c语言循环语句和循环控制例题解析

一、循环控制 (一)、break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 例如: int main(int argc, char *argv[]) { int sn=0,i; for(i=1;i<=100;i++) { if(i==51) break; /*如果i等于51,则跳出循环*/ sn+=i; /*1+2+……+50*/ } printf(%d\n,sn); } 可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。 注意: 1. break语句对if-else的条件语句不起作用。 2. 在多层循环中,一个break语句只向外跳一层。 例如: int main(int argc, char *argv[]) { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) { if(j==2) break; printf(%d %d\n,i,j); } } 输出结果为: i j 0 0 0 1 1 0 1 1 当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。 (二)、continue语句

C语言 个关键字九种控制语句 种运算符

总结归纳了C语言的32个关键字 第一个关键字:auto 用来声明自动变量。可以显式的声明变量为自动变量。只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。并且只在声明它的函数内有效。而且当使用完毕后,它的值会自动还原为最初所赋的值。自动变量使用时要先赋值,因为其中包含的是未知的值。 例:auto int name=1; 第二个关键字:static 用来声明静态变量。可以显式的声明变量为静态变量。也为局部变量。只在声明它的函数内有效。它的生命周期从程序开始起一直到程序结束。而且即使使用完毕后,它的值仍旧不还原。即使没有给静态变量赋值,它也会自动初始化为0. 例:static int name=1. 第三个关键字:extern 用来声明全局变量。同时声明在main函数之前的变量也叫全局变量。它可以在程序的任何地方使用。程序运行期间它是一直存在的。全局变量也会初始化为0. 例:extern int name; 第四个关键字:register 用来声明为寄存器变量。也为局部变量,只在声明它的函数内有效。它是保存在寄存器之中的。速度要快很多。对于需要频繁使用的变量使用它来声明会提高程序运行速度。 例:register int name=1; 第五个关键字:int 用来声明变量的类型。int为整型。注意在16位和32位系统中它的范围是不同的。16位中占用2个字节。32位中占用4个字节。还可以显式的声明为无符号或有符号: unsigned int或signed int .有符号和无符号的区别就是把符号位也当作数字位来存储。也可用short和long来声明为短整型,或长整行。 例:int num; 第六个关键字:float 用来声明变量的类型。float为浮点型,也叫实型。它的范围固定为4个字节。其中6位为小数位。其他为整数位。 例:float name;

C语言循环程序设计for语句教学案例

《C语言循环程序设计—for语句》教学案例漠河县职业技术学校尘威威

《C语言循环程序设计—for语句》教学案例 漠河县职业技术学校尘威威 C语言基础是中职计算机专业的一门必修课,也是要求计算机专业学生学习、掌握的一门重点课程,这门课程核心内容就是要让学生掌握一门编程的语言,学会编写简单的程序,能读懂C语言源程序。 案例背景: 在计算机应用专业教学中,C语言是一门理论与实践结合得比较紧的课程。要掌握和使用好这门语言,既要求学生有比较扎实的理论基础,又要具备较强的应用实践能力。如果只是按照传统的知识体系照本宣科,让学生理解这些枯燥的概念都难,更不要说达到良好的教学效果,而且易挫伤学生学习编程的积极性。因此,在教学中可以改为从案例入手,通过给学生演示、让学生模仿,在实际应用中去探究和领悟这些概念,并适时地加以归纳总结和进行概念的延伸,让学生在轻松愉快的气氛中学习新知识。所以从课程内容而言,案例教学是适用的,是切合学生的。 循环结构是程序设计三种基本结构的重中之重,而循环中的for 循环是程序中运用最多的,也是较灵活的语句之一,它既是前面知识的延续,又是后面知识的基础,在知识构架中起着重要的衔接作用,如果不采用一些恰当有效的方法,学生在学习过程中会难以掌握。在教学过程中教师应结合一些有趣的程序,提高学生的学习兴趣,引导

学生全身心地投入课堂。本文针对学生的实际情况,具体阐述for循环语句在具体编程时的灵活应用。 教学目标确定 (一)知识与技能 1、领会程序设计中构成循环的方法 2、能使用for循环语句编写C语言语句,并能运用for循环语句编写出正确的程序。 (二)过程与方法 C语言程序设计中for循环语句教学以行动导向教学为主线,通过“提出问题―分析问题―解决问题―问题扩展―讨论―总结归纳―实践”的程序,过渡到知识应用和练习。 本课采用多媒体课件进行教学,通过课件把文字和图片有机的结合,使学生在学习过程中更加容易理解,学习效率高。在课堂讨论和实践过程中,教师适当引导,学生主动探究、归纳总结学习内容,既有利于领会掌握新知识点,又能充分发挥学生的主体作用。在重点的突破上,采用范例比较教学法,给出具体的案例,让学生通过典型的例子掌握知识,同时通过用while、do while语句的所编写的程序进行比较,加深学生印象,让学生快速的掌握for循环语句的基本结构及使用方法。 (三)情感与价值观 1.让学生在自主解决问题的过程中培养成就感,为今后自主学习打下良好的基础。

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

C语言循环结构测习题带答案

精心整理 第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ? ? ? ? 1. C. A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C. C. COUT< main() { intnum=0; while(num<=2) {

num++; cout< else ++i; }while(s<15); Cout< main() { inti,j; for(i=4;i>=1;i--) {

for循环使用详解(c语言版)

for循环使用详解(c语言版) 说明:c语言的很多语法部分都和JAVA,AS等相同特别是for的用法. c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句. for(表达式 1;表达式 2;表达式 3)语句 它的执行过程如下: (1)先求表达式 1. (2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步做若为 假(值为0),则结束循环,转到第5步. (3)求解表达式3 (4)转回上面第(2)步骤继续执行; (5)结束循环,执行for语句下面的一个语句; for(循环变量赋初值;循环条件;循环变量增值)语句 如 for(i=1;i =100;i++)sum=sum+i; 它的执行相当于 i=1; while(i =100){ sum=sum+i; i++; } 显然,用for语句更简单、方便。 说明: (1)for语句的一般形式中的”表达式1”可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i =100;i++){....}; (2)如果表达式2省略即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真. 例如:for(i=1;;i++){.....}; 相当于 i=1; while(1) {sum=sum+1; i++; } (3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如: for(i=1;i =100;) {sum=sum+1; i++;

C语言的32个关键字和9种控制语句

C语言的32个关键字和9种控制语句 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 1 数据类型关键字(12个): (1) char :声明字符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) int:声明整型变量或函数 (6) long :声明长整型变量或函数 (7) short :声明短整型变量或函数 (8) signed:声明有符号类型变量或函数 (9) struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) 2控制语句关键字(12个): A循环语句 (1) for:一种循环语句(可意会不可言传) (2) do :循环语句的循环体 (3) while :循环语句的循环条件 (4) break:跳出当前循环 (5) continue:结束当前循环,开始下一轮循环 B条件语句 (1)if: 条件语句 (2)else :条件语句否定分支(与if 连用) (3)goto:无条件跳转语句 C开关语句 (1)switch :用于开关语句 (2)case:开关语句分支 (3)default:开关语句中的“其他”分支 D返回语句 return :子程序返回语句(可以带参数,也看不带参数) 3 存储类型关键字(4个) (1)auto :声明自动变量一般不使用 (2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)

c语言循环控制语句

循环控制结构(又称重复结构)是程序中的另一个基本结构.在实际问题中,常常需要 进行大量的重复处理,循环结构可以使我们只写很少的语句,而让计算机反复执行,从而完成大量类同的计算. C语言提供了while语句、do...while语句和for语句实现循环结构. 3.4.1while语句 while语句是当型循环控制语句,一般形式为: while<表达式>语句; 语句部分称为循环体,当需要执行多条语句时,应使用复合语句. while语句的流程图见图3-8,其特点是先判断,后执行,若条件不成立,有可能一次也不执行. [例3-11]求n! 分析:n!=n*(n-1)*(n-2)*..2*1,0!=1.即S0=1,Sn=Sn-1*n.可以从S0开始,依次求出S1、S2、...Sn. 统一令S等于阶乘值,S的初值为0!=1;变量i为计数器,i从1变到n,每一步令S=S*i,则最终S中的值就是n!. 流程图见图3-9,程序如下:

考察图3-9中循环部分的流程图可以看出,在循环前各变量应有合适的值(s=1),另外,控制循环结束的变量(此处为i)必须在循环体中被改变,否则,循环将无限进行下去,成为死循环.

本题中,将多项式的每一项用t表示,s代表符号,在每一次循环中,只要改变s、n的值,

就可求出每一项t. 一般情况下,while型循环最适合于这种情况:知道控制循环的条件为某个逻辑表达式的值,而且该表达式的值会在循环中被改变,如同例3-12的情况一样. 3.4.2do...while语句 在C语句中,直到型循环的语句是do...while,它的一般形式为: do语句while<表达式> 其中语句通常为复合语句,称为循环体. do...while语句的流程图见图3-10,其基本特点是:先执行后判断,因此,循环体至少被执行一次. 但需要注意的是,do...while与标准的直到型循环有一个极为重要的区别,直到型循环是当条件为真时结束循环,而do...while语句恰恰相反,当条件为真时循环,一旦条件为假,立即结束循环,请注意do...while语句的这一特点. 例[3-13]计算sin(x)=x-x3/3!+x5/5!-x7/7!+... 直到最后一项的绝对值小于1e-7时为止. 分析:这道题使用递推方法来做. 让多项式的每一项与一个变量n对应,n的值依次为1,3,5,7,...,从多项式的前一项算后一项,只需将前一项乘一个因子: (-x2)/((n-1)*n) 用s表示多项式的值,用t表示每一项的值,程序如下: #include # include m a i n ( ) { double s,t,x ; int n ; printf("please input x :"); scanf("%lf",&x); t=x; n=1; s=x; do { n=n+2; t=t*(-x*x)/((float)(n)-1)/(float)(n); s=s+t;

c语言循环结构练习

2015-2016(2)循环结构练习题 一、单选题(共40题,共100分) 1. 以下正确的描述是()(2分) 语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 标准答案:B 考生答案: 2. 下面的关键字中,不能够从循环体中跳出循环体外的是()(2分) 标准答案:D 考生答案: 3. 以下叙述中错误的是()(2分) A.语句标号是由合法的标识符后面加一个冒号构成 语句的作用是把程序的执行转向语句标号所在的位置 语句必须与语句标号在同一个函数内 D.结构化程序设计主张使用goto语句,使用goto语句的程序可读性强标准答案:D 考生答案: 4. 有以下程序段,while 循环执行的次数是() int k=0; while(k=1)k++; (2分) A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次 标准答案:A 考生答案: 5. 运行以下程序的结果为() main() { int num=0; while (num<=2) {num++; printf("%d",num); } } (2分) 标准答案:B 考生答案: 6. 下述程序的输出结果是()。 #include<> main() { int Y=100; while(Y--);

printf("y=%d",Y); (2分) =0 =1 =随机值 =-1 标准答案:D 考生答案: 7. 执行下面的程序后的输出结果为() int x,y,z; x=20,y=40,z=15; while(y>x) x+=4,y-=4; z/=2; printf("%d,%d,%d",x,y,z); (2分) ,36,30 ,8,7 ,28,7 ,28, 标准答案:C 考生答案: 8. 以下程序段的输出结果是() int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z); (2分) ,2,0 ,2,-1 ,3,-1 ,-2,-5 标准答案:B 考生答案: 9. 下述语句执行后,变量k的值是() int k=1; while(k++<10); (2分) D.此为无限循环,值不定 标准答案:B 考生答案: 10. 下面程序的运行结果是()。 main() { int c1=2, c2=0; while(!c2--) printf("%d,%d", c1--, c2); } (2分) ,-1 B.不输出任何内容 ,-1 ,0 标准答案:C 考生答案: 11. 运行以下程序后,如果从键盘上输入china#main( ) { int v1=0,v2=0; char ch ; while((ch=getchar())!='#') switch(ch) { case 'a': case 'h': default: v1++; case '0': v2++;

c语言之whlie循环语句

本来说好讲讲除了scanf和printf以外例如gets、puts,petchar、putchar等输入输出函数。但准备了半天东西发现牵扯的知识太多,并且很多东西我自己也没有弄清楚。所以啦,我就打算先讲讲程序中最常见的两种循环语句,分别是while 循环语句和for循环语句。 这个while啊,我们都学过英语都知道有“当....的时候”的意思。对,学c语言时就当这个意思就行。 这个例题也没找到什么好的,就搬来了《c程序设计语言》上的例子,如果看过来就当是复习吧。 请看题: 使用公式℃=(5/9)(℉-32),打印下列华氏温度与摄氏温度的对照表。 0 -17 20 -6 40 4 60 15 80 26 100 37 120 48 140 60 160 71 180 82 200 93

220 104 240 115 260 126 280 137 300 148 我们的答案如下 #include /*当fahr=0,20,40,...,300时,打印华氏温度与摄氏温度对照表*/ main() { int fahr,celsius; int lower,upper,step; lower=0; /*华氏温度下限*/ upper=300;/*华氏温度上限*/ step=20;/*步长*/ fahr=lower; while(fahr<=upper) { celsius=5*(fahr-32)/9; printf("%d\t%d\n",fahr,celsius); fahr=fahr+step; }

} 值得高兴的是,我们又遇到了很多没有见过的东西,总是能见到新东西总是让人感到高兴的。 先是fahr、celsius等几个没见过的单词。这个其实不用说也都知道是啥东西,也就是几个可能原来不认识的变量名,并不是函数。 接下来是/**/格式的几个句子 /*当fahr=0,20,40,...,300时,打印华氏温度与摄氏温度对照表*/ /*华氏温度下限*/ /*华氏温度上限*/ /*步长*/ 这种在/*和*/之间加东西的东西叫做注释。和它的名字一样,仅作为注释,在程序运行过程就会被编译器忽略,因为编译器只对文章正文感兴趣。 这东西存在的主要价值基本上就是帮助看你程序的人或在你检查自己程序时可以快速理解你写的这一部分是干啥用的。因此注释在每个语句的句尾都可以加,在任何可以跳格也就是可以打空格或制表符的地方也都可以加。 剩下我们可能看不懂的大概也就剩while的循环语句了:while(fahr<=upper) { celsius=5*(fahr-32)/9;

C语言三种循环语句

三种基本的循环语句: for语句、while语句和do-while语句。 一、循环语句 (一)、for循环它的一般形式为: for(<初始化>;<条件表过式>;<增量>) 语句; 初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。 例如: for(i=1;i<=10;i++) 语句; 上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。 注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。 (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环

控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 (3).for循环可以有多层嵌套。 例如: for(;;) 语句; for(i=1;;i+=2) 语句; for(j=5;;) 语句; 这些for循环语句都是正确的。 main() { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) printf(%d %d\n,i,j); } 输出结果为: i j 0 0 0 1 0 2

1 0 1 1 1 2 用for循环求1+2+……+100的和: main() { int sn=0,i; for(i=1;i<=100;i++) sn+=i; /*1+2+……+100*/ printf(%d\n,sn); } 从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为: while(条件) 语句; while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 例如: #include stdio.h main() {

C语言循环练习

1以下不是死循环的语句是 C 。 A、for(i=10; ; i++ ) sum+=i; B、while (1){x++;} C、for(; (c=getchar())!=?\n?;) printf(“%c”, c); D、for(;; x+= i); 2以下程序的输出结果是 A main() { int x, i; for(i = 1; i <= 100; i++) { x = i; if( ++x % 2 == 0) if( ++x % 3 == 0 ) if( ++x % 7 == 0) printf(“%d “, x); } printf(“\n”); } A、28 70 B、39 81 C、42 84 D、26 68 3. 以下程序段的输出结果是 B int k, j, s; for(k = 2; k < 6; k++, k++) { s = 1; for(j = k; j < 6; j++) s += j; } printf(“%d\n”, s); A、15 B、10 C、24 D、9 4以下程序的输出结果是 B main() { int i, sum; for(i = 1; i < 6; i++) sum += i; printf(“%d\n” sum); } A、15 B、不确定 C、16 D、0 有以下程序 main() { int i; for(i=0; i<3; i++) switch(i)

{ case 1: printf("%d", i); case 2: printf("%d", i); default : printf("%d", i); } } 执行后输出结果是 A A、011122 B、120 C、012020 D、012 以下程序段的输出结果是 C 。 int n=10; while(n>7) { n--; Pr intf(“%d”, n ); } A、1098 B、10987 C、987 D、9876 下面程序的运行结果是 A #include main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); } A、0 B、1 C、8 D、-1 以下程序段的输出结果是 C int i, j, m = 0; for(i = 1; i <= 15; i += 4) for(j = 3; j <= 19; j += 4) m++; printf(“%d\n”, m); A、15 B、12 C、20 D、25 以下程序段的输出结果是 B int x= 3; do {pritnf(“%3d”, x-=2); } while (!(--x));

C语言循环结构练习题带答案

第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ?循环结构的嵌套 ?使用goto语句实现循环结构 ?穷举法程序设计方法 ?迭代程序设计方法 5.2练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 A.e==0 B.e!=1 C.e!=0 D.~e (2)下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句

(5)以下程序段C。 intx=-1; do { x=x*x; } while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误(6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C.k=0; do { ++k; }while(k<=0); D.s=3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } A.while(a) B.while(c) {if(!b)c;} {if(!b)break;c;} C.while(c) D.while(a)

C语言循环结构练习题带答案

第5章循环结构程序设计 基本知识点 while语句的使用格式和注意事项 do-while语句的使用格式和注意事项 for语句的使用格式和注意事项 break和continue语句在循环语句中的应用 循环结构的嵌套 使用goto语句实现循环结构 穷举法程序设计方法 迭代程序设计方法 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格

C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误(6)下列语句段中不是死循环的是__C__。 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; }(8)以下程序的输出结果是_B___。

c语言循环语句

Turbo C 2.0提供三种基本的循环语句: for语句、while语句和do-while语句。 一、循环语句 (一)、for循环它的一般形式为: for(<初始化>;<条件表过式>;<增量>) 语句; 初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。 例如: for(i=1;i<=10;i++) 语句; 上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。 (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 (3).for循环可以有多层嵌套。 例如: for(;;) 语句; for(i=1;;i+=2) 语句; for(j=5;;) 语句; 这些for循环语句都是正确的。 main() { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) printf(%d %d\n,i,j); }

输出结果为: i j 0 0 0 1 0 2 1 0 1 1 1 2 用for循环求1+2+……+100的和: main() { int sn=0,i; for(i=1;i<=100;i++) sn+=i; /*1+2+……+100*/ printf(%d\n,sn); } 从程序可以看出,使用循环语句可以大大简化代码。 (二)、while循环它的一般形式为: while(条件) 语句; while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 例如: #include stdio.h main() { char c; c='\0'; /*初始化c*/ while(c!='\n') /*回车结束循环*/ c=getche(); /*带回显的从键盘接收字符*/ } 上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c='\n',条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。

(完整版)C语言循环习题答案

循环习题集锦 一.选择题 1.for(i=0;i<10;i++);结束后,i 的值是;(10) A 9 B 10 C 11 D 12 2.下面程序的循环次数是:(D) int k=0; while(k<10) {if(k<1) continue; if(k==5) break; k++; } A. 5 B 6 C 4 D 死循环,不能确定循环次数 3.下面程序的输出结果是(10) main() { int s,k; for(s=1,k=2;k<5;k++) s+=k; printf(“%d\n”,s); } A 1 B 9 C 10 D 15

4.要使下面程序输出10 个整数,则在下画线处填入正确的数是:(c) for(i=0;i<= ;) printf(“%d\n”,i+=2); A 9 B 10 C 18 D 20 5.运行下面程序:(B) main() { int i=10,j=0; do { j=j+i; i--; }while(i>5); printf(“%d\n”,j); } 输出结果是: A 45 B 40 C 34 D 55 6.运行下面程序 #include “stdio.h” main() { int k=0,a=1; while(k<10) {

for( ; ;) { if((k%10)==0) break; else k--; } k+=11; a+=k; } printf(“%d %d\n”,k,a); } 则输出的结果是(C) A 21 32 B 21 33 C 11 12 D 10 11 7.以下叙述正确的是:(D) A.do---while 语句构成的循环不能用其他语句构成的循环来代替。 B.do---while 语句构成的循环只能用break 语句退出。 C.用do---while 语句构成的循环,在while 后的表达式为非零时结束循环。 D.用do---while 语句构成的循环,在while 后的表达式为零时结束循环。 8.有如下程序: main()

C语言循环控制练习题

循环控制练习题 1.设有程序段int k=10; while (k=0) k=k-1; 则下面描述中正确的是() A while循环执行10次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次 2.设有以下程序段int x=0,s=0; while(!x!=0)s+=++x;printf("%d",s) ;则() A 运行程序段后输出0 B 运行程序段后输出1 C 程序段中的控制表达式是非法的 D 程序段执行无限次 3、语句while(!E);中的表达式!E特等价于() A、E==0B、E!=1C、E!=0D、E==1 4、下面程序段的执行结果是() a=1;b=2;c=2; while(a

while(x<15) y++,x+=++y; printf("%d,%d",y,x); A、20,7 B、6,12 C、20,8 D 8,20 6、下面程序段的运行结果是() int n=0; while (n++<=2); printf("%d",n); A,2 B、3 C、4 D 有语法错误 7、设有程序段 t=0; while(printf("*")) {t++; if(t<3) break;}下面描述正确的是() A、其中循环控制表达式与0等价 B、其中循环控制表达式与’0‘等价 C 、其中循环表达式是不合法的 D、以上说法都不对 8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。 main()

相关主题