本帖最后由 meegor 于 2014-3-9 11:39 编辑
余数判断没有进行,应该定义一个char a[15],而不是字符指针数组 char *a[15]
- for (i=0;i<16;i++)
- {
-
- while (n > 0)
- {
-
- if (n%R >=10)
- {
- a[i]='A'+n%R-10;
- }
- else
- a[i] = '0'+ n%R;
- n=n/R;
- }
- }
复制代码
判断后还有一个问题,不用对a[15]全部遍历,因为a[15]不一定能存满
可以利用字符指针遍历,
下面是我自己写的一个例子,可以参考一下。
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- int num, base;
- int quotient;
- char store[100];
- printf("请输入一个十进制整数:");
- scanf("%d", &num);
-
- printf("\n你想把这个数转换成多少进制?\n请输入2-16之间任意整数:");
- scanf("%d", &base);
-
- quotient = num;
- int count = 0;
- while (quotient > 0) {
- if (quotient % base >= 10) {
- store[count++] = (quotient % base) % 10 + 'A';
- }
- else
- store[count++] = quotient % base + '0';
-
- quotient /= base;
- }
-
- printf("\n%d的%d进制形式为:",num, base);
-
- int i ;
- for (i = count - 1; i >= 0; i--) {
- printf("%c", store[i]);
- }
- printf("\n");
- return 0;
- }
复制代码 |