在C语言中,我想连续打印4个十进制数字,然后打印下一个4

在C语言中,我想连续打印4个十进制数字,然后打印下一个4,c,printf,C,Printf,但我希望每行打印4个值,如下所示: 0123 up to 1000 我想看看数字,而不是数字。对于一位数字,它应该是这样的:0123对于两位数字,它应该是这样的:11121314对于三位数字,它应该是这样的:11111213114最多99699799999最多1000只要检查i+1是否可以被4整除。只要它可以被4整除,就打印一个换行符 0123 4567 ... for(int i=0;i=100000000的值,输出确实是不正确的。因此,在INT_max(谈论max.size==IN

但我希望每行打印4个值,如下所示:

0123 up to 1000

我想看看数字,而不是数字。对于一位数字,它应该是这样的:
0123
对于两位数字,它应该是这样的:
11121314
对于三位数字,它应该是这样的:
11111213114
最多
99699799999
最多
1000
只要检查
i+1
是否可以被4整除。只要它可以被4整除,就打印一个换行符

0123   
4567
...
for(int i=0;i
要使循环打印到并包括
1000
对于
max.size=1000
,您必须使用
您也可以在不使用缓冲区的情况下执行此操作:

#include <stdio.h>

int main(void) {
    int max = 1000;
    for (int i = 0; i < max; ++i) {
        printf("%d", i);
        if (i % 4 == 3)
            putchar('\n');
    }
    return 0;
}
#包括
无效打印数字(整数);
内部主(空){
putchar('0');
int i;

对于(i=1;如果
i
可以被4整除,我就打印一个空格。你是说每行4位十进制数字吗?你能稍微扩展一下你的预期输出吗?@Santhosh:你能回答我的问题吗?数字之间有差异(
0
1
9
)和可以有一个或多个数字的数字。您的问题写得不明确。@chqrlie我修改了代码,希望看到的是数字,而不仅仅是数字。对于一位数字,它应该是这样的:0123对于两位数字,它应该是这样的:11121314对于三位数字,它应该是l像这样:11111113114到996997998999希望这是清楚的。这是我第一次出现堆栈溢出。如果我不清楚,请让我知道。谢谢这似乎不符合OP的目标。@chqrlie老实说,OP的目标对我来说不是很清楚。我同意。从他的例子来看,他似乎希望每行有4个数字,而不是4个数字。@Shravan40:我同意我不知道谁是沉默的反对者,不加评论地这样做是不好的做法。@chqrlie:我打赌这是因为有人强烈反对回答不清楚的问题。(事实上我也这么做,但不是反对者的回答!:)我宁愿指出,在OP澄清之前,这是没有用的。)@BLUEPIXY:正确。使用了一个有点迂腐的通用公式进行了修复。请注意,使用
snprintf
可以防止UB,但对于
max.size>=100000000
的值,输出确实是不正确的。因此,在INT_max(谈论
max.size==INT_max
)之前,它无法执行。(我也是:)@BLUEPIXY:如果
max.size=INT_max
,循环确实会调用未定义的行为,但它肯定会一直运行,直到
INT_max-1
,生成许多GB的输出(精确地说是254546700字节)。是的,从
i=INT_max-1
开始(不要太严重)@BLUEPIXY:好的,为了完整性,而不是严肃性,我更新了代码,这样它甚至定义了
max.size==INT\u max
的行为。
for (int i = 0; i < max.size; ++i) {

     printf("%d", i);
     if((i+1)%4 == 0)
         printf("\n");
}
#include <stdio.h>
#include <limits.h>

int main(void) {
    struct { int size; } max = { 1000 };

    if (max.size >= 0) {
        for (int col = 0, i = 0;; i++) {
            char buf[2 + sizeof(int) * CHAR_BIT / 3];
            int n = snprintf(buf, sizeof buf, "%d", i);
            for (int j = 0; j < n; j++) {
                putchar(buf[j]);
                if (++col == 4) {
                   putchar('\n');
                   col = 0;
                }
            }
            if (i == max.size) {
                if (col > 0) {
                    putchar('\n');
                }
                break;
            }
        }
    }
    return 0;
}
0123
4567
8910
1112
1718
...
6997
9989
9910
00
#include <stdio.h>

int main(void) {
    int max = 1000;
    for (int i = 0; i < max; ++i) {
        printf("%d", i);
        if (i % 4 == 3)
            putchar('\n');
    }
    return 0;
}
#include <stdio.h>

void print_digit(int number);

int main(void) {
    putchar('0');
    int i;
    for(i = 1; i <= 1000; i++) {
        print_digit(i);
    }
}

void print_digit(int number) {
    static int digit_count = 1; // a zero is already printed
    int i;
    for(i = 1; i <= number; i *= 10);
    for(i /= 10; i; i /= 10) {
        putchar('0' + number % (i * 10) / i);
        digit_count++;
        if(digit_count == 4) {
            digit_count = 0;
            putchar('\n');
        }
    }
}