当前位置:
文档之家› [电脑基础知识]C语言5章循环控制
[电脑基础知识]C语言5章循环控制
}
5.2.2 for循环语句使用说明
1、for语句可以取代while语句或do-while 语句,尤其对于确定循环次数的循环,使用 for语句让程序结构更加直观和容易理解。
2、for语句中()中的三条表达式语句可以省 略,即可以将它们写在程序其他地方,但是 它们之间的分号“ ;”不可省略。
如何选择循环语句
scanf(“%f”, &x); sum=sum+x; /* 累加到变量sum中 */ i++; /*循环控制变量进行更新自增1 */ }
【例5.1】 编写一个程序,用户从键盘输入整数n,计算 s=2+4+6+8+…+2n并输出计算结果s。
程序设计分析: (1)s实际上是n个整型数据项的和,这些数据项分别是2、4、 6、…、2n; (2)利用循环结构,在每次循环中
do
{
x=2*i;
/* 计算累加第i项 */
s += x ;
/* 累加 */
i++;;
/* i自增1 */
} while ( i<=n ) ; /*注意分号不能遗漏 */
printf ( “s=%d\n”, s );
}
5.1.4 do-while语句使用说明
1、do-while语句与while语句的使用方法相 同,都由循环继续条件来决定循环体语句 是否继续被重复执行。
}
5.3流程转向语句
• break语句: break;
作用:强行结束循环, 跳出本层循环转向循 环体外的下一条语句。
通常与if语句在一起使 用:
if(条件表达式) break;
例如:
#include <stdio.h> void main ( ) { int i=1, s=0;
while ( i<100 ) { s+=i;
printf (“s=%d”, s ); }
5.4 循环结构程序举例
【例5.11】编写一个程序,接收用户从键盘输入的 字符,当用户输入回车时表示确认输入,统计用户 输入了多少个字符(不含回车符)。
程序设计分析: 1)无法预知循环的执行次数; 2) 使用循环来接收用户的输入,每次接收一个 字符都判断以下是否是回车符,如不是则把计 数变量的值增加1。
#include <stdio.h>
void main ( )
{ char c;
int i=0;
/*计数变量初始化*/
printf (“请输入字符串(以回车确认):\n”);
c=getchar( );
/*接收字符*/
while (c != ‘\n’)
/*判断是否是结尾*/
{ i++;
/*计数增加1*/
printf ( “%f\n”, sum );
}
【例5.3】用do-while语句完成【例5.1】的要求;计算 s=2+4+6+8+…+2n并输出计算结果s。
void main( )
{ int i=1, x, n, s=0 ;
printf( “请输入n的值:” );
scanf ( “%d”, &n );
for( i=1; i<= n; i++ )
{ j=1; /*循环控制变量初始化 */
x=1;
while( j<=i )
内
{ x *= j; /*把j累乘到x中*/
层
j++; /*循环控制变量自增*/ 循
外 层 循
}
环
环
s += x; /* 累加到s变量中 */
}
printf(“s=%d\n”, s ); /*显示结果*/
#include <stdio.h>
void main()
{
float x,sum=0; /*定义并初始化变量*/
int i;
/*定义并初始化循环控制变量*/
printf ( “请输入数据:” );
for ( i=1; i<=20; i++ )
{ scanf(“%f, &x); /* 输入一个数 */
c=getchar( );
/*继续接收字符*/
}
printf(“字符串中共%d个字符!”, i );
}
【例5.12】编写程序完成功能:输入一个大于或等于0 的整数,计算它是一个几位数(0算一位整数)。
#include <stdio.h>
void main ( )
{ int x , n;
printf (“请输入一个整数:”);
/*定义并初始化变量*/
printf ( “请输入n的值:”) ;
scanf ( “%d” , &n ) ;
/* 输入n的值 */
for( i=1; i<= n; i++ )
{ x = 2*;
/* 计算要累加的数据项 */
s += x;
/* 累加到s变量中 */
}
printf ( “s=%d\n”, s );
【例5.7】编写程序,计算s=1!+2!+3!+...+n!,其中n是由 用户输入的整数(小于8),计算完成后显示结果。
#include <stdio.h> void main( )
int i,j,x,s=0;
{ 定义并初始化变量; 请输入n的值;
j=1; x=1; while(j<=i)
for( i=1; i<= n; i++ ) /*外层循环*/{
用相似编程方法求以下各式:
S=1+3+5+…+2n-1; S=1+1/3+1/5+….+1/(2n-1); S=1+1/2+1/3+1/4+…1/n; S=2/1+3/2+5/3+8/5+…;前n项之和. S=1!+2!+3!+…+n!
5.1.2 while语句使用说明
1、 while语句是先判断条件,然后决定是否执行循 环体。
【例5.9】计算1000以内所有不能被3整数的正整数 之和并显示结果。
#include <stdio.h> void main ( ) { int i, s=0;
for (i=1; i<1000; i++) { if ( i%3 == 0) { continue ; } /*结束本轮循环*/ s += i ; }
2、为使循环能正常结束,应保证每次执行循环体后, 表达式的值会有一种向“假”变化的趋势 。
如 i=5; while(i>0) { x++; }
3、在进入循环之前应做好有关变量的初始化赋值操 作。如上例中,累加变量s初始化为0,i变量初始 化为1。
5.1.3 do-while语句(”直到型”循环)
一般形式:
{ 计算i!值;
/*内层循环计算ixj+!=*+/x;*j;
将i!的值累加到s中;/*累加到s中}*/
}
/*for循环结束*/
显示计算结果;
}
#include <stdio.h>
void main( )
{ int i,j,x,n,s=0;
printf(“请输入n的值:”);
scanf(“%d”, &n);
(值非0);如果为真,则执行循环体语句,接着执行表达 式3,再判断表达式2的值;如此重复执行,直到表达式2的 值为0终止循环,跳转到循环体之后的语句执行。
for ( 循环变量赋初值;循环继续条件;循环变量更新 ) { 循环体语句}
【例5.6】 使用for循环语句实现例【5.2】的要求,用户从键 盘输入20个数,求它们的和并输出结果。
if ( s>999 ) { break ; } /*终止循环*/
} printf (“s=%d”, s ); }
注意:break语句只能跳出一层循环,如果它位于多层嵌套 循环的内层,那么只能终止break语句所在的那层循环。
int i, j; for (i=0; i<N; i++ ) { for (j=0; j<N; j++ )
do {
循环体语句 }while(表达式);
功能:先执行循环体语句,然后计算表达式的值。若 表达式值为真(值非0),继续执行循环;否则当表 达式的值假(值为0)时,循环结束,执行do-while语 句的后续语句。
【例5.4】用do-while语句完成【例5.2】的要求,用户从键 盘输入20个数,求它们的和并输出结果。
{ if (j>100) { break; } /*跳出内层循环*/
} if (i>100 ) { break; } /*跳出外层循环*/ }
• continue语句 continue;
功能:跳过当前循环体剩余 语句,直接开始执行下 一轮循环。
通常与if语句在一起使用:
if(条件表达式) continue;
【例5.2】 编写一个程序,用户从键盘输入20个数,求 它们的和并输出结果。
程序设计分析:使用循环结构,每次输入一个数x,将它累 加到变量sum上,重复执行20次这样的操作,便得到最后的 结果。
float x,sum=0; /*定义并初始化变量*/ int i=1; /*定义并初始化循环控制变量*/ printf (“请输入数据:\n”); while(i<=20) /*循环条件*/ {