我是C的初学者,无法在任何地方找到答案,因为我不知道该怎么说,所以我只想问一个问题。我理解基本的循环,但我想要做的是制作一个小程序,输出就是这样只使用循环:
我的代码到目前为止
int x;
int y = 1;
for (x=1; x<=5; x++)
{
while(y<=5)
{
printf("%d", y);
y++;
}
}
这就是我到目前为止所不知道下一步该去哪里,如果有人能提供帮助我会感激不尽。
关。你的外循环需要倒计时,而不是向上,你的内循环需要从1到x计数。
int x, y;
for (x=5; x>=1; x--)
{
for (y=1;y<=x;y++)
{
printf("%d", y);
}
printf("\n");
}
这是使用Integer Division的FOR循环的另一种解决方案。尝试:
#include <stdio.h>
int main(void){
int n= 12345, i;
for(i=n;i>0;i/=10){
printf("%d\n",i);
}
return 0;
}
你必须看到你想要的模式,并将其应用于循环中以获得它。
你需要输出12345 1234 123 12 1
。所以,第一次迭代应该从1
开始直到5
,第二次应该从1
开始直到4
,依此类推......
因此,外部循环应该给出内部循环的最终限制,而内部循环应该始终以1
开头。
尝试
for (x=5; x>=1; x--)
{
y = 1; // because the number always start with 1
while(y<=x)
{
printf("%d", y);
y++;
}
printf("\n"); //to go to next line
}
为了好玩:另一种简单划分每个循环的方法。但是使用best answer
int main(void) {
int x = 12345;
do {
printf("%d\n", x);
x /= 10;
} while (x);
return 0;
}
产量
12345
1234
123
12
1
另一种解决方案是使用integer division
并使用一个循环:
int x = 12345;
// repeat this loop as long as x != 0
while (x)
{
printf("%d\n", x);
x /= 10; // x = x/10;
}
您需要对外循环进行2次更改才能获得预期的输出。
for (x=1; x<=5; x++)
应该是for (x=1; x<=5; x--)
,因为你的程序将第一次计数到5,第二次计数4,第三次计数3等等。printf("\n")
,以便在输出每个序列后打印一个新行。您还需要对内循环进行1次更改:
y <= 5
而不是y <= x
,因为x
总是等于你想要打印的最后一个数字,因为你在外循环中递减它。