大一寒假训练一(二维数组和结构体)

版权声明:欢迎转载,转载请标明作者和出处。 https://blog.csdn.net/ljw_study_in_CSDN/article/details/86019595

基础题就不解释了,稍微要思考的题再注释一下。

nefu 951 二维矩阵最大值

#include <stdio.h>
int main()
{
    int i,j,m,n,max1,max2,max,a[100][100];
    while(scanf("%d%d",&m,&n)!=-1)
    {
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        }
        max=a[1][1];
        max1=max2=1;
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                if(a[i][j]>max)
                {
                    max=a[i][j];
                    max1=i;
                    max2=j;
                }
            }
        }
        printf("%d %d %d\n",max1,max2,max);
    }
    return 0;
}

nefu 953 矩阵相加

#include <stdio.h>
int main()
{
    int a[100][100],b[100][100],i,j,m,n,s[100][100];
    while(scanf("%d%d",&m,&n)!=-1)
    {
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        }
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            scanf("%d",&b[i][j]);
        }
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                s[i][j]=a[i][j]+b[i][j];
                if(j==n)printf("%d\n",s[i][j]);
                else printf("%d ",s[i][j]);
            }
        }
    }
    return 0;
}

nefu 952 二维矩阵对角线和

#include <stdio.h>
int main()
{
    int a[100][100],i,j,m,s;
    while(scanf("%d",&m)!=-1)
    {
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
                scanf("%d",&a[i][j]);
        }
        s=0;
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
            {
                if(i==j)
                    s=s+a[i][j];
                if(i+j==m+1)
                    s=s+a[i][j];
            }
        }
        printf("%d\n",s);
    }
    return 0;
}

nefu 954 矩阵相乘

#include <stdio.h>
int main()
{
    int m,i,j,k,a[20][20],b[20][20];
    while(scanf("%d",&m)!=-1)
    {
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
                scanf("%d",&a[i][j]);
        }
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
                scanf("%d",&b[i][j]);
        }
        int s[20][20]={0};
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
            {
                for(k=1;k<=m;k++)
                s[i][j]=s[i][j]+a[i][k]*b[k][j];
            }
        }
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=m;j++)
            {
                if(j==m)printf("%d\n",s[i][j]);
                else printf("%d ",s[i][j]);
            }
        }
    }
    return 0;
}

nefu 955 五人帮

#include <stdio.h>
int main()
{
    int m,n,i,j,k,a[11][11],s,max;
    while(scanf("%d%d",&m,&n)!=-1)
    {
        for(i=0;i<=m+1;i++)
        {
            for(j=0;j<=n+1;j++)
            {
                    if(i>=1&&i<=m&&j>=1&&j<=n)scanf("%d",&a[i][j]);
                    else a[i][j]=0;//在原二维矩阵外面再加一层0
            }
        }
        max=0;
        for(i=0;i<=m+1;i++)
        {
            for(j=0;j<=n+1;j++)
            {
                if(i>=1&&i<=m&&j>=1&&j<=n)
                {
                    s=a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1];
                    if(s>max)
                    max=s;
                }
            }
        }
        printf("%d\n",max);
    }
    return 0;
}

nefu 1053 cc-test9-01结构体应用

#include <bits/stdc++.h>
using namespace std;
struct student
{
    char num[10],name[30];
    double score;
};
int main()
{
    int n,i;
    while(scanf("%d",&n)!=-1)
    {
        student stu[100];
        getchar();
        for(i=1;i<=n;i++)
        scanf("%s %[^\n] %lf",stu[i].num,stu[i].name,&stu[i].score);
        for(i=1;i<=n;i++)
        printf("%s  %s  %.2lf\n",stu[i].num,stu[i].name,stu[i].score);
    }
    return 0;
}

学了结构体还是很有用的,学了之后能轻松解决多个字符串问题

这里学到了一种很好的不跳过空格输入字符串的写法

char s[100];
scanf(" %[^\n]",s);

这就比用gets(s)不跳过空格输入字符串好用多了。

nefu 1637 身高问题

#include <bits/stdc++.h>
using namespace std;
struct student
{
    char name[30];
    int h,num;
};

int main()
{
    int n,i,j,max;
    student t,stu[200];
    while(scanf("%d",&n)!=-1)
    {
        getchar();
        for(i=1;i<=n;i++)
        scanf("%s%d%d",stu[i].name,&stu[i].h,&stu[i].num);
        for(i=1;i<=n;i++)
        {
            for(j=i+1;j<=n;j++)
            {
                if(stu[j].num<stu[i].num)
                {
                    t=stu[i];
                    stu[i]=stu[j];
                    stu[j]=t;
                }
            }
        }
        max=0;
        for(i=1;i<=n;i++)
        {
            if(stu[i].h>max)
            max=stu[i].h;
        }
        for(i=1;i<=n;i++)
        {
            if(stu[i].h==max)
            {
                printf("%s %d %d\n",stu[i].name,stu[i].h,stu[i].num);
                break;
            }
        }
    }
    return 0;
}

nefu 1638 成绩统计

#include <bits/stdc++.h>
using namespace std;
struct student
{
    char a[2],b[10];
    int x;
};

int main()
{
    int n,i,s,sum;
    student stu[1001];
    while(scanf("%d",&n)!=-1)
    {
        getchar();
        s=sum=0;
        for(i=1;i<=n;i++)
        {
            scanf("%s",stu[i].a);
            if(strcmp(stu[i].a,"C")==0)
            {
                scanf("%s",stu[i].b);
                s++;
            }
            if(strcmp(stu[i].a,"N")==0)
            {
                scanf("%d",&stu[i].x);
                sum=sum+stu[i].x;
            }
        }
        printf("%d %d\n",s,sum/(n-s));
    }
    return 0;
}

寒假培训第一天就是这么些题了,做出结构体的题还是挺有成就感的。
第一篇博客就到这里了,继续努力刷题,坚持,加油!!!
继续萌新的成长之路!!!

猜你喜欢

转载自blog.csdn.net/ljw_study_in_CSDN/article/details/86019595