Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
putchar()可以打印整数吗?_C_File Io_Integer_Output_Putchar - Fatal编程技术网

putchar()可以打印整数吗?

putchar()可以打印整数吗?,c,file-io,integer,output,putchar,C,File Io,Integer,Output,Putchar,如何仅借助putchar()打印整数。我想在不使用外部存储的情况下执行此操作。 这个问题是在去年的一次采访中提出的。考虑使用itoa函数(您需要导入其库),然后在它生成的cstring中循环每个字符(使用strlen获取循环的上限),然后在每个字符上简单地使用putchar()。考虑使用itoa函数(你需要导入它的库),然后在它生成的cstring中循环每个字符(使用strlen获得循环的上限),然后在每个字符上简单地使用putchar()。当面对面试中模糊的要求时,最好表达你的假设 我认为关于

如何仅借助
putchar()
打印整数。我想在不使用外部存储的情况下执行此操作。

这个问题是在去年的一次采访中提出的。

考虑使用itoa函数(您需要导入其库),然后在它生成的cstring中循环每个字符(使用strlen获取循环的上限),然后在每个字符上简单地使用putchar()。

考虑使用itoa函数(你需要导入它的库),然后在它生成的cstring中循环每个字符(使用strlen获得循环的上限),然后在每个字符上简单地使用putchar()。

当面对面试中模糊的要求时,最好表达你的假设

我认为关于只能使用
putchar
的要求意味着这是我唯一可以调用的库函数。此外,我还假设“无外部存储”意味着我无法明确创建缓冲区。如果面试官同意我的假设,我将继续:

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    if (n / 10 != 0)
        pr_int(n / 10);
    putchar((n % 10) + '0');
}

当面对面试中含糊不清的要求时,表达你的假设是个好主意

我认为关于只能使用
putchar
的要求意味着这是我唯一可以调用的库函数。此外,我还假设“无外部存储”意味着我无法明确创建缓冲区。如果面试官同意我的假设,我将继续:

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    if (n / 10 != 0)
        pr_int(n / 10);
    putchar((n % 10) + '0');
}

已经有一个类似的问题了,我回答了

将其转换为仅使用putchar的程序应该很容易(例如,执行以下操作:

while(buf[i])
    putc(buf[i++]);

putc('\n');

已经有一个类似的问题了,我回答了

将其转换为仅使用putchar的程序应该很容易(例如,执行以下操作:

while(buf[i])
    putc(buf[i++]);

putc('\n');

我刚刚组装了一些可怕的东西。它主要是概念证明,它真的很可怕,只适用于正整数,但几乎不使用任何存储。啊,整数不能太大,它可能有缺陷

#include <stdio.h>
#include <assert.h>

int main()
{
    const int max_precision = 100000;
    int b = 7414;
    int max = b * max_precision;

    assert(b > 0);

    while (b <= max && b >= 0)
    {
        putchar('0' + (b / max_precision) % 10);
        b *= 10;
    }

    putchar('\n');
}
#包括
#包括
int main()
{
const int max_精度=100000;
int b=7414;
int max=b*max\u精度;
断言(b>0);
while(b=0)
{
putchar('0'+(b/max_精度)%10);
b*=10;
}
putchar('\n');
}

max\u precision
设置将打印多少位。
b
存储实际数字,
max
用于终止循环(该循环或整数溢出).

我刚刚组装了一些可怕的东西。它主要是概念证明,非常可怕,只适用于正整数,但几乎不使用任何存储。啊,整数不能太大,也可能有问题

#include <stdio.h>
#include <assert.h>

int main()
{
    const int max_precision = 100000;
    int b = 7414;
    int max = b * max_precision;

    assert(b > 0);

    while (b <= max && b >= 0)
    {
        putchar('0' + (b / max_precision) % 10);
        b *= 10;
    }

    putchar('\n');
}
#包括
#包括
int main()
{
const int max_精度=100000;
int b=7414;
int max=b*max\u精度;
断言(b>0);
while(b=0)
{
putchar('0'+(b/max_精度)%10);
b*=10;
}
putchar('\n');
}

max\u precision
设置将打印多少位。
b
存储实际数字,
max
用于终止循环(该循环或整数溢出)。

正确回答此问题主要取决于“外部存储”和“
putchar
仅”的含义


解决方案现在符合所有ISO C标准。详细信息可以找到。

正确回答这个问题很大程度上取决于“外部存储”和“
putchar
仅”的含义


该解决方案现在符合所有ISO C标准。可以找到详细信息。

它们是指仅用于输出或任何外部库引用的“putchar”吗?我假设是前者。可以认为
itoa
使用外部内存“外部存储”但是?他是说什么都不能存储在ram中吗?而且
itoa
甚至不是一个标准函数……我从来没有说过它是。事实上我说过,“你需要导入它的库”。它们是指“putchar”吗仅用于输出或任何外部库参考?我假设为前者。可以认为,
itoa
使用外部内存“外部存储”?他是说什么都不能存储在ram中?而且
itoa
甚至不是一个标准函数…我从来没有说过。事实上我说过,“您需要导入它的库”。
n=-n
将在INT_MIN时失败。+1@H2CO3:但是
n=-n;
可能会失败。C标准允许未失败的实现:-)
n=-n
将在INT_MIN时失败。+1@H2CO3:但是
n=-n;
可能会失败。C标准允许未失败的实现:-)顺便说一句,这位面试官认为你在准备2013年的IOCCC吗?你说的“不使用外部存储”是什么意思?@MichaelBurr我认为面试官的意思是不使用变量,顺便问一下,这位面试官认为你在准备2013年的IOCCC吗?你说的“不使用外部存储”是什么意思“?@MichaelBurr我想面试官的意思是不使用变量,我也很困惑