我有一个包含100个数字的数组,我试图将其打印出来,每行只有10个整数,并且每个数字之间都有一个制表符。它只打印前10个整数,然后停止,这是因为我的for循环才有意义。我显然缺少它的一部分,以允许它继续通过数组。我打算尝试添加行
for(int line_num = 0; line_num < 10; line_num+=10)
while循环之后的for语句之前
int array_value;
int length_of_array = 100;
while (length_of_array <= 100){
for(array_value = 0; array_value < 10; ++array_value){
printf("%d ", A[array_value]);
++length_of_array;
}
我还考虑添加这样的一行
if (array_value % 10 == 0)
printf("\n");
我知道了!在下面发布答案。
答案 0 :(得分:1)
为清楚起见,将length_of_array重命名为offset_in_array,然后在开始时将其设置为零。我重命名了array_value并更正了您的长度检查。我还向内部循环添加了一个检查,以防数组长度发生变化并且不被10除。
像这样:
int i;
#define ARRAY_LENGTH 100
int offset_in_array = 0;
while (offset_in_array < ARRAY_LENGTH){
for(i = 0; i < 10 && offset_in_array < ARRAY_LENGTH; ++i){
printf("%d ", A[offset_in_array]);
++offset_in_array;
}
}
我还没有尝试运行它,但是应该更近一些。
答案 1 :(得分:1)
只需每十分之一打印换行符...如果不是十分之一,则打印一个制表符。
for (size_t i = 0; i < array_length; ++i) {
printf("%d%c", A[i], i % 10 != 9 ? '\t' : '\n');
}
可通过onlinedbg获得实时代码。
答案 2 :(得分:1)
这可能是您想要的:
/* test.c */
#include <stdio.h>
#define ELEMENTS 100
int main (void)
{
int array [ELEMENTS];
for ( int i = 0; i < ELEMENTS; ++i )
array [i] = i;
for ( int i = 0; i < ELEMENTS; ++i ) {
printf ("%i", array[i]);
if ( (i + 1) % 10 != 0 )
printf ("\t");
else
printf ("\n");
}
return 0;
}
编辑:由于制表符可以扩展到该行末尾的下一行,因此您必须小心使用制表符和换行符。
答案 3 :(得分:1)
只需将length_of_array
的值更改为0
,并在\n
循环后打印for
。
int array_value;
int length_of_array = 0;
while (length_of_array <= 100) {
for(array_value = 0; array_value < 10; ++array_value){
printf("%d ", A[array_value]);
++length_of_array;
}
printf("\n");
}
答案 4 :(得分:0)
您可以使用以下解决方案在C中打印10行,每行100个数组值:
for (int i = 0; i < 100; ++i){
printf("%i\t", A[i]);
if ((i+1)%10 == 0){
printf("\n");
}
}