java输出int_如何使打印整数函数(没有printf)输出INT_MAX

我正在编写一个不使用printf的打印整数函数 . 该函数应该能够接受需要打印的整数,输出的基数以及要在整数值之前插入的字符 . 我已经能够制作大部分代码;然而,一旦输入超过15亿,输出保持不变,大约为10亿 . 在平台上我使用INT_MAX是21.7亿,所以我知道这肯定在int的范围内 . 另外,我想知道如何在没有静态数组的情况下创建这个函数:在我的情况下是baseDigs .

#include

#include

#include

#include

#include "hw02.h"

int Pow(int a, int b);

void print_integer(int n, int radix, char* prefix){

if(radix == 0){

return -1;

}

char baseDigs[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','n','p','q','r','s','t','u','v','w','x','y','z'};

unsigned int buffer = n;

int dollar = 0;

int counter = 0;

int counter2 = 0;

int counter3 = 0;

int j = 0;

if (prefix[0] == '$'){

dollar++;

}

if(n < 0){

fputc('-', stdout);

buffer = -buffer;

}

while(prefix[j] != '\0'){

fputc(prefix[j], stdout);

j++;

}

while (buffer >= radix){

counter = 0;

counter2 = 0;

while((Pow(radix, counter)) <= buffer){

counter++;

}

counter--;

while(counter3 - counter > 1){

fputc('0', stdout);

counter3--;

}

counter3 = counter;

while((Pow(radix, counter)* counter2)<= buffer){

counter2++;

}

counter2--;

if (dollar > 0){

if(counter == 1){

fputc('.', stdout);

}

}

putchar(baseDigs[counter2]);

buffer-= Pow(radix,counter) * counter2;

}

while(counter3 > 1){

fputc('0', stdout);

counter3--;

}

fputc(baseDigs[buffer], stdout);

return;

}

int Pow(int a, int b){

if(b<0){

return (1/a) * Pow(a ,b-1);

}

else if (b==0) {

return 1;

}

else if (b==1){

return a;

}

else{

return a * Pow(a,b-1);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值