ps:题是别的地方copy过来的,代码是自己的
第一题:
输入一个十进制的数,把它转成十六进制。
//leetcode 168 171:26进制转换成10进制
//这里我输入int输出char
#include<stdio.h>
/*
二进制 十六进制
0 0
16 10
256 100
*/
int main(){
int com;
char result[10];
char x[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
while(scanf("%d",&com) != EOF){
getchar();
int nums = 1;//计算转换后的16进制有几位长,最短也有一位
int tmp = com;
while(tmp/16 != 0){
nums++;
tmp /= 16;
}
result[nums] = '\0'; //char数组末尾
while(nums){
result[--nums] = x[com%16]; //先除余再整除
com /= 16;
}
char* p;
p = result;
while(*p != '\0'){
printf("%c",*p);
p++;
}
printf("\n");
}
return 1;
}
/*如果想判断转换是否正确,使用
int main(){
int num;
scanf("%d",&num);
printf("%x",num);
return 1;
}
*/
第二题:
贪吃蛇,给你一个50X50的表格,贪吃蛇初始化在某个位置,自身长度20格,头往四个方向移动,每次移动一格,判断是成功、出界还是撞到自己,具体的题目是用英文描述的,大概意思就是这样。输入第一行为移动的步数,第二行为这些步数的方向,输出判断。
地图左上角坐标(1,1),右下角坐标(50,50),蛇头起始在(25,30),蛇尾在(25,11),四个方向为N,W,E,S,第一行移动的步数输入0程序结束。
#include <stdio.h>
struct snake{
int x;
int y;
};
int main(){
struct snake s[20];
int steps;
scanf("%d",&steps);
while(steps != 0){
for(int i = 0;i < 20;i++){ //初始化蛇的位置
s[i].y = 25;
s[i].x = 30 - i;
}
char step[100];
scanf("%s",step);
char* p = step;
int j;
for(j = 0;j < steps;j++){
int newx = 0,newy = 0;
switch(*p){ // 主循环 先判断蛇头移动的下一点
case 'N': newy--; break;
case 'S': newy++; break;
case 'E': newx++; break;
case 'W': newx--; break;
}
if(s[0].x + newx == 0 || s[0].x + newx == 51 || s[0].y + newy == 0 || s[0].y + newy == 51){
printf("The worm ran off the board on move %d\n",j + 1);
break;
}
int cflag = 0;
for (int n = 0;n < 19;n++){ // 这里有个特例,当头部当回合移动到尾部的位置时,是不算撞到自己的 ,而尾部移动的位置在上一回合肯定是尾部前一节所在位置,不可能是凭空移动的,所以判断时不比较s[19]
//形象一点说就是蛇咬自己尾巴,却永远咬不到
if (s[0].x + newx == s[n].x && s[0].y + newy == s[n].y){
printf("The worm ran into itself on move %d\n",j + 1);
cflag = 1;
break;
}
}
if(cflag){
break;
}
for(int m = 19;m >= 1;m--){ //进行移动,除蛇头外,n节身体移动到n-1节身体的位置
s[m].x = s[m - 1].x;
s[m].y = s[m - 1].y;
}
s[0].x += newx;
s[0].y += newy;
p++;
}
if(j == steps){
printf("The worm successfully made all %d moves\n",steps);
}
scanf("%d",&steps);
}
return 1;
}
sample输出结果: