@NEFU 2019大一集训第一天
NEFU judge online 952
计算m×m的方阵的对角线所有元素的和。
输入数据有多组,每组第1行为m( 2<=m<=10),接下来有m行m列的数据1<=a(i,j)<=100;
输入:
3
1 2 3
4 5 6
7 8 9
输出:
30
#include
#include
int main()
{
int m,a[11][11],i,j,s;
while(scanf("%d",&m)!=EOF)
{
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(ij)
s=s+a[i][j];
if(i+jm+1)
s=s+a[i][j];
}
}
printf("%d\n",s);
}
return 0;
}
NEFU judge online 1064
在军事训练中,战士们站成一个方阵(也可能是一个长方形),每个战士身上都有1个编号,现在军队领导想知道,站在队伍外围战士们的编号之和是多少?大一的你能帮帮他吗?
输入数据有多组,每组第一行n和m(1
3 3
1 2 3
4 5 6
0 1 0
输出:
17
#include
#include
int main()
{
int m,n,i,j,sum,ans,a[11][11];
while(scanf("%d%d",&m,&n)!=EOF)
{
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
scanf("%d",&a[i][j]);
}
}
sum=0;
for(i=1; i<=m; i++)
{
for(j=1;j<=n;j++)
{
if(i1||im)
sum=sum+a[i][j];
if(j1||jn)
sum=sum+a[i][j];
}
}
ans=sum-a[1][1]-a[1][n]-a[m][1]-a[m][n];
printf("%d\n",ans);
}
return 0;
}
NEFU judge online 955
5人帮的含义就是数字和该数字所对应的上、下、左、右和自己本身的数值之和,请求出矩阵中5人帮的最大值是多少?
输入数据只有多组,每组第1行为2个数m和n(1
3 4
1 2 3 4
3 4 5 6
2 3 3 9
输出:
24
#include
#include
int main()
{
int m,n,i,j,sum,a[11][11],max;
while(scanf("%d%d",&m,&n)!=EOF)
{
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;
}
}
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)
{
sum=a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1];
if(sum>max)
max=sum;
}
}
}
printf("%d\n",max);
}
return 0;
}Close
NEFU judge online 1031
现在有一个n*m行的矩阵A 逆时针旋转90度形成一个新的矩阵B,将B矩阵输出来。
快敲代码,动作!
多组样例,每行两个整数n,m( 1<=n<=100, 1<=m<=100 )
输入:
3 5
1 2 3 4 5
2 4 9 2 1
3 4 5 7 9
输出:
5 1 9
4 2 7
3 9 5
2 4 4
1 2 3
#include
#include
int main()
{
int m,n,i,j,a[101][101],b[101][101],c[101][101];
while(scanf("%d%d",&m,&n)!=EOF)
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
b[i][j]=a[j][i];
}
}
for(i=n;i>=1;i–)
{
for(j=1;j<=m;j++)
{
c[i][j]=b[i][j];
printf("%d",c[i][j]);
if(j!=m)
printf(" ");
}
printf("\n");
}
}
return 0;
}
NEFU judge online 954
计算2个方阵的乘积!
输入数据有多组,每组第1行为m (1
2
1 2
1 2
3 1
1 3
输出:
5 7
5 7
#include
#include
int main()
{
int m,i,j,k;
while(scanf("%d",&m)!=EOF)
{
int a[20][20]={0};
int b[20][20]={0};
int ans[20][20]={0};
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]);
}
}
for(i=1; i<=m; i++)
{
for(j=1; j<=m; j++)
{
for(k=1; k<=m; k++)
{
ans[i][j]=ans[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=1; i<=m; i++)
{
for(j=1; j<=m; j++)
{
printf("%d",ans[i][j]);
if(j!=m)
printf(" “);
}
printf(”\n");
}
}
return 0;
}
NEFU judge online 1053
在实验7基础上简化读入学生的信息:学号(8位整数)、姓名(20个字符)、1门课的成绩(2位小数)。 要求用输入、输出函数实现部分子功能。
输入:
5
20140101
Li Ming
85
20140202
Zhao Li
98
20140013
Qiao En
92.5
20140404
Tian Ya
88.5
20140015
Lu Yao
89.4
输出:
20140101 Li Ming 85.00
20140202 Zhao Li 98.00
20140013 Qiao En 92.50
20140404 Tian Ya 88.50
20140015 Lu Yao 89.40
#include
#include <bits/stdc++.h>
using namespace std;
struct student
{
char num[20],name[30];
double score;
};
int main()
{
int i,n;
while(scanf("%d",&n)!=EOF)
{
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;
}
NEFU judge online 1637
输入 n 个学生的信息,每个学生信息包括姓名、身高、学号。编程输出身高最高的学生的信息。第 1 行一个正整数 n,表示学生个数,n≤100。
以下 n 行,每一行依次输入学生的姓名、身高、学号。
输入:
5
John 172 20160302
David 173 20160306
Jason 168 20160309
Jack 152 20160311
Kitty 147 20160319
输出:
David 173 20160306
#include
#include <bits/stdc++.h>
using namespace std;
struct student
{
int id;
int height;
char name[100];
};
int main()
{
int n,i,j,k;
student stu[100],m;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
scanf("%s%d%d",stu[i].name,&stu[i].height,&stu[i].id);
m=stu[0];
for(i=0,j=1; j<n; i++,j++)
{
if(m.height<stu[j].height)
{
m=stu[j];
k=j;
}
}
for(i=0; i<n; i++)
{
if(stu[i].height==stu[k].height)
{
if(stu[i].id>stu[k].id)
return 0;
else k=i;
}
}
printf("%s %d %d\n",stu[k].name,stu[k].height,stu[k].id);
}
return 0;
}
NEFU judge online 1638
兴趣小组收集学员成绩信息,每个学员的成绩有两种表示方法,一种用 best、good、poor 三种等级来表示,还有一种就是直接用分数来表示(百分制)。请保存学员成绩信息,并且统计有多少人是用等级来表示成绩的,用分数来表示成绩的人的平均分是多少(取整就行)。第 1 行一个正整数 n,表示学员人数,n≤1000。
第 2~n+1 行,每行一个字符和一个字符串,中间用一个空格隔开。第一个字符表示这个学生成绩类型,有 C、N 两种分别代表等级表示和分数表示,第二个字符串表示成绩信息。
输入:
5
C best
C good
N 90
C poor
N 98
输出:
3 94
#include
#include <bits/stdc++.h>
using namespace std;
string level,flag;
int n,i,score,sum,k;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>flag;
if(flag==“C”)
{
cin>>level;
k++;
}
else
{
cin>>score;
sum=sum+score;
}
}
printf("%d %d",k,sum/(n-k));
return 0;
}
NEFU judge online 1186
读入学生的信息(最多不超过100个):学号(不超过八位)、姓名(不超过20个字符)、C语言成绩(用整数表示)。统计优秀学生的信息(成绩在90分以上,包括90分)及个数。(要求用结构体实现)
输入:
5
2015001
ZhangSan
90
2015002
LiMing
80
2015003
WangHong
70
2015004
ZhangXiao
95
2015005
WangFang
100
3
2015001
ZhangSan
60
2015002
LiMing
80
2015003
WangHong
85
输出:
2015001 ZhangSan 90
2015004 ZhangXiao 95
2015005 WangFang 100
3
#include
#include <bits/stdc++.h>
using namespace std;
struct stu
{
int id,score;
char name[100];
} stu[100];
int main()
{
int n,k,i;
while(scanf("%d",&n)!=EOF)
{
k=0;
for(i=0; i<n; i++)
{
scanf("%d%s%d",&stu[i].id,stu[i].name,&stu[i].score);
if(stu[i].score>=90)
{
printf("%d %s %d\n",stu[i].id,stu[i].name,stu[i].score);
k++;
}
}
printf("%d\n",k);
}
return 0;
}
NEFU judge online 1147
聪聪的班主任王老师最近有点忙,可是他又是一位非常细心的老师,每次考试成绩都有专门的东西来记录,学期结束的时候给每位学生算了加权之后,他都要“关心关心”成绩不好的学生,并在假期给他们补补功课。什么是成绩不好呢?在王老师眼里,成绩不好当然就是加权成绩不及格咯!如今王老师这么忙,正好看你成天写程序闲着没事儿,于是他想让聪明的你来帮他写个程序,把那些不及格的同学的名单打印给他。输入包含多组数据,每组输入一个数n(1<=n<=10),然后接下来输入n个同学的信息,每个同学的信息分3行,第一行姓名name(姓名长度不超过20个字母),第二行学号x,长度为10(例:2015215098),第三行学生的平均加权成绩。每组数据第一行输出一个数k,表示不及格学生的个数,然后接下来输出3*k行不及格学生信息,第一个k行输出不及格学生姓名(按输入顺序),第二个k行输出学生学号(按输入顺序),第三个k行输出学生成绩(按输入顺序)(保留2位小数)。若是没有同学不及格,那么输出“They are Great!!”。
输入:
2
zhu dan
2015213678
79.99
wang meng
2015213902
83.78
1
tiancai
2015234930
59.08
输出:
They are Great!!
1
tiancai
2015234930
59.08
#include
#include <bits/stdc++.h>
using namespace std;
struct xx
{
char name[105];
long long num;
double score;
};
int main()
{
xx stu[10];
int n,i,k,a[11];
while(cin>>n)
{
k=0;
for(i=0;i<n;i++)
{
getchar();
gets(stu[i].name);
cin>>stu[i].num;getchar();
cin>>stu[i].score;
}
for(i=0;i<n;i++)
{
if(stu[i].score<60)
{
k++;
a[k]=i;
}
}
if(k==0)cout<<“They are Great!!”<<endl;
else
{
cout<<k<<endl;
for(i=1;i<=k;i++){cout<<stu[a[i]].name<<endl;}
for(i=1;i<=k;i++){cout<<stu[a[i]].num<<endl;}
for(i=1;i<=k;i++){printf("%.2lf\n",stu[a[i]].score);}
}
}
return 0;
}
第一天就到这里了,明天就是2020年了