230 likes | 405 Views
循环语句. 循环结构是三大程序结构之一,是 C++ 逻辑编程的重点内容。顺序结构、选择结构只解决简单问题,是程序设计的基础,而循环结构则是程序设计的实际应用。顾名思义,所谓 循环 ,是指某些语句由于需要被反复执行的现象。 【 主要内容 】 三种循环语句( for 、 while 、 do-while )的格式和执行过程。. 例如,输出 10 个“*”,可用如下语句即可完成: cout << “**********”; 但如果要输出 1000 个“*”,再套用上行的写法就不现实了! 解决办法是:
E N D
循环结构是三大程序结构之一,是C++逻辑编程的重点内容。顺序结构、选择结构只解决简单问题,是程序设计的基础,而循环结构则是程序设计的实际应用。顾名思义,所谓循环,是指某些语句由于需要被反复执行的现象。循环结构是三大程序结构之一,是C++逻辑编程的重点内容。顺序结构、选择结构只解决简单问题,是程序设计的基础,而循环结构则是程序设计的实际应用。顾名思义,所谓循环,是指某些语句由于需要被反复执行的现象。 【主要内容】 三种循环语句(for、while、do-while)的格式和执行过程。
例如,输出10个“*”,可用如下语句即可完成:例如,输出10个“*”,可用如下语句即可完成: cout << “**********”; 但如果要输出1000个“*”,再套用上行的写法就不现实了! 解决办法是: 输出一个“*”,即cout << “*”;重复1000次。 #include <iostream> using namespace std; int main() { long i; for ( i = 1; i <=1000 ; i++ ) cout << “*" ; system(“pause”); return 0; }
for语句 表达式1 N 表达式2 Y 语句组1 表达式3 语句组2 for(表达式1;表达式2;表达式3) {语句组1(循环体)} {语句组2} for(循环变量赋初值;循环结束条件;循环变量增值)
0 1 sum i 5050 1 6 3 int main( ) { long i, sum=0; //定义变量,初始化 for (i=1; i<=100; i++) //for结构 sum=sum+i; // 循环体,多次执行 cout<<“sum=”<<sum<<endl; } 100 101 4 3 2 循环结束!! sum=5050 实际上是将i不停地累加到一起 真 真 真 真 真 真 真 假 0 1 3 6 10 5050 1 2 3 4 5 100 101
注意事项 1. for 先判断条件而后执行循环体,即有可能循环体一次也不被执行。如下语句中循环体s=s+x一次也不被执行: for ( x = 10; x < 0; x++ ) s = s + x; 2.循环变量的数据类型为:整型long 3. for 适宜循环次数或条件特别明显的情况。 4. for中三个表达式间只能用分号相隔,且即使三个表达式省略时,分号也不可省略。 5.当循环语句超过一条语句时,要用{ }将语句组合在一起,构成复合语句。 6. for中三个表达式,可以为多条语句。
模拟练习 练习1:求 S=2+4+……+100 练习2:求 S=1/1+1/2+1/3……+1/100 int main( ) { long i, sum=0; for (i=1; i<=50; i++) sum=sum+2*i; cout<<sum<<endl; } int main( ) { long i; double sum=0; for (i=1; i<=100; i++) sum=sum+(double)1/i; cout<<sum<<endl; }
int main( ) { char i, j ; for (i=‘a’,j=‘z’ ; i<j ; i++, j--) cout<<i<<j; cout<<endl; } 输出:azbycx.......lomn a b c ...... m n z y x ..... n m 真 真 真 真 真 假 ..... az by cx mn CR
以下循环结果如何? for ( i=0, k= -1; k=1; i++, k++) cout<<“****\n”; 1 10 以下循环最多执行_____次,最少执行_____次 for (i=0, x=0; i<=9&&x!=876 ; i++) cin>>x;
例题:计算n的阶乘,如10!,10!=1*2*3*…*10。 #include <iostream> using namespace std; int main() { long i,n,sum=1; cin>>n; for ( i = 1; i <=n; i++ ) sum=sum* i; cout<<sum<< endl; system(“pause”); return 0; }
假 表达式 真 语句组1 语句组2 while语句 while ( 表达式) {语句组} a=3; while(a<20) a=a+5; cout<<“a=“<<a; 当循环语句超过一条时,要用{ }将语句组组合在一起。
0 1 sum i 5050 3 6 1 求 1+2+3+……+100 int main( ) { long i=1,sum=0; //定义变量,初始化 while(i<=100) //构造循环 {sum=sum+i; // 循环体,多次执行 i=i+1; } cout<<“sum=”<<sum<<endl; //输出结果 } 100 101 2 3 4 循环结束!! sum=5050 实际上是将i不停地累加到一起 真 真 真 真 真 真 真 假 0 1 3 6 10 5050 1 2 3 4 5 100 101
注意事项 1.循环体如果为一个以上的语句,用{ }括起。 2.循环体内或表达式中必须有使循环结束的条件,即一定有一个循环变量。 3.while 先判断条件后执行循环体,即有可能循环体一次也不被执行。 4. while 适宜结束条件特别明显的情况。
看程序写结果 k=2; while(k!=0) {cout<<k;k--;} cout<<endl; 2 1 0 真 真 假 输出:21 2 1 回车
看程序写结果 int main( ) { int num=0; while(num<=2) { num++; cout<<num<<endl; } } 1 2 3 0 1 2 3 真 真 真 假 1<CR> 2<CR> 3<CR> 无
例题:统计a的个数 (1144) Description 输入若干个字符,它的终止符是’#’,计算输入的字符中字母'a’出现的次数(包括大小写)。 Input 输入若干个字符,以'#'结束. Output 字母'a’出现的次数 Sample Input huang# Sample Output 1
#include<iostream> using namespace std; int main() { char ch; long s=0; cin>>ch; while (ch!='#') { if ((ch=='a')||(ch=='A')) s=s+1; cin>>ch; } cout<<s<<endl; system(“pause”); return 0; }
A 语句组1 直到P为真 假 表达式 直到型循环 真 语句组2 do—while语句 do { 语句组} while(表达式);
求 1+2+3+……+100 int main( ) { int i=1,sum=0; //定义变量,初始化 do //构造循环 { sum=sum+i; // 循环体,多次执行 i=i+1; }while (i<=100); cout<<“sum=”<<sum<<endl; //输出结果 }
练习试题1142 Description 键入一个自然数x(x<10000),求这个自然数的所有约数之和s。 Input 键入一个自然数x Output 这个自然数的所有约数之和 Sample Input 6 Sample Output 12
练习试题1146 Description 求两个自然数m,n的最小公倍数。 Input 输入两个自然数m,n(0<=m,n<=10000) Output 输出最小公倍数 Sample Input 16 24 Sample Output 48
练习试题1148 Description 数学上把除了1和它本身,没有别的数能够整除它的自然数叫做素数(或质数)。现在由键盘输入一个自然数N,编程判断N是否是素数,是则输出“YES”,否则输出“NO”。 Input 输入一个自然数N Output 判断N是否为素数,是则输出“YES”,否则输出“NO” Sample Input 17 Sample Output YES
课堂作业 • 1142 1143 1144 • 1145 1146 1147 1148