C++ 语法习题(2)

                                               第三讲 循环语句

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 场动物实验。

共有三种小动物可用来实验,分别是青蛙、老鼠和兔子。

每次实验都会选取其中一种动物来参与实验,选取数量若干。

现在请你统计一下医学部一共用了多少小动物,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cocobol0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值