0
点赞
收藏
分享

微信扫一扫

C++中的数组——习题1

Gaaidou 2022-01-20 阅读 52

AcWing 740. 数组变换

https://www.acwing.com/problem/content/742/

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main(){
    int a[100],b[100];
    for(int i=0;i<20;i++){
        cin>>a[i];
    }
    for(int i=0,j=19;i<20;i++,j--){
        b[j]=a[i];
    }
    for(int i=0;i<20;i++){
        printf("N[%d] = %d\n",i,b[i]);
    }
}

741. 斐波那契数列

https://www.acwing.com/problem/content/743/

#include<bits/stdc++.h>
using namespace std;

long long a,b[61],c[61];//在上下都行

int main()
{
    cin>>a;//输入多少需要处理的数
    for(int i=1; i<=a; i++)
    {
        cin>>b[i];//输入需要处理的数
    }
    for(int i=1; i<=a; i++)
    {
        c[0]=0;
        c[1]=1;//前两个数做单独处理
        if(b[i]==0)
            cout<<"Fib("<<b[i]<<") = "<<0<<endl;
        else if(b[i]==1)
            cout<<"Fib("<<b[i]<<") = "<<1<<endl;
        else
        {
            for(int j=2; j<=b[i]; j++)
                c[j]=c[j-1]+c[j-2];//前两个数相加得出第三个数
            cout<<"Fib("<<b[i]<<") = "<<c[b[i]]<<endl;
        }
    }
    return 0;
}

 742. 最小数和它的位置

https://www.acwing.com/problem/content/744/

#include<iostream>
using namespace std;

const int N =1010;

int main()
{
    int a[N];
    int n,x,y;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    x=a[0],y=0;//x为最小值,y为最小值下标
    for(int i=1;i<n;i++)//遍历数组
      if(a[i]<x){x=a[i],y=i;}//如果a[i]的值小于x,将a[i]的值赋给x,同时记录下标i
    cout<<"Minimum value: "<<x<<endl<<"Position: "<<y<<endl;
    
    return 0;
}

 744. 数组中的列

https://www.acwing.com/problem/content/746/

#include <bits/stdc++.h>
using namespace std;

int main()
{
  int c;
  char t;
  cin>>c>>t;
  double a[12][12];
  for(int i=0;i<12;i++)
  for(int j=0;j<12;j++)
  cin>>a[i][j];
  double s=0;
  for(int i=0;i<12;i++)
  s+=a[i][c];
  if(t=='S')printf("%.1lf",s);
  else printf("%.1lf",s/12);
  return 0;
}

 748. 数组的右下半部分

https://www.acwing.com/problem/content/750/

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    char m;
    cin>>m;
    double a[12][12],num=0;
    for(int i=0;i<12;i++)
    {
        for(int j=0;j<12;j++)
        {
            cin>>a[i][j];
            if(i+j>=12)
            num=num+a[i][j];
        }
    }
    if(m=='S') printf("%.1f",num);
    else printf("%.1f",num/66.0);
}

 AcWing 746. 数组的左下半部分

https://www.acwing.com/problem/content/748/

#include<iostream>
#include<cstring>

using namespace std;

double m[12][12];

int main()
{
    char a;
    cin>>a;
    for(int i=1;i<=12;i++)
        for(int j=1;j<=12;j++)
            cin>>m[i][j];
    double sum=0;
    int num=0;
    for(int i=1;i<=12;i++)
    {
        for(int j=i-1;j>=1;j--)
        {
            sum+=m[i][j];
            num++;
        }
    }
    if(a=='S')//S求和,M求平均值。
        printf("%.1f\n",sum);//保留一位小数
    else
        printf("%.1f\n",sum/num);//保留一位小数
    return 0;
}

 750. 数组的下方区域

https://www.acwing.com/problem/content/752/

#include <iostream>
using namespace std;
int main()
{
    char c;
    cin>>c;
    double a,res=0;
    for(int i=0;i<12;i++)
        for(int j=0;j<12;j++)
        {
            cin>>a;
            if(i>j&&i+j>11)res+=a;
        }
    printf("%.1lf",c=='S'?res:res/30);
}

 

举报

相关推荐

0 条评论