C C++基础知识——数组、循环_c++循环输出数组

目录

1.数组的右上半部分

2.数组的左上半部分

3.数组的上方区域:

4.数组的左方区域

5. 平方矩阵 I:

6.斐波那契数列

7.平方矩阵II


1.数组的右上半部分

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的右上半部分元素的平均值或元素的和。

右上半部分是指主对角线上方的部分,如下图所示,黄色部分为对角线,绿色部分为右上半部分:

f33a3c62152fe3b935c5456e3ebf92d8.png

输入格式

第一行输入一个大写字母,若为 S,则表示需要求出右上半部分的元素的和,若为 M,则表示需要求出右上半部分的元素的平均值。

接下来 12行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素 M[i][j]M[i][j]。

输出格式

输出一个数,表示所求的平均数或元素的和的值,保留一位小数。

数据范围

−100.0≤M[i][j]≤100.0

输入样例:

M
-6.5 8.2 0.7 9.0 0.8 -4.3 0.9 -0.0 -7.9 7.1 -1.6 4.6
-9.4 -9.0 1.5 -9.0 -5.1 -0.5 -2.8 -9.1 8.0 -6.9 -5.5 -6.6
-6.8 0.3 3.8 6.1 -9.9 -9.3 8.5 8.6 5.0 6.9 -3.6 -3.0
-0.8 -1.6 -7.3 -6.7 4.4 -9.1 -9.0 1.6 0.3 -6.0 6.0 -0.8
-0.8 -6.0 -4.9 -3.9 6.4 6.2 -4.2 -0.9 7.9 1.6 -8.2 -9.2
7.8 -5.8 -5.8 -5.8 7.2 0.5 -7.9 1.2 -6.8 -9.1 0.3 -1.4
4.3 -7.2 3.5 -6.4 -9.1 -6.0 3.5 -5.1 -5.6 -6.9 -9.1 -2.1
-7.6 -7.1 0.7 -1.7 5.0 -9.0 1.4 -6.2 7.6 4.8 -7.5 4.0
-0.2 0.3 -4.2 8.4 0.7 -6.4 -2.7 3.5 -0.9 3.7 0.9 -2.7
7.1 0.1 8.4 -5.1 -7.9 -0.5 -5.3 -5.7 -4.6 9.6 -8.3 7.0
9.6 -9.8 3.3 -9.9 -6.8 6.7 3.1 1.2 -9.5 -4.3 -1.7 -9.7
1.8 5.0 8.3 -0.7 -0.9 3.2 2.5 0.5 7.3 8.3 0.3 0.9

输出样例:

-1.2

#include<cstdio>

int main()
{
    double a[12][12];
    char c;
    scanf("%c",&c);
    for(int i=0;i<12;i++)
        for(int j=0;j<12;j++)
        scanf("%lf",&a[i][j]);
        
    double sum=0;
    int d=0;
    
    for(int i=0;i<12;i++)
        for(int j=i+1;j<12;j++)
        {
            sum+=a[i][j];
            d++;
        }
    if(c=='S')printf("%.1lf\n",sum);
    else  printf("%.1lf\n",sum/d);
    return 0;
}
2.数组的左上半部分

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的左上半部分元素的平均值或元素的和。

左上半部分是指次对角线上方的部分,如下图所示,黄色部分为对角线,绿色部分为左上半部分:

e4badd4890def3066912a509470d22e3.png

输入格式

第一行输入一个大写字母,若为 S,则表示需要求出左上半部分的元素的和,若为 M,则表示需要求出左上半部分的元素的平均值。

接下来 12行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1个数表示数组元素 M[i][j]。

输出格式

输出一个数,表示所求的平均数或和的值,保留一位小数。

数据范围

−100.0≤M[i][j]≤100.0

输入样例:

M
-0.4 -7.7 8.8 1.9 -9.1 -8.8 4.4 -8.8 0.5 -5.8 1.3 -8.0
-1.7 -4.6 -7.0 4.7 9.6 2.0 8.2 -6.4 2.2 2.3 7.3 -0.4
-8.1 4.0 -6.9 8.1 6.2 2.5 -0.2 -6.2 -1.5 9.4 -9.8 -3.5
-2.3 8.4 1.3 1.4 -7.7 1.3 -2.3 -0.1 -5.4 -7.6 2.5 -7.7
6.2 -1.5 -6.9 -3.9 -7.9 5.1 -8.8 9.0 -7.4 -3.9 -2.7 0.9
-6.8 0.8 -9.9 9.1 -3.7 -8.4 4.4 9.8 -6.3 -6.4 -3.7 2.8
-3.8 5.0 -4.6 2.0 4.0 9.2 -8.9 0.5 -3.9 6.5 -4.3 -9.9
-7.2 6.2 -1.2 4.1 -7.4 -4.6 4.7 -0.4 -2.2 -9.1 0.4 -5.8
9.1 -6.4 9.2 0.7 10.0 -5.7 -9.7 -4.4 4.7 4.7 4.9 2.1
-1.2 -6.2 -8.2 7.0 -5.3 4.9 5.5 7.2 3.4 3.2 -0.2 9.9
-6.9 -6.2 5.1 8.5 7.1 -0.8 -0.7 2.7 -6.0 4.2 -8.2 -9.8
-3.5 7.7 5.4 2.8 1.6 -1.0 6.1 7.7 -6.5 -8.3 -8.5 9.4

输出样例:

-0.8


#include<cstdio>

int main()
{
    char t;
    double a[12][12];
    scanf("%c",&t);
    for(int i=0;i<12;i++)
        for(int j=0;j<12;j++)
        scanf("%lf",&a[i][j]);
        
    double sum=0;
    int c=0;
    for(int i=0;i<12;i++)
        for(int j=0;j<=10-i;j++)
        {
            c++;
            sum+=a[i][j];
            
        }
    if(t=='S')printf("%.1lf",sum);
    else printf("%.1lf",sum/c);
    
    return 0;
}
3.数组的上方区域:

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的上方区域元素的平均值或元素的和。

数组的两条对角线将数组分为了上下左右四个部分,如下图所示,黄色部分为对角线,绿色部分为上方区域:

b553d558d9efe79c36d993fcfdd8463e.png

输入格式

第一行输入一个大写字母,若为 S,则表示需要求出上方区域的元素的和,若为 M,则表示需要求出上方区域的元素的平均值。

接下来 12 行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素 M[i][j]M[i][j]。

输出格式

输出一个数,表示所求的平均数或和的值,保留一位小数。

输出结果与标准答案据对误差不超过 0.1 即视为正确。

数据范围

−100.0≤M[i][j]≤100.0

输入样例:

S
-4.8 -8.0 -2.9 6.7 -7.0 2.6 6.5 1.7 1.9 5.6 -1.6 -6.3
-4.3 1.5 8.7 -0.3 5.4 -9.3 4.8 7.0 3.6 -8.3 -1.0 1.3
-9.9 9.7 -6.3 5.8 2.9 2.9 -7.7 4.9 -0.6 7.2 6.4 7.7
2.8 -5.8 -0.0 2.2 4.0 7.7 -3.0 -7.5 -3.5 9.7 -4.3 -8.6
-1.8 -0.1 5.4 0.6 9.9 -3.7 -1.1 0.8 -0.2 -0.0 9.9 4.5
3.0 -3.9 2.1 -9.7 5.5 9.4 -4.6 3.3 -9.6 5.1 -4.5 1.5
4.3 -5.4 -7.9 9.2 -7.7 -9.6 -1.5 -1.6 -7.2 2.0 -3.7 -0.7
8.0 2.8 -4.1 7.1 8.4 -5.6 3.9 -9.7 -1.1 3.0 -8.5 -3.3
1.7 5.1 0.1 9.2 4.5 9.7 7.2 8.6 8.7 1.1 6.7 0.3
-3.6 -7.1 -8.9 7.1 -5.9 1.6 -7.4 6.7 3.9 4.3 -2.4 -3.7
8.9 -6.2 5.0 -8.6 -1.3 -8.8 2.6 8.9 5.5 9.0 -2.2 -4.4
5.7 3.7 1.8 -2.1 -7.3 -7.9 4.7 6.0 3.3 -2.8 1.4 -6.9

输出样例:

21.7
#include<cstdio>

int main()
{
    char t;
    double a[12][12];
    scanf("%c",&t);
    
    for(int i=0;i<12;i++)
        for(int j=0;j<12;j++)
        scanf("%lf",&a[i][j]);
     
    double n=0,s=0;   
    for(int i=0;i<=4;i++)
        for(int j=i+1;j<=10-i;j++)
        {
            s+=a[i][j];
            n++;
        }
    if(t=='S')printf("%.1lf",s);
    else printf("%.1lf",s/n);
    return 0;
}
4.数组的左方区域

输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的左方区域元素的平均值或元素的和。

数组的两条对角线将数组分为了上下左右四个部分,如下图所示,黄色部分为对角线,绿色部分为左方区域:

96bc118d95114e0b30dd33f5b89cb0a2.png

输入格式

第一行输入一个大写字母,若为 S,则表示需要求出左方区域的元素的和,若为 M,则表示需要求出左方区域的元素的平均值。

接下来 12 行,每行包含 12 个用空格隔开的浮点数,表示这个二维数组,其中第 i+1 行的第 j+1 个数表示数组元素 M[i][j]

输出格式

输出一个数,表示所求的平均数或和的值,保留一位小数。

数据范围

−100.0≤M[i][j]≤100.0

输入样例:

S
4.7 -3.3 -2.3 4.5 -7.0 8.7 -4.1 -3.0 -7.6 6.3 -6.6 -4.7
-7.2 9.3 -7.6 9.1 9.2 9.0 5.5 -7.5 -9.3 -1.6 -3.5 -4.2
0.5 -7.5 -8.3 -9.0 -6.4 3.8 0.1 -3.5 7.9 2.1 2.4 -6.2
7.0 5.7 -9.0 -5.8 1.6 2.6 -9.2 -6.2 4.6 8.2 -8.3 -1.4
3.8 -9.9 6.2 -2.5 -3.5 9.4 1.6 7.0 3.3 -0.5 6.7 6.0
1.6 -3.8 5.0 8.8 4.2 7.7 0.7 7.4 7.9 -5.9 4.4 3.3
3.7 6.2 6.7 -1.4 6.1 -6.0 8.5 9.1 5.7 -4.2 5.9 -3.5
5.0 0.3 2.2 -3.6 6.3 -10.0 9.5 -4.7 2.7 8.1 7.5 -8.4
-5.7 -0.3 -3.7 -3.3 7.7 9.3 -1.3 1.0 0.3 1.9 9.9 9.0
-7.4 1.3 -9.6 -3.6 2.2 3.4 -3.6 3.5 8.3 0.5 9.7 -6.8
1.0 -2.7 -1.5 5.4 -6.5 -3.7 5.6 8.0 -9.9 0.1 2.2 7.6
5.6 4.3 1.5 -0.8 5.8 -5.1 5.5 6.2 -5.8 8.8 -0.6 -2.3

输出样例:

13.3
#include<cstdio>

int main()
{
    char t;
    double a[12][12];
    scanf("%c",&t);
    
    for(int i=0;i<12;i++)
        for(int j=0;j<12;j++)
        scanf("%lf",&a[i][j]);
    
    double d,s;
    for(int i=0;i<=5;i++)
        for(int j=0;j<i;j++)
        {
            s+=a[i][j];
            d++;
        }
    for(int i=6;i<=10;i++)
        for(int j=0;j<=10-i;j++)
        {
            s+=a[i][j];
            d++;
        }    
    if(t=='S')printf("%.1lf",s);
    else printf("%.1lf",s/d);
    return 0;
}
5. 平方矩阵 I:

输入整数 N,输出一个 N阶的回字形二维数组。

数组的最外层为 1,次外层为 2,以此类推。

输入格式

输入包含多行,每行包含一个整数 NN。

当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。

输出格式

对于每个输入整数 N,输出一个满足要求的 NN 阶二维数组。

每个数组占 N行,每行包含 N 个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

数据范围

0≤N≤100

输入样例:

1
2
3
4
5
0

输出样例:

1

1 1
1 1

1 1 1
1 2 1
1 1 1

1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

#include <iostream>

using namespace std;
int main()
{
    int n;
    while(cin>>n,n)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                int up=i,down=n-i+1,left=j,right=n-j+1;
                cout<<min(min(up,down),min(left,right))<<" ";
            }
            cout<<endl;
        }
      cout<<endl;  
    }
    
    return 0;
}
6.斐波那契数列

输入整数 N,求出斐波那契数列中的第 NN 项是多少。

斐波那契数列的第 0 项是 0,第 1 项是 1,从第 2 项开始的每一项都等于前两项之和。

输入格式

第一行包含整数 T,表示共有 T 个测试数据。

接下来 T 行,每行包含一个整数 N。

输出格式

每个测试数据输出一个结果,每个结果占一行,

结果格式为 Fib(N) = x,其中 NN 为项数,xx 为第 NN 项的值。

数据范围

0≤N≤60

输入样例:

3
0
4
2

输出样例:

Fib(0) = 0
Fib(4) = 3
Fib(2) = 1

#include<cstdio>

long long  f[60];

int main()
{
    int n;
    scanf("%d",&n);
    f[0]=0,f[1]=1;
    for(int i=0;i<60;i++)
        f[i+2]=f[i+1]+f[i];
    
    while(n--)
    {
        int x;
        scanf("%d",&x);
        printf("Fib(%d) = %lld\n",x,f[x]);
    }
    
    return 0;
}
7.平方矩阵II

输入整数 N,输出一个 N 阶的二维数组。

数组的形式参照样例。

输入格式

输入包含多行,每行包含一个整数 N。

当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。

输出格式

对于每个输入整数 N,输出一个满足要求的 N 阶二维数组。

每个数组占 N 行,每行包含 N 个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

数据范围

0≤N≤100

输入样例:

1
2
3
4
5
0

输出样例:

1

1 2
2 1

1 2 3
2 1 2
3 2 1

1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1

1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1

#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
    int n;
    int a[100][100];
    while(cin>>n,n--)
    {
        for(int i=0;i<=n;i++)
        {
            a[i][i]=1;
            for(int j=i+1,k=2;j<=n;j++,k++)a[j][i]=k;
            for(int j=i+1,k=2;j<=n;j++,k++)a[i][j]=k;
            
        }
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=n;j++)
            {
                cout<<a[i][j]<<' ';
            }
            cout<<endl;
        }
        cout<<endl;
    }
    return 0;
}

还有一种规律是|i-j|+1

96fdd56313aa44098143d44c8c15574c.png

#include<iostream>
#include<cstdio>
#include<cmath>

using namespace std;

int main()
{
    int n;
    int a[100][100];
    while(cin>>n,n--)
    {
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=n;j++)
            {
                
                a[i][j]=abs(i-j)+1;
                cout<<a[i][j]<<' ';
            }
            cout<<endl;
        }
        cout<<endl;
    }
    return 0;
}

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值