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)