2.5
程序员文章站
2022-03-26 13:40:41
...
2.5
一、Hello, World!的大小
思路:简单题,考察sizeof的用法
#include<bits/stdc++.h>
using namespace std;
int main() {
cout<<sizeof"Hello, World!";
return 0;
}
二、显示器
思路:题有难度,考察函数调用和模拟,别人讲的。
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
char a[505];
void vertical(int sx) {
a[sx] = '|';
}
void horizontal(int sy,int s) {
for(int i = sy; i<s + sy; i++) {
a[i] = '-';
}
}
void Paint(int Size,char b[]) {
int len = strlen(b);
for(int k = 1; k<=2*Size + 3; k++) {
memset(a,' ',sizeof(a));
for(int i = 0; i<len; i++) {
if(k == 1) {
if(b[i] == '6' || b[i] == '0' || b[i] == '2' || b[i] == '3' || b[i] == '5' || b[i] == '7' || b[i] == '8' || b[i] == '9') {
horizontal((Size + 2)*i + i + 2,Size);
}
}
if((k > 1 && k <= 1 + Size)) {
if(b[i] == '0' || b[i] == '4' || b[i] == '5' || b[i] == '6' || b[i] == '8'||b[i]=='9') {
vertical((Size + 2) * i + i + 1);
}
if(b[i] == '0'||b[i] == '1' || b[i] == '2' || b[i] == '3' || b[i] == '4' || b[i] == '7' || b[i] == '8' || b[i] == '9') {
vertical((Size + 2) * i + i + 1 + Size + 1);
}
}
if( (k > Size + 2 && k < Size*2 + 3)) {
if(b[i] == '0' || b[i] == '2' || b[i] == '6' || b[i] == '8') {
vertical((Size + 2) * i + i + 1);
}
if(b[i] == '0'||b[i] == '1' || b[i] == '3' || b[i] == '4' || b[i] == '6' || b[i] == '7' || b[i] == '8' || b[i] == '9' || b[i] == '5') {
vertical((Size + 2) * i + i + 1 + Size + 1);
}
}
if(k == Size + 2) {
if(b[i] == '2'||b[i] == '3'||b[i] == '4'||b[i] == '5'||b[i] == '6'||b[i] == '8'||b[i] == '9') {
horizontal((Size + 2)*i + i + 2,Size);
}
}
if(k == Size * 2 + 3) {
if(b[i] == '9' || b[i] == '0' || b[i] == '2' || b[i] == '3' || b[i] == '5' ||b[i] == '6' || b[i] == '8') {
horizontal((Size + 2)*i + i + 2,Size);
}
}
}
for(int i = 1; i<=(Size + 2)*len + len-1; i++) {
cout<<a[i];
}
cout<<endl;
}
cout<<endl;
}
int main() {
while(1) {
int size;
cin>>size;
if(!size) {
break;
}
char tmp[5555];
cin>>tmp;
Paint(size,tmp);
}
return 0;
}
三、宇航员
思路:求宇航员的位置比较简单,直接将初始位置相应加减即可。麻烦的是求方向,思路要清晰可以直接模拟出方向。
#include<iostream>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
int n,p=0,q=2,x=0,y=0,z=0;
cin >> n;
for(int i=1; i<=n; i++) {
string s;
int d;
cin >> s >> d;
if(s=="left") {
if(p==0) {
if(q==1) {
p=2;
}
if(q==2) {
p=4;
}
if(q==4) {
p=5;
}
if(q==5) {
p=1;
}
} else if(p==1) {
if(q==0) {
p=5;
}
if(q==2) {
p=0;
}
if(q==3) {
p=2;
}
if(q==5) {
p=3;
}
} else if(p==2) {
if(q==0) {
p=1;
}
if(q==1) {
p=3;
}
if(q==3) {
p=4;
}
if(q==4) {
p=0;
}
} else if(p==3) {
if(q==1) {
p=5;
}
if(q==2) {
p=1;
}
if(q==4) {
p=2;
}
if(q==5) {
p=4;
}
} else if(p==4) {
if(q==0) {
p=2;
}
if(q==2) {
p=3;
}
if(q==3) {
p=5;
}
if(q==5) {
p=0;
}
} else if(p==5) {
if(q==0) {
p=4;
}
if(q==1) {
p=0;
}
if(q==3) {
p=1;
}
if(q==4) {
p=3;
}
}
} else if(s=="right") {
if(p==0) {
if(q==1) {
p=5;
}
if(q==2) {
p=1;
}
if(q==4) {
p=2;
}
if(q==5) {
p=4;
}
} else if(p==1) {
if(q==0) {
p=2;
}
if(q==2) {
p=3;
}
if(q==3) {
p=5;
}
if(q==5) {
p=0;
}
} else if(p==2) {
if(q==0) {
p=4;
}
if(q==1) {
p=0;
}
if(q==3) {
p=1;
}
if(q==4) {
p=3;
}
} else if(p==3) {
if(q==1) {
p=2;
}
if(q==2) {
p=4;
}
if(q==4) {
p=5;
}
if(q==5) {
p=1;
}
} else if(p==4) {
if(q==0) {
p=5;
}
if(q==2) {
p=0;
}
if(q==3) {
p=2;
}
if(q==5) {
p=3;
}
} else if(p==5) {
if(q==0) {
p=1;
}
if(q==1) {
p=3;
}
if(q==3) {
p=4;
}
if(q==4) {
p=0;
}
}
} else if(s=="up") {
int t=p;
p=q;
if(t==0||t==1||t==2) {
q=t+3;
} else q=t-3;
} else if(s=="down") {
int t=q;
q=p;
if(t==0||t==1||t==2) {
p=t+3;
} else p=t-3;
} else if(s=="foward") {
} else if(s=="back") {
if(p==0||p==1||p==2) {
p=p+3;
} else p=p-3;
}
if(p==0) {
x+=d;
}
if(p==1) {
y+=d;
}
if(p==2) {
z+=d;
}
if(p==3) {
x-=d;
}
if(p==4) {
y-=d;
}
if(p==5) {
z-=d;
}
}
cout << x <<" "<< y <<" "<< z <<" "<< p << endl;
}
return 0;
}
四、摘花生
思路:模拟,注意中间几个判断break的条件。
#include<bits/stdc++.h>
using namespace std;
typedef struct pos{
int x,y,value;
}pos;
struct pos a[4100]={0};
bool cmp(pos a,pos b)
{
return a.value>b.value;
}
int main()
{
int num=0,n=0,m=0,k=0;
while(scanf("%d",&num)!=-1)
{
while(num--)
{
scanf("%d%d%d",&m,&n,&k);
int temp=0,cnt=0;
memset(a,0,sizeof(a));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
scanf("%d",&temp);
if(temp)
{
a[cnt].x=j;a[cnt].y=i;a[cnt].value=temp;
cnt++;
}
}
sort(a,a+cnt,cmp);
int sum=0,time=0;
for(int i=0;i<cnt;i++)
{
if(i==0)
{
time=2*a[0].y+3;
if(time>k) break;
sum+=a[0].value;
time=a[0].y+2;
continue;
}
time+=abs(a[i].x-a[i-1].x)+abs(a[i].y-a[i-1].y)+1;
if(time+a[i].y+1>k) break;
sum+=a[i].value;
}
printf("%d\n",sum);
}
}
return 0;
}
五、整数的个数
难度不好说。。。。(手动坏笑)
#include<iostream>
#include<algorithm>
using namespace std;
int a1[10001],b[1001];
int main() {
int n,a=0,b=0,c=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a1[i];
}
for(int i=1;i<=n;i++){
if(a1[i]==1) a++;
if(a1[i]==5) b++;
if(a1[i]==10) c++;
}
cout<<a<<endl<<b<<endl<<c;
return 0;
}
六、
上一篇: React-router路由
推荐阅读
-
Linux下安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
-
乐视手机发布会 2.5万台乐视电视3分52秒售罄
-
Linux下安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
-
详解CentOS 6.5中安装mysql 5.7.16 linux glibc2.5 x86 64(推荐)
-
蓝牙4.2标准今日发布:速度提升约2.5倍
-
蓝牙4.2标准今日发布:速度提升约2.5倍
-
搜狗浏览器怎么查空气质量 实时查询pm2.5教程
-
搜狗浏览器怎么查空气质量 实时查询pm2.5教程
-
ai怎么设计一款2.5d立体的博士帽?
-
人生日历PM2.5播报,人生日历空气指数使用教程