2019.12.31 Day1练习题

Part 1  二维数组

NEFU952 二维矩阵对角线和

#include<bits/stdc++.h>
using namespace std;
int m, a[15][15];
int main()
{
	while(cin>>m)
	{
		int cnt = 0;
		for(int i=1; i<=m; i++)
			for(int j=1; j<=m; j++)
				scanf("%d", &a[i][j]);
		for(int i=1; i<=m; i++)
			for(int j=1; j<=m; j++)
			{
				if(j==i || j==m-i+1) 
				{
					cnt += a[i][j];
					if(i == m-i+1)
						cnt += a[i][j];
					//cout<<i<<" "<<j<<endl;
				}
				
			}
		cout<<cnt<<endl;
	}
	return 0;
}

NEFU1064 矩阵的外围

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n, m, a[15][15];
	while(cin>>n>>m)
	{
		int sum = 0;
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++)
				cin>>a[i][j];
		for(int i=1; i<=m; i++)
		{
			sum += a[1][i];
			sum += a[n][i];
		}
		for(int i=2; i<n; i++)
		{
			sum += a[i][1];
			sum += a[i][m];
		}
		cout<<sum<<endl;
	}
	return 0;
}

NEFU955 五人帮

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int m, n, a[20][20], b[20][20];
	while(cin>>m>>n)
	{
		int maxn = -23;
		memset(a, 0, sizeof(a));
		for(int i=2; i<=m+1; i++)
			for(int j=2; j<=n+1; j++)
				cin>>a[i][j];
		for(int i=2; i<=m+1; i++)
			for(int j=2; j<=n+1; j++)
			{
				b[i][j] = a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1];
				maxn = max(b[i][j], maxn);
			}
		cout<<maxn<<endl;
	}
	return 0;
}

NEFU1031 回转小矩阵

#include<bits/stdc++.h>
using namespace std;
int n, m, a[110][110];
int main()
{
	while(cin>>n>>m)
	{
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++)
				cin>>a[i][j];
		for(int i=m; i>=1; i--)
		{
			for(int j=1; j<n; j++)
				cout<<a[j][i]<<" ";
			cout<<a[n][i]<<endl;
		}
	}
	return 0;
}

NEFU953 矩阵相加

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int m, n, a[15][15], b[15][15];
	while(cin>>m>>n)
	{
		for(int i=1; i<=m; i++)
			for(int j=1; j<=n; j++)
				cin>>a[i][j];
		for(int i=1; i<=m; i++)
			for(int j=1; j<=n; j++)
			{
				cin>>b[i][j];
				b[i][j] += a[i][j];
			}
		for(int i=1; i<=m; i++)
		{
			for(int j=1; j<n; j++)
				cout<<b[i][j]<<" ";
			cout<<b[i][n]<<endl;
		}
	}
	return 0;
}

NEFU951 二维矩阵最大值

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int m, n, a[15][15];
	while(cin>>m>>n)
	{
		int maxn=-2, flagx, flagy;
		for(int i=1; i<=m; i++)
			for(int j=1; j<=n; j++)
			{
				cin>>a[i][j];
				if(maxn < a[i][j])
				{
					maxn = a[i][j];
					flagx = i;
					flagy = j;
				}
			}
		cout<<flagx<<" "<<flagy<<" "<<maxn<<endl;
	}
	return 0;
}

NEFU954 矩阵相乘

#include<bits/stdc++.h>
using namespace std;
int n, a[20][20], b[20][20], c[20][20];
int main()
{
	while(cin>>n)
	{
		memset(c, 0, sizeof(c));
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				scanf("%d", &a[i][j]);
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				scanf("%d", &b[i][j]);
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
			{
				for(int k=1; k<=n; k++)
					c[i][j] += a[i][k]*b[k][j];
			} 
		for(int i=1; i<=n; i++)
		{
			for(int j=1; j<n; j++)
				printf("%d ", c[i][j]);
			cout<<c[i][n]<<endl;
		}
	}
	return 0;
}

Part 2 结构体

NEFU1053 结构体应用

#include<bits/stdc++.h>
using namespace std;
struct node{
	int no;
	char name[25];
	double score;
}st[100];
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		scanf("%d", &st[i].no);
		getchar();
		gets(st[i].name);
		//getchar();
		scanf("%lf", &st[i].score);
	}
	for(int i=1; i<=n; i++)
		printf("%d  %s  %.2lf\n" ,st[i].no, st[i].name, st[i].score);
	return 0;
}

NEFU1637 身高问题

#include<bits/stdc++.h>
using namespace std;
struct node{
	int no, hei;
	char name[25];
}st[110];
bool comp(node x, node y)
{
	if(x.hei != y.hei) return x.hei>y.hei;
	else return x.no<y.no;
}
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
		scanf("%s %d%d", st[i].name, &st[i].hei, &st[i].no);
	sort(st+1, st+n+1, comp);
	printf("%s %d %d", st[1].name, st[1].hei, st[1].no);
	return 0;
}

NEFU1638 成绩统计

 

#include<bits/stdc++.h>
using namespace std;
struct node{
	char flag, s1[6];
	int s2;
}num[1010];
int n, cnt=0, sum=0;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>num[i].flag;
		if(num[i].flag == 'C')
		{
			scanf("%s", num[i].s1);
			cnt++;
		}
		else
		{
			cin>>num[i].s2;
			sum += num[i].s2;
		}
	}
	cout<<cnt<<" "<<sum/(n-cnt);
	return 0; 
}

NEFU1186 优秀学生

#include<bits/stdc++.h>
using namespace std;
struct node{
	int no, sc;
	char name[21];
}st[110];
int n, cnt=0;
int main()
{
	while(cin>>n)
	{
		cnt = 0;
		for(int i=1; i<=n; i++)
		{
			scanf("%d %s %d", &st[i].no, st[i].name, &st[i].sc);
			if(st[i].sc >= 90)
			{
				cnt++;
				printf("%d %s %d\n", st[i].no, st[i].name, st[i].sc);
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
} 

NEFU1147 谁不及格?

#include<bits/stdc++.h>
using namespace std;
struct node{
	char name[25], x[11];
	double quan;
}st[12];
int n, cnt=0;
int main()
{
	while(cin>>n)
	{
		cnt = 0;
		for(int i=1; i<=n; i++)
		{
			getchar();
			gets(st[i].name);
			//cin>>st[i].x;
			//cin>>st[i].quan;
			scanf("%s%lf", st[i].x, &st[i].quan);
			if(st[i].quan < 60.0)
				cnt++;
		}
		if(cnt)
		{
			cout<<cnt<<endl;
			/*
			for(int i=1; i<=n; i++)
			{
				if(st[i].quan < 60.0)
				{
					printf("%s\n%s\n%.2lf\n", st[i].name, st[i].x, st[i].quan);
				}
			}
			*/
			for(int i=1; i<=n; i++)
			{
				if(st[i].quan < 60.0)
					printf("%s\n", st[i].name);
			}
			for(int i=1; i<=n; i++)
			{
				if(st[i].quan < 60.0)
					printf("%s\n", st[i].x);
			}
			for(int i=1; i<=n; i++)
			{
				if(st[i].quan < 60.0)
					printf("%.2lf\n", st[i].quan);
			}
		}
		else cout<<"They are Great!!"<<endl;
	}
	return 0;
}

NEFU1188 两圆的距离

#include<bits/stdc++.h>
using namespace std;
struct yuan
{  
   double x;//圆心的X轴坐标
   double r;//半径
} data[11];
int n;
bool cmp(yuan a, yuan b)
{
	return a.x<b.x;
}
int main()
{
	while(cin>>n)
	{
		for(int i=1; i<=n; i++)
			cin>>data[i].x>>data[i].r;
		sort(data+1, data+1+n, cmp);
		printf("%.2lf\n", data[n].x-data[n].r);
	}
	return 0;
}

NEFU453 校庆的活动

#include<bits/stdc++.h>
using namespace std;
struct point{
	int x, y;
}a[60];
int n, xx, yy, flagx, flagy;
int main()
{
	while(cin>>xx>>yy)
	{
		cin>>n;
		double minn = 99999;
		for(int i=1; i<=n; i++)
		{
			cin>>a[i].x>>a[i].y;
			double l=sqrt((a[i].x-xx)*(a[i].x-xx)+(a[i].y-yy)*(a[i].y-yy));
			if(minn > l)
			{
				minn = l;
				flagx = a[i].x;
				flagy = a[i].y;
			}
		}
		cout<<flagx<<" "<<flagy<<endl;
	}
	return 0;
}

NEFU1184 第4题

#include<bits/stdc++.h>
using namespace std;
struct fushu{
	double shi, xu, he1, cha1, he2, cha2;
}num[2];
void cadd(fushu x1, fushu x2)
{
	void cprint1(fushu x);
	x1.he1 = x1.shi+x2.shi;
	x1.he2 = x1.xu+x2.xu;
	cprint1(x1);
}
void cminu(fushu x1, fushu x2)
{
	void cprint2(fushu x);
	x1.cha1 = x1.shi-x2.shi;
	x1.cha2 = x1.xu-x2.xu;
	cprint2(x1);
} 
void cprint1(fushu x)
{
	printf("%.2lf", x.he1);
	if(x.he2>=0) printf("+%.2lfi\n", x.he2);
	else printf("%.2lfi\n", x.he2);
}
void cprint2(fushu x)
{
	printf("%.2lf", x.cha1);
	if(x.cha2>=0) printf("+%.2lfi\n", x.cha2);
	else printf("%.2lfi\n", x.cha2);
}
int main()
{
	while(cin>>num[0].shi>>num[0].xu)
	{
		cin>>num[1].shi>>num[1].xu;
		cadd(num[0], num[1]);
		cminu(num[0], num[1]);
		//cprint(num[0]);
	}
	return 0;
}

By_Havoc.Wei

发布了58 篇原创文章 · 获赞 40 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_41248654/article/details/103793487