第三讲 循环语句
1.偶数
编写一个程序,输出 1 到 100之间(包括 1 和 100)的全部偶数。
输入格式
无输入。
输出格式
输出全部偶数,每个偶数占一行。
输入样例
No input
输出样例
2
4
6
...
100
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
for(int i=1;i<=100;i++)
{
if(i%2==0) cout<<i<<endl;
}
return 0;
}
2.奇数
输入一个整数 X,输出 1 到 X之间(包括 1 和 X)的全部奇数。
输入格式
一个整数 X。
输出格式
输出所有满足条件的奇数,每个数占一行。
数据范围
1≤X≤1000
输入样例:
8
输出样例:
1
3
5
7
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int x;
cin>>x;
for(int i=1;i<=x;i++)
{
//判断奇数是%2的结果不等于0
if(i%2!=0) cout<<i<<endl;
}
return 0;
}
3.正数
输入 6个实数,它们要么是正数,要么是负数。
请你统计并输出正数的个数。
输入格式
六个数字,每个占一行。
输出格式
输出格式为 x positive numbers
,其中 x 为正数的个数。
数据范围
输入数字的绝对值不超过 100。
输入样例:
7
-5
6
-3.4
4.6
12
输出样例:
4 positive numbers
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
//因为要从0统计>=0数的个数,所以s最开始定义 = 0;
int s = 0;
for(int i=0;i<6;i++)
{
//题目描述中输入可能是浮点数,所以直接输出浮点数
float x;
cin>>x;
if(x>0) s++;
}
printf("%d positive numbers",s);
return 0;
}
4.连续奇数的和1
给定两个整数 X 和 Y,输出在他们之间(不包括 X 和 Y)的所有奇数的和。
输入格式
第一行输入 X,第二行输入 Y。
输出格式
输出一个整数,表示所有满足条件的奇数的和。
数据范围
−100≤X,Y≤100
输入样例1:
6
-5
输出样例1:
5
输入样例2:
15
12
输出样例2:
13
输入样例3:
12
12
输出样例3:
0
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
//由于不知道x和y谁是最大值,所以在进行求和前先判断xy的大小,若x>y则进行交换.
if(x>y)
{
int t = x;
x = y;
y = t;
}
int s = 0;
for(int i = x+1;i<y;i++)
{
if(i%2!=0) s+=i;
}
cout<<s<<endl;
return 0;
}
5.最大数和它的位置
给定 100 个整数,请你找出其中最大的数字,以及它的输入位置(位置从 1 开始)。
输入格式
共 100 行,每行包含一个整数。
输出格式
第一行输出最大的数字。
第二行输出该数字的输入位置。
数据范围
1≤输入数字≤50000
保证输入数字互不相同。
输入样例:
22229
48558
24992
4755
11923
...
20213
输出样例:
48558
2
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int a,b;
for(int i=1;i<=100;i++)
{
//每次输入新的值后都进行对比是否比当前保存的最大值大,若大则更换.
int x;
cin>>x;
if(x>b)
{
a=i;
b = x;
}
}
cout<<b<<endl<<a<<endl;
return 0;
}
6.递增序列
读取一系列的整数 X,对于每个 X,输出一个 1,2,…,X 的序列。
输入格式
输入文件中包含若干个整数,其中最后一个为 0,其他的均为正整数。
每个整数占一行。
对于输入的正整数,按题目要求作输出处理。
对于最后一行的整数 0,不作任何处理。
输出格式
对于每个输入的正整数 X,输出一个从 1 到 X 的递增序列,每个序列占一行。
数据范围
1≤X≤100
输入样例:
5
10
3
0
输出样例:
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
//由于当读取到零0的时候停止,所以先设计死循环while(1),当读取到0时候break while
//每次输出一行后换行,所以再for循环结束后再换行.
while(1)
{
int x;
cin>>x;
if(x==0) break;
else
{
for(int i=1;i<=x;i++)
{
cout<<i<<" ";
}
cout<<endl;
}
}
return 0;
}
7.连续整数相加
读入两个整数值 A 和 N,计算从 A 开始的 N 个连续整数的和。
注意,如果读入的 N为 0 或负数,则继续读取数字直至读入 N 值为正整数为止。
输入格式
共一行,包含整数 A 和若干个整数 N(不超过 100 个)。
输出格式
一个整数,表示从 A 开始的 N 个连续整数的和。
数据范围
1≤A≤100,
−100≤N≤100
输入样例1:
3 2
输出样例1:
7
输入样例2:
3 -1 0 -2 2
输出样例2:
7
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
//因为b可能为<=0所以要一直输入知道b>0停止.
while(b<=0)
{
cin>>b;
}
int s = 0;
//相加从本身到本身后b个数(包含本身)
for(int i=0;i<b;i++)
{
s +=(a+i);
}
cout<<s<<endl;
return 0;
}
8.约数
输入一个整数 N,按照从小到大的顺序输出它的全部约数。
输入格式
一个整数 N。
输出格式
输出全部约数,每个约数占一行。
数据范围
1≤N≤1000
输入样例:
6
输出样例:
1
2
3
6
参考代码:
#include <cstdio>
int main()
{
int n=0;
scanf("%d",&n);
//约数就是n%i为0的数.
for(int i=1;i<=n;i++)
{
if(n%i==0) printf("%d\n",i);
}
return 0;
}
9.PUM
输入两个整数 N 和 M,构造一个 N 行 M 列的数字矩阵,矩阵中的数字从第一行到最后一行,按从左到右的顺序依次为 1,2,3,…,N×M。
矩阵构造完成后,将每行的最后一个数字变为 PUM。
输出最终矩阵。
输入格式
共一行,包含两个整数 N 和 M。
输出格式
输出最终矩阵,具体形式参照输出样例。
数据范围
1≤N,M≤20
输入样例:
7 4
输出样例:
1 2 3 PUM
5 6 7 PUM
9 10 11 PUM
13 14 15 PUM
17 18 19 PUM
21 22 23 PUM
25 26 27 PUM
参考代码:
#include <cstdio>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int count=1;
//for循环中第一个for循环确定行,第二个for循环确定列
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(count%n==0)
{
count++;
printf("PUM\n"); //每行以pum结尾所以记得换行.
}
else
{
printf("%d ",count);
count++;
}
}
}
return 0;
}
10.余数
输入一个整数 N,请按顺序输出 11到 10000之间(不包括 1 和 10000)的所有除以 N余 2 的数字。
输入格式
一个整数 N。
输出格式
输出所有满足条件的数字,从小到大每行输出一个。
数据范围
2<N<10000
输入样例:
13
输出样例:
2
15
28
41
...
参考代码:
#include <cstdio>
int main()
{
int x;
scanf("%d",&x);
for(int i=2;i<10000;i++)
{
if(i%x==2) printf("%d\n",i);
}
return 0;
}
11.六个奇数
读取一个整数 X,输出 X之后的 6 个奇数,如果 X 也是奇数,那么它也算作 6个奇数之一。
输入格式
一个整数 X。
输出格式
所有满足条件的奇数,每个占一行。
数据范围
1≤X≤100
输入样例:
9
输出样例:
9
11
13
15
17
19
参考代码:
#include <cstdio>
int main()
{
int x;
scanf("%d",&x);
int count=0;
//输入6个结束,所以count<6
for(int i=x;count<6;i++)
{
if(i%2!=0)
{
count++;
printf("%d\n",i);
}
}
return 0;
}
12.乘法表
输入一个整数 N,输出 N的乘法表,如下:
1 x N = N
2 x N = 2N
...
10 x N = 10N
输入格式
一个整数 N。
输出格式
输出 N的乘法表,具体形式参照输出样例。
数据范围
1<N<1000
输入样例:
140
输出样例:
1 x 140 = 140
2 x 140 = 280
3 x 140 = 420
4 x 140 = 560
5 x 140 = 700
6 x 140 = 840
7 x 140 = 980
8 x 140 = 1120
9 x 140 = 1260
10 x 140 = 1400
参考代码:
#include <cstdio>
int main()
{
int x;
scanf("%d",&x);
for(int i=1;i<=10;i++)
{
printf("%d x %d = %d\n",i,x,i*x);
}
return 0;
}
13.实验
医学部一共进行了 N 场动物实验。
共有三种小动物可用来实验,分别是青蛙、老鼠和兔子。
每次实验都会选取其中一种动物来参与实验,选取数量若干。
现在请你统计一下医学部一共用了多少小动物,