题目一:
输入一个十进制的数,把它转成十六进制。
思路:
对于这种进制转换的问题,我们有一些统一的思路。对于更难的类型,比如说,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格,头往四个方向移动,每次移动一格,判断是成功、出界还是撞到自己,具体的题目是用英文描述的,大概意思就是这样。输入第一行为移动的步数,第二行为这些步数的方向,输出判断。
题目二完全不知所以然,不知道这道题是什么意思。