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