一道C语言面试题:得到整数的M进制表示字符串
题目:输入整数n和M,输出n在M进制下的表示字符串。如n=3000,M=16,输出16进制下3000的表示字符串,为“BB8”
来源:某500强企业面试题目
思路:对n取模M,将得到的数字压入栈中,再令 n = n / M 的商。重复这一过程,可以得到每一位的数字。
将栈内的数字出栈,并转为字符表达,凑成完整的字符串即可
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//----------------------------------------
// 将n用M进制表示并输出
//----------------------------------------
#define MAX_NUM 1024
char *M_Ary(int n, int M) {
};
;
;
;
;
;
;
i = ;
a = n;
while (a >= M) { // 反复取余,放入Ary数组中
b = a % M; // 取余数
a = a / M; // 取商
Ary[i] = b;
i++;
) ;// 如果越界,返回NULL
}
Ary[i] = a;
num = i + ; // 获得数组长度
str = (); // 创建字符串
; // 如果创建失败,返回NULL
memset(str, , num + ); // 清空字符串
; i < num; i++) { // 倒序将Ary数组的数字放入str中
c = Ary[num - i - ];
) {
str[i] = ' + c; // 如果是 0-9,则输出数字
} else {
str[i] = ); // 如果是 > 10,则输出A-Z
}
}
return str;
}
//-------------------------------------------------------------------------
void TestM_Ary(void) {
int n, M;
;
n = ;
M = ;
str = M_Ary(n, M);
printf("M_Ary(%d, %d) = %s\n", n, M, str);
free(str);
n = ;
M = ;
str = M_Ary(n, M);
printf("M_Ary(%d, %d) = %s\n", n, M, str);
free(str);
n = ;
M = ;
str = M_Ary(n, M);
printf("M_Ary(%d, %d) = %s\n", n, M, str);
free(str);
}
//-------------------------------------------------------------------------
int main(int argc, char *argv[]) {
TestM_Ary();
getchar();
;
}
一道C语言面试题:得到整数的M进制表示字符串的更多相关文章
- Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...
- C语言中怎样定义能够保存16进制整数的变量
可以通过int 或long int存储,16进制整数说到底还是整数,16进制只是一种记数方式.例如,int x=0x16;十六进制(hexadecimal)只是计算机中数据的一种表示方法,规则是“逢十 ...
- 编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示
编写一个算法,将非负的十进制整数转换为其他进制的数输出,10及其以上的数字从‘A’开始的字母表示. 要求: 1) 采用顺序栈实现算法: 2)从键盘输入一个十进制的数,输出相应的八进制数和十六进制数. ...
- 基于visual Studio2013解决面试题之1203转16进制输出
题目
- 运用C语言将图片转换成16进制的字符串(base64)
最近在写手机端的性能测试脚本的时候,发现手机在上传图片数据时,先将图片转换成一堆16进制的字符,将字符传输过去,服务器再将字符解码成图片 我们在loadrunner中测试时,就需要用C语言将图片编码. ...
- 2_C语言中的数据类型 (二)进制
1.1 二进制数.位.字节与字 我们习惯于十进制的数:10,12等 一个位只能表示0,或者1两种状态,简称bit,一个位是一个bit 一个字节为8个二进制,称为8位,简称BYTE,8个比特 ...
- 利用python实现整数转换为任意进制字符串
假设你想将一个整数转换为一个二进制和十六进制字符串.例如,将整数 10 转换为十进制字符串表示为 10 ,或将其字符串表示为二进制 1010 . 实现 以 2 到 16 之间的任何基数为参数: def ...
- 一道C语言面试题:写一个宏,将16位的整数转为Big Endian
题目:输入16位整数x,如0x1234,将其转为Big Endian格式再输出,此例为输出 0x3412 来源:某500强企业面试题目 思路:将x左移8位得到a,将x右移8位得到b,a+b即为所得 / ...
- [笔记]一道C语言面试题:IPv4字符串转为UInt整数
题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无 ...
随机推荐
- Android的AndroidManifest.xml文件的详解
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- WinForm 鼠标进入移开窗体事件,因子控件导致的误触发
/// <summary> /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 /// </summary> /// <param n ...
- FileAccess枚举
FileAccess用于控制对文件的读访问.写访问或读/写访问的常熟.从源代码可以看到FileAccess是一个简单枚举. 枚举成员 成员值 描述 Read 1 对文件的读访问,拥有读取权限. Wri ...
- poj 2299 Ultra-QuickSort(归并排序或是bit 树+离散化皆可)
题意:给一个数组,计算需要的冒泡排序的次数,元素个数很大,不能用n^2的冒泡排序计算. 解析:这题实际上就是求逆序对的个数,可以用归并排序的方法,我这里用另一种方法写,bit树+离散化.由于元素的值可 ...
- 各硬件装置在 Linux 中的文件名(笔记)
各硬件装置在 Linux 中的文件名
- [Java Web]Struts2解决中文乱码问题
1.设置struts的字符编码,能够在struts.xml中添加下面代码: <constant name="struts.i18n.encoding" value=" ...
- Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)
为了保证应用程序存储数据的安全性,开发人员在开发应用程序的过程中须要注意使用Android 应用程序的内部存储空间. 依据不同的要求.将相应的数据文件.缓存文件.暂时文件等分别存储在相应的位置. 注意 ...
- poj 3436 (最大流)
题意:每台电脑共有p种零件,现在有n台机器,给出n台机器每台需要的一些种类零件当原料(0代表不需要,1代表必须要,2代表可有可无)和输出的产品零件.问怎么安排生产线使生产出来零件可以组装的电脑最多. ...
- 用MVC4+EF改写XXX系统的计划--前言
感觉自己工作了三年,重来没有自己一个人写一个项目,从开始的策划,功能需求,业务逻辑,扩展,性能优化等等方面去做,从今天起准备发比半年时间重写XXX项目,每天中午和晚上分别花半个小时和一个小时开发,周末 ...
- DataSet、DataTable、DataRow区别
DataSet 表示数据在内存中的缓存. 属性 Tables 获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据 ...