情景导入
某校某年级某班某位男生很爱哭,“wa”、“wa”、“wa”声音经常不绝于耳,现在请你通过编程来模拟他的哭声,他每发出一次哭声,则你输出一行——一个“wa”;
他哭了2次,我们可以这样写: #include<iostream> using namespace std; int main() { cout<<”wa”<<endl; cout<<”wa”<<endl; return 0; } | |
如果要哭50次,100次,1000次呢?
不会要打100条cout<<”wa”<<endl;吧?像这样,如果我们要重复做某件事,这时候,我们就得学习循环结构了!
什么是循环?
反复执行多次同样的操作,就是循环的思想。应用循环思想编写的程序,就是循环结构程序。重复的内容就是循环语句的循环体。在c++中,有for、while、do-while三种循环语句。我们先来简单认识一下for语句。
格式一:递增计数循环语句(从小到大,升序)
for(循环变量=初值 ; 循环变量<=终值 ; 循环变量++)
{
循环体(一条或一组语句)
}
例:
#include<iostream>
using namespace std;
int main()
{
for(int i=1; i<=100; i++)
cout<<"YES"<<endl;
return 0;
}
思考
以下程序运行的结果是什么?
for(int i=1; i<=4; i++)
cout<<"*"<<endl;
for(int i=4; i<=1; i++)
cout<<"*"<<endl;
for(int i=1; i>=4; i++)
cout<<"*"<<endl;
小结:
1、递增型for循环语句,初始值一般小于或者等于终止值。
2、递增型for循环语句,中间的比较条件一般是:循环变量<=终止值,而不是循环变量>=终止值。
格式二:递减型计数循环语句(从大到小,降序)
for(循环变量=初值; 循环变量>=终值; 循环变量--)
{
循环体;
}
例:
#include<iostream>
using namespace std;
int main()
{
for(int i=100; i>=1; i--)
cout<<"YES"<<endl;
return 0;
}
思考
以下程序运行的结果是什么?
for(int i=4; i>=1; i--)
cout<<"*"<<endl;
for(int i=1; i>=4; i--)
cout<<"*"<<endl;
for(int i=4; i<=1; i--)
cout<<"*"<<endl;
小结:
1、递减型for循环语句,初始值一般大于或者等于终止值。
2、递减型for循环语句,中间的比较条件一般是:循环变量>=终止值,而不是循环变量<=终止值。
(1)循环变量的初值和终值应该是同一种类型,可以是整型、字符型、布尔型这些有序数据,但不能为实型。
例如:
循环变量是浮点型:
for ( float i =3.5; i<=8.5;i++)
cout<<i;
i变量是浮点型,这种写法是错误的。
还有这样的写法:
for (int i=1.1; i<=9.9;i++)
cout<<i;
循环变量是整型,但赋值的数是小数也是错误的。
(2)for循环的各个部分都是可以灵活改变的,我们要根据实际情况,选择合适的语句。
完成例题6:
(3)循环变量不仅可以用来控制次数,还能被使用和输出。
例:请按照从小到大的顺序依次输出1~10内的所有正整数。每个数字一行。
如果是输出10个“#”号,你会这么写?
#include<iostream>
using namespace std;
int main()
{
for(int i=1; i<=10; i++)
cout<<”#”<<endl;
return 0;
}
如何把“#”变成1,2,3...10?
因为循环结构里的循环变量i从1变化到10;
所以可以借用循环变量i;
#include<iostream>
using namespace std;
int main()
{
for(int i=1; i<=10; i++)
cout<<i<endl;
return 0;
}
完成例题7,8:
(4)循环变量虽然可以被使用和输出,一般情况下不要随意在循环体内部修改循环变量的值,不然可能产生意想不到的效果。
#include<iostream>
using namespace std;
int main()
{
for(int i=1; i<=10; i++)
{
cout<<i<<endl;
i=i+3;
}
return 0;
}
被罚抄 查看测评数据信息
你是不是都有被罚抄的经历?比如,现在要你抄写一百行26个字母,你有什么快捷方法?我们可以用for循环来实现。
输入格式
不用输入
输出格式
输出100行26个字母(小写)
输入/输出例子1
输入:
输出:
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
……
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=0;i<100;i++)cout<<"abcdefghijklmnopqrstuvwxyz"<<endl;
return 0;
}
哭声 查看测评数据信息
某校某年级某班某位男生很爱哭,“wu”、“wu”、“wu”声音经常不绝于耳,现在请你通过编程来模拟他的哭声,请你输出50行“wu”。
输入格式
每行一个“wu",共50行。
输入/输出例子1
输入:
输出:
wu
wu
wu
wu
wu
wu
……
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=0;i<50;i++)cout<<"wu"<<endl;
return 0;
}
更多哭声 查看测评数据信息
某校某年级某班某位男生很爱哭,“wu”、“wu”、“wu”声音经常不绝于耳,现在请你通过编程来模拟他的哭声,请你输出100行“wu”。
输出格式
每行一个“wu",共100行。
输入/输出例子1
输入:
输出:
wu
wu
wu
wu
wu
wu
……
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=0;i<100;i++)cout<<"wu"<<endl;
return 0;
}
更多笑声 查看测评数据信息
小红是一个爱笑的女孩,“ha”、“ha”、“ha”声音经常不绝于耳,现在请你通过编程来模拟她的笑声。
输入格式
输入n,表示有n次笑声(n<=1000)
输出格式
输出n行,每行一个"ha"。
输入/输出例子1
输入:
3
输出:
ha
ha
ha
输入/输出例子2
输入:
5
输出:
ha
ha
ha
ha
ha
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)cout<<"ha"<<endl;
return 0;
}
两个两个数 查看测评数据信息
一年级小朋友刚学会数数,老师要求明明回家练习从0开始两个两个地数到n(n<1000),明明总是忘记怎样数,你能帮帮她吗
输入格式
输入一个整数n
输出格式
两个两个地数,从0数到n,每个数字之间用空格隔开
输入/输出例子1
输入:
10
输出:
0 2 4 6 8 10
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<n+2;i=i+2)cout<<i<<" ";
return 0;
}
五个五个数 查看测评数据信息
这天明明学习了五个五个地数,但她又忘记怎样数了,你能帮她从0开始五个五个地数到n吗
输入格式
一个整数n(n<1000)
输出格式
五个五个地数,从0数到n,每个数字之间用空格隔开
输入/输出例子1
输入:
25
输出:
0 5 10 15 20 25
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<=n;i=i+5)cout<<i<<" ";
return 0;
}
a到b (课程7) 查看测评数据信息
输入2个1000以内的正整数a和b,a < b,输出从a到b的所有整数,数字之间留一个空格。
输入格式
一行2个正整数:a和b,a < b,范围在[1,1000]。
输出格式
一行,从a到b的正整数。
输入/输出例子1
输入:
4 6
输出:
4 5 6
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++)cout<<i<<" ";
return 0;
}
2位偶数 (课程7) 查看测评数据信息
输出所有的2位偶数,数字之间留一个空格。
输出格式
一行,所有2位数偶数。
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=5;i<50;i++)cout<<i*2<<" ";
return 0;
}
从0开始(课程7) 查看测评数据信息
C语言编程中,数数喜欢从0开始。比如数数5次为: 0,1,2,3,4,其中的妙处只有高级的C程序员知道。
现在输入n,要你按照C程序员的方式数数。
输入格式
一行1个正整数:n,范围在[1,1000]。
输出格式
一行n个整数:0 1 2…。
输入/输出例子1
输入:
4
输出:
0 1 2 3
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a;
for(int i=0;i<a;i++)cout<<i<<" ";
return 0;
}
前面数 (课程7) 查看测评数据信息
如果你知道一个整数a,想输出a前面的N个数,怎么办?
输入格式
一行2个正整数:a和N,范围在[1,10000]。
输出格式
一行n个整数:……a-2 a-1
输入/输出例子1
输入:
10 5
输出:
5 6 7 8 9
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,n;
cin>>a>>n;
for(int i=a-n;i<a;i++)cout<<i<<" ";
return 0;
}
练习1 查看测评数据信息
请利用循环语句输出三次以下这三行金字塔:(提示:小心空格哦)
*
**
****
输入格式
无
输出格式
三个三行金字塔
输入/输出例子1
输入:
输出:
*
**
****
*
**
****
*
**
****
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=0;i<3;i++)cout<<" *"<<endl<<" **"<<endl<<"****"<<endl;
return 0;
}
奇数 (课程7) 查看测评数据信息
给定N,输出1到N之间的奇数。
输入格式
一行1个正整数:N,范围在[1,10000]。
输出格式
[1…N]内的正奇数。
输入/输出例子1
输入:
10
输出:
1 3 5 7 9
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i=i+2)cout<<i<<" ";
return 0;
}
练习4 查看测评数据信息
输入一个数n,请按从大到小依次输出1~n中3的倍数,数与数之间用空格隔开
输入格式
一个整数n(n<=10000)
输出格式
一行数字
输入/输出例子1
输入:
10
输出:
9 6 3
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=n;i>0;i--)if(i%3==0)cout<<i<<" ";
return 0;
}
7的倍数 (课程7) 查看测评数据信息
从小到大输出所有3位数中7的倍数的数。
输出格式
一行整数,之间用空格隔开。
输入/输出例子1
输入:
输出:
105 112……
#include<bits/stdc++.h>
using namespace std;
int main(){
for(int i=100;i<1000;i++)if(i%7==0)cout<<i<<" ";
return 0;
}
课后1 查看测评数据信息
现在有n个正方形的边长,求这些正方形的周长是多少?
输入格式
第一行:一个整数n
第二行:n个整数
输出格式
一行:n个整数
输入/输出例子1
输入:
4
3 5 4 6
输出:
12 20 16 24
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a;
cin>>n;
for(int i=0;i<n;i++){
cin>>a;
cout<<a*4<<" ";
}
return 0;
}
订班服 查看测评数据信息
402班要订班服了,班服分为大、中、小码,其中高145cm及以上高的要穿L码,高135cm-144cm的要穿M码,135cm以下的穿S码,现给出402班所有学生的高度(单位为cm),请输出每个学生所需要班服的码数
输入格式
第一行,一个整数n。(n<=60)
第二行,n个整数,为每个学生的高度。
输出格式
n行
每行1个字母
输入/输出例子1
输入:
5
130 140 142 145 136
输出:
S
M
M
L
M
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a;
cin>>n;
for(int i=0;i<n;i++){
cin>>a;
if(a>=145)cout<<"L"<<endl;
if(a>=135&&a<=144)cout<<"M"<<endl;
if(a<135)cout<<"S"<<endl;
}
return 0;
}
篮球赛 查看测评数据信息
这个学期,晨晨的班级跟小明班进行n场篮球友谊赛,作为裁判员的你是否能输出两个比赛结果吗?
输入格式
第一行:一个整数n,代表比赛场数(0≤n≤100)。
接下来n行,每一行两个整数,第一个整数代表晨晨班级得分,第二个整数代表隔壁班得分(两个整数都大于0小于等于100)。
输出格式
n行比赛结果:
如果晨晨班级胜利输出"chenchen win!"
如果小明班级胜利输出"xiaoming win!"
如果平局,输出"peace!"
输入/输出例子1
输入:
4
15 30
35 25
35 35
40 34
输出:
xiaoming win!
chenchen win!
peace!
chenchen win!
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,b;
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b;
if(a>b)cout<<"chenchen win!"<<endl;
if(a<b)cout<<"xiaoming win!"<<endl;
if(a==b)cout<<"peace!"<<endl;
}
return 0;
}