我刚刚开始学习,这实际上是我在这里的第一篇文章,很抱歉,如果这是一个愚蠢的问题。
我需要制作一个三角形 - 宽度由用户使用循环决定。我已经设法用for循环做了但是当我尝试重新排列while循环的变量时,一切都变得混乱。
这就是我为'for'所拥有的:
def show
@movie = Movie.find(params[:id])
@actors = @movie.actors
end
这就是我尝试过 - 并且失败了 - 同时:
main()
{
int a, i, j, rep;
do
{
printf("Type the width of the triangle \n");
scanf("%d", &a);
for (i = 1; i <= a; i++)
{
for (j = 1; j <= i; j++)
{
printf("%i", j);
}
printf("\n");
}
for (i = 0; i <= a; i++)
{
for (j = 1; j <= a - i; j++)
{
printf("%i", j);
}
printf("\n");
}
printf("\n Do you want to run the program again? \n 1=Yes \n");
scanf("%i", &rep);
}
while (rep == 1);
}
答案 0 :(得分:0)
从快速查看代码看起来你的i和j变量似乎没有用一个值启动,在你的程序中它应该是1或0,取决于while条件。
答案 1 :(得分:0)
首先,你需要实例化变量,因为虽然它们没有得到一个值:int j,i = 1; 然后:
{{1}}
答案 2 :(得分:0)
你必须翻译其中的内容,所以:
while
循环使用相同的条件#include <stdio.h>
int main(void)
{
int a;
int i;
int j;
int rep;
do
{
printf("Type the width of the triangle \n");
scanf("%d", &a);
// init i before start loop
i=1;
while (i <= a)
{
// init j before start loop
j = 1;
while (j <= i)
{
printf("%i", j);
j++;
}
printf("\n");
i++;
}
// init i before start loop
i=0;
while (i <= a)
{
// init j before start loop
j = 1;
while (j <= a-i)
{
printf("%i", j);
j++;
}
printf("\n");
i++;
}
printf("\n Do you want to run the program again? \n 1=Yes \n");
scanf("%i", &rep);
}
while (rep == 1);
}
答案 3 :(得分:0)
外for
部分:
for (i = 1; i <= a; i++)
{
...
}
相当于:
int i = 1;
while (i <= a)
{
...
i++;
}
和内部for
部分:
for (j = 1; j <= i; j++)
{
...
}
相当于:
int j = 1;
while (j <= i)
{
...
j++;
}
所以整个第一个循环:
for (i = 1; i <= a; i++)
{
for (j = 1; j <= i; j++)
{
printf("%i", j);
}
printf("\n");
}
将转换为:
int i = 1, j;
while (i <= a)
{
j = 1;
while (j <= i)
{
printf("%i", j);
j++;
}
printf("\n");
i++;
}
以类似的方式,第二个循环:
for (i = 0; i <= a; i++)
{
for (j = 1; j <= a - i; j++)
{
printf("%i", j);
}
printf("\n");
}
将转换为:
int i = 0, j;
while (i <= a)
{
j = 1;
while (j <= a - i)
{
printf("%i", j);
j++;
}
printf("\n");
i++;
}
答案 4 :(得分:0)
在K&amp; R C编程语言中,引入for
循环作为while循环的语法糖,即
for (i = 0 ; i < someValue ; ++i)
// ^^^^^A ^^^^^^^^^^^^^B ^^^C
{
doSomething(i);
}
真的是
i = 0;
//^^^A
while (i < someValue)
// ^^^^^^^^^^^^^B
{
doSomething(i);
i++;
// ^^^C
}
(对于语言律师来说,有一个微妙的区别,但在你到达break
和continue
之前你不需要担心)
在使用while
的程序中,您不会对循环变量进行任何初始化(上面的代码示例中标记为A
的位)。例如,i和j从未定义开始,因此在整个代码中技术上保持未定义。如果他们开始时为0,那么在你的j循环中你永远不会将j重置为0