所以我正在编写一个程序,我们一次性收集楼梯总数和步数。例如。
让我们说
stairs=10;
steps=3;
所以从零开始。它去了。 0-1-2。然后回到1并进入1-2-3,2-3-4,3-4-5,4-5-6,依此类推,直到8-9-10 我为它编写了代码。但缺少一些东西。这是:
#include<stdio.h>
int main()
{
int i,j,stair,step;
stair=10;
step=3;
for(i=0;i<=stair;i++)
{
for(j=1;j<=step;j++)
{
printf("\nJ:::%d",j);
}
printf("\tI:::%d",i);
}
}
而不是只提供代码。有人可以用逻辑来帮助我吗? 非常感谢提前。
答案 0 :(得分:1)
#include<stdio.h>
int main()
{
int i,j,stair,step;
stair=10;
step=3;
for(i=0;i<=stair-step+1;i++)// here we are decreasing step bcz we are ruuning loop for extra steps in next for loop
{
for(j=i;j<i+step;j++)
{
printf("\nJ:::%d",j);
}
printf("\tI:::%d",i);
}
return 0;
}
我们现在有模式
0-1-2
1-2-3
2-3-4
3-4-5
它是一个共同的系列0,1,2,3 ...在evrey row
因为每行以前一行的+1开始,所以是i的值
所以我们将在每个循环中启动j=i
,因为我将运行0,1,2,3 ...
接下来我们需要达到step的值,这样我们才会写j<i+step
这样它就可以达到当前的i +步数值
假设i = 0;
step = 3
for(j=i;j<i+step;j++)
j = 0初始值j <0 + 3表示循环将从0到2
运行i=1 =>loop will run from j=1 to j<1+3 Output 1,2,3
i=2 =>loop will run from j=2 to j<2+3 Output 2,3,4
i=3 =>loop will run from j=3 to j<3+3 Output 3,4,5
...
..
..
答案 1 :(得分:-1)
不确定你的意思是什么,但如果你想通过步数上楼,那么你需要更改for循环中的增量值:
for(j=1;j<=step;j+=step)