C++基础语法3
YanSS_0416 · · 个人记录
人无时不刻地生活在大大小小的循环中,自觉或不自觉地重复着各种周而复始的工作, 对编程人来说,可以大大减少这些烦恼,因为我们可以把很多需要循环重复的工作交给电脑去做。要设计出能让电脑周而复始地工作的程序,我们就要学习使用循环语句。
一、for循环语句
(一)基本格式
for(循环控制变量初始化;条件表达式;增量表达式)
{
循环体语句块;
}
注意:
(1)循环控制变量——控制重复次数的变量,一般用i、j、k等变量来表示。
(2)循环控制变量初始化,表示该变量从多少开始。
(3)条件表达式,表示整个for循环语句满足当前条件继续,不满足时结束。
(4)增量表达式,表示循环控制变量每次增加或减少的幅度,使得循环控制变量不断靠近条件结束的终点。
(5)for语句适用于循环次数明显或者循环的起点及终点明显的问题。
(6)for()语句末尾不要写分号
(7)语句块指一个或多个语句,若为一个语句,可不用大括号
(二)for语句应用实例
1.单纯控制重复次数——输出n个'*’
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<"*";
}
上述程序的含义:
循环控制变量i从1到n逐个增加,每次输出一个*,这样程序运行的结果就是在屏幕上显示n个*
(1)i为循环控制变量,起到控制循环次数的作用,语句i=1,是给循环控制变量赋初始值,作为循环的起点;
(2)语句i<=n为循环的条件语句,表示当i<=n时执行循环,当i>n时结束循环;
(3)语句i++代表循环控制变量在每次循环后增加1。
2.输出1~n
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<i;
}
在上述程序中,循环控制变量i从1逐个增加,其变化规律为1、2、3、4、......、n,恰好与想要输出的内容一致,因此循环每执行一次,则输出i。
在此例中,循环控制变量i发挥的作用有两个:第一是控制循环次数,第二是作为输出内容。
3.输出n以内的奇数
int n;
cin>>n;
for(int i=1;i<=n;i+=2){
cout<<i;
}
在此例中,语句i+=2表示循环控制变量每次增加2,则其变化规律为1、3、5、......,恰好是按照奇数的规律在发生变化。
4.输出n以内的奇数和
int n,s=0;
cin>>n;
for(int i=1;i<=n;i+=2){
s=s+i;
}
cout<<s;
在上述程序中,循环控制变量i从1逐个增加,其变化规律为1、3、5、......,恰好是按照奇数的规律发生变化的。将循环控制变量i的值累加并存储到变量s中,变量s是累加器,其初始值为0(注意:变量s一定要有初始值)。
当n=5时,变量i和s的变化规律如下表所示
| 循环次数 | 第一次 | 第二次 | 第三次 | 第四次 | 第五次 |
|---|---|---|---|---|---|
| i | 1 | 3 | 5 | 7 | 9 |
| s | 1 | 4 | 9 | 16 | 25 |
思考:如果输出n以内的奇数积,变量s的初始值为多少?为什么?
二、while语句
(一)基本格式
while(条件表达式)
{
循环体语句块;
}
含义:表示当满足条件时,重复执行语句,反之结束。适用于循环次数不明显,只知道重复的条件或者结束的条件。
注意:
(1)为了能使用 while 循环正常终止,循环体中一定要有能使用循环条件变量改变的语句,即有可能使循环条件为假,否则循环永不结束,陷入“死循环”。
(2)while(条件表达式)后不需要写分号。
(3)有些情况while语句和for语句可以互换着使用。
(二)while语句应用实例
1.输出n以内的数字和
int n,i=0,s=0;
cin>>n;
while(i<=n){
s=s+i;
i++;
}
cout<<s;
本例实际上更适合用for语句实现,因为是明确次数的循环,在此使用while循环是为了对比for语句和while语句。
2.求能使s=1+2+3+......+n<m的最大n是多少
int m,s=0,n=0;
cin>>m;
while(s<m){
n++;
s=s+n;
}
cout<<n-1;
在上述程序中,当s<m时不断执行循环,进行累加运算,当s>=m(即不再满足s<m的条件)时结束循环。
思考:为什么输出n-1,而不是输出n呢?
三、终止循环语句
(一)break语句
含义:提前结束循环
实例:判断n是否是质数
int n,i;
cin>>n;
for(i=2;i<n;i++)
{
if(n%i==0) break;
}
if(i<n) cout<<"n是质数"<<endl;
else cout<<" n不是质数"<<endl;
如果n能够整除i,则i是n的因子,表示n不是质数,马上跳出当前循环,结束判断;
若没有跳出循环,则接着判断下一个可能是n的因子的数,直到把所有可能的因子判断完毕。
(二)continue语句
含义:跳过continue之后的语句,提前结束本次循环
实例:求n以内的奇数和
int n,i;
cin>>n;
for(i=1;i<=n;i++){
if(i%2==0) continue;
sum=sum+i;
}
四、习题
http://123.207.45.119/contest.php?cid=1020