【上机笔试之十二】数位拆解-进制转换
2017-05-02 22:11
176 查看
题目要求:对任意两个进制的数进行转换。
使用指针传递数组,有以下几个注意的点:
指针使用前必须要初始化,否则编译会报错,初始化的方式可以是:char* output = new char[20];。
output_l看起来没有初始化过程,但实际上output_l = transform(a_l, b_l, str_l);就是初始化。
使用指针传递字符串或者数组时,要统一全是指针,避免指针和数组混用(这是最糟糕的)
函数返回类型中也应用使用指针类型
使用指针传递数组,有以下几个注意的点:
指针使用前必须要初始化,否则编译会报错,初始化的方式可以是:char* output = new char[20];。
output_l看起来没有初始化过程,但实际上output_l = transform(a_l, b_l, str_l);就是初始化。
使用指针传递字符串或者数组时,要统一全是指针,避免指针和数组混用(这是最糟糕的)
函数返回类型中也应用使用指针类型
#include<iostream> #include<string.h> using namespace std; //将a进制的str转化成b进制的数 char* transform(int a, int b, char* str) { int lenth = strlen(str), num_ten = 0, c = 1, size = 0; char* output = new char[20]; //将a转化成对应的十进制num_ten for (int i = lenth - 1; i >= 0; i--){ if (str[i] >= '0' && str[i] <= '9') { str[i] = str[i] - '0'; } else if (str[i] >= 'a' && str[i] <= 'f') { str[i] = str[i] - 'a' + 10; } else { str[i] = str[i] - 'A' + 10; } num_ten += c * str[i]; c *= a; } int tmp; do { tmp = num_ten % b; *(output + size) = tmp > '9' ? tmp + 'a' - 10 : tmp + '0'; //printf("%c", *(output + size)); size++; num_ten /= b; } while (num_ten != 0); *(output + size) = 0; return output; } void main() { int a_l, b_l; char* str_l = new char[20]; char* output_l; while (scanf("%d%d%s", &a_l, &b_l, str_l) != EOF) { output_l = transform(a_l, b_l, str_l); for (int i = strlen(output_l) - 1; i >= 0; i--){ printf("%c", output_l[i]); } printf("\n"); } }
相关文章推荐
- 【上机笔试之十一】数位拆解-特殊乘法
- 关于09年迅雷面试+笔试+上机题目的总结(解答来自网络)
- 主题:迅雷亲历面经:笔试+上机+面试(完整JAVA面试题求解大讨论)
- 华为2013校园招聘上机笔试题
- 华为2013校园招聘上机笔试题-删除一个字符串中出现次数最少的字符
- 2014年实习生招聘之华为实习生招聘笔试题(上机完成)—2014/04/02
- 华为机考笔试题-进制转换
- 企业常见笔试题目---数据结构栈与进制转换
- 华为2016校园招聘上机笔试题:最高分是多少 [python]
- 基于Visual C++2013拆解世界五百强面试题--题12-进制转换
- 数位DP--由一道微软笔试题引起
- 面向对象程序设计上机练习十二(运算符重载)
- 华为2011上机笔试题一
- 华为软件类上机笔试--大数求差
- 华为2011上机笔试题1+参考程序
- 华为2016校园招聘上机笔试题
- 华为2013校园招聘上机笔试题-杭州-亲身体会
- 瑞星笔试:现场上机做题[转]
- 华为2011上机笔试题2+参考程序
- 华为上机笔试 2016-9-4