2018北邮计算机院机试

2018北邮计算机院机试(回忆版)

Problem A

题目:
输入数据0-2的32次方范围,化成二进制,然后逆序这个二进制序列,转换成十进制。

测试数据:
2
输出:
1
测试数据:
10  
输出:
5

这道是简单题,就是模拟手工计算二进制过程,而且给的输入范围不大,2^32=4 294 967 296,故int的范围刚好够,但是为了以防万一,我这里直接用long long int省心省力。

#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;

int main(){
    long long int a;
    scanf("%lld",&a);
    int buf[33];
    int i=0;
    while(a!=0){
        buf[i++]=a%2;//手工计算的过程原本要逆置才能得到正确的二进制,但是题目求得就是二进制逆置,故直接得出的数组就是逆置完事的了。
        a/=2;
    }
    long long int ans=0;
    i--;
    for(int j=0;i>=0;j++){
        if(buf[i]!=0){
            ans+=pow(2,j);
        }
        i--;
    }
    printf("%lld\n",ans);
    return 0;
}

PS:题目里没说要循环,也没有说多组测试数据,并且题目给的测试用例中,两个输出输入,故不加循环了。。。

(有错的话请大佬指正。。。菜鸡一枚)

Problem B

题目:输出图象数字(差不多是这种类型的题,可能输入格式不太对,因为没有原题)
输入:
0-9任意一个数字

输出
输出对应的5*3的图像数字。

测试数据:
2

输出:
111
001
111
100
111

直接暴力ctrl c+v。。。。提前写好图

#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
void shuchu(int buf[5][3]){
    for(int i=0;i<5;i++){
        for(int j=0;j<3;j++){
            printf("%d",buf[i][j]);
            if(j==2)
                printf("\n");
        }
    }
}
int main(){
    int n;
    scanf("%d",&n);
    int buf0[5][3]={1,1,1,1,0,1,1,0,1,1,0,1,1,1,1};
    int buf1[5][3]={0,1,0,0,1,0,0,1,0,0,1,0,0,1,0};
    int buf2[5][3]={1,1,1,0,0,1,1,1,1,1,0,0,1,1,1};
    int buf3[5][3]={1,1,1,0,0,1,1,1,1,0,0,1,1,1,1};
    int buf4[5][3]={1,0,1,1,0,1,1,1,1,0,0,1,0,0,1};
    int buf5[5][3]={1,1,1,1,0,0,1,1,1,0,0,1,1,1,1};
    int buf6[5][3]={1,1,1,1,0,0,1,1,1,1,0,1,1,1,1};
    int buf7[5][3]={1,1,1,0,0,1,0,0,1,0,0,1,0,0,1};
    int buf8[5][3]={1,1,1,1,0,1,1,1,1,1,0,1,1,1,1};
    int buf9[5][3]={1,1,1,1,0,1,1,1,1,0,0,1,1,1,1};
    switch(n){
        case 0:shuchu(buf0);break;
        case 1:shuchu(buf1);break;
        case 2:shuchu(buf2);break;
        case 3:shuchu(buf3);break;
        case 4:shuchu(buf4);break;
        case 5:shuchu(buf5);break;
        case 6:shuchu(buf6);break;
        case 7:shuchu(buf7);break;
        case 8:shuchu(buf8);break;
        case 9:shuchu(buf9);break;
        default:return 0;
    }
    return 0;
}

最后两道没a出来,,,比较菜。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值