在C语言中,我想连续打印4个十进制数字,然后打印下一个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
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');
}
}
}