我刚开始学习,这实际上是我的firts帖子,很抱歉,如果这是一个愚蠢的问题。
我需要制作一个三角形 - 宽度由用户使用循环确定。我已经设法使用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);
}
外部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++;
}
从快速查看您的代码中,您和j变量似乎不是用一个值启动的,在您的程序中应该为1或0,取决于while条件。<<<<<<<<<</p>
您必须翻译要做的事情,因此:
- 启动循环之前的初始变量
- 为您的新
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);
}
首先,您需要实例化变量,因为在它们没有值时:int j,i = 1;然后:
while (i <= a)
{
while (j <= i)
{
printf("%i", j);
j++;
}
printf("n");
i++;
}
在k&amp; r c编程语言中, for
循环作为句法糖引入了一段时间循环,即。
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