杭电计算机2012年硕士研究生笔试详解

本文介绍了一个简单的程序来将十进制数转换为十六进制数的方法,并提供了一个基本的贪吃蛇游戏设计概念。对于进制转换问题,文章详细描述了将一种进制转换为另一种进制的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目一:

输入一个十进制的数,把它转成十六进制。
思路:
对于这种进制转换的问题,我们有一些统一的思路。对于更难的类型,比如说,a进制转b进制。我们有下面的思路
1、将a进制转换为10进制

  • value记录某位的权值,然后从低位开始取出最低位的字符
  • 判断,该字符若是0-9之间那么就直接字符-‘0’得到该字符表示的10进制数据
  • 如果不是0-9那么就用字符-‘A’+10得到该字符所表示的数据。
  • 取出int类型的数据之后,然后直接进行和权值相乘并累加求和。同时更新权值

2、将10进制转换为b进制

  • 用一个while循环对10进制的数,进行除模取余操作。每次都将余数保留并存储到数组当中,然后进行倒序的输出。
  • 如果模是大于10的,我们得到的余数就有可能是>10的,对于这样的数据我们不能直接存储,要进行一定的处理。如果大于10执行:num-10+’A’,如果小于10执行num+’0’;
  • 最后一步,我们将数组里面存储的数据进行倒序输出。

深入了解进制转换相关可以看下面这篇博客:
https://blog.csdn.net/gui951753/article/details/79574127

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
    int a;
    char ans[100];
        cin>>a;
        int cnt=0;//计算16进制转换为之后的位数 
        do{
            int temp=0;
            temp=a%16;
            if(temp>=10)
                ans[cnt++]=temp-10+'A';         
            else
                ans[cnt++]=temp+'0';
            a=a/16;
        }while(a);
        for(int i=cnt-1;i>=0;i--)
            cout<<ans[i];       
    return 0;
}

题目二:

贪吃蛇,给你一个50X50的表格,贪吃蛇初始化在某个位置,自身长度20格,头往四个方向移动,每次移动一格,判断是成功、出界还是撞到自己,具体的题目是用英文描述的,大概意思就是这样。输入第一行为移动的步数,第二行为这些步数的方向,输出判断。
题目二完全不知所以然,不知道这道题是什么意思。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值