大一寒假訓練一(二維陣列和結構體)
阿新 • • 發佈:2019-01-08
基礎題就不解釋了,稍微要思考的題再註釋一下。
#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;
}
#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;
}
#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;
}
#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;
}
#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;
}
#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)不跳過空格輸入字串好用多了。
#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;
}
#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;
}
寒假培訓第一天就是這麼些題了,做出結構體的題還是挺有成就感的。
第一篇部落格就到這裡了,繼續努力刷題,堅持,加油!!!
繼續萌新的成長之路!!!