C编程键入一个由10修改的列表
我正在尝试使用用户输入随机数的程序,程序输入0到9的列表。
例如,假设用户输入数字12,则屏幕应如下所示:
0123456789012
最后的“2”表示第12个数字。 我试过这个,但它给了我一个无限循环,我不知道如何告诉它停止:
for(i = 0; i < cells; i++) { i = i%10; printf("%d", i); }
这里的单元格是用户输入的数字。
问题是你在循环中改变i
。 您必须迭代输入的次数。 你几乎就在那里,但是你永远地循环,因为你正在修改i
,使得它永远不会大于或等于cells
cells > 10
cells
cells > 10
。
试试这个:
for( int i = 0; i < cells; ++i ) { printf( "%d", i % 10 ); }
也...
0123456789012
最后的“2”表示第12个数字。
第二2
是第13个数字,而不是第12个数字:)
不要修改循环内的原始变量! 创建一个新变量以保存i%10
的值。
你不想设置i = i%10
。 创建另一个变量并将其设置为i%10
当你做i = i%10;
你实际上改变了循环用于计数的i
的内容。 你应该做的是要么像printf那样计算mod
printf("%d", i%10);
或将mod存储在另一个变量中并打印出来
mod_i = i % 10; printf("%d", mod_i);
问题是i = i%10
; 您正在将i
的值更改为i % 10
。 因此, cells
大于10,在某些时刻,我将在循环开始时具有值10,然后被赋值为0( 10 % 10
)。 因此,你的循环将永远重复,因为i < cells
将永远是假的。
解决方案是完全删除赋值,只删除printf("%d", i % 10)
。