C循环递增
C looping counting up
我是 C 的初学者,在任何地方都找不到这个问题的答案,因为我不知道如何表达,所以我只想问一个问题。
我了解基本循环,但我想做的是制作一个小程序,其中仅使用循环输出:
- 12345
- 1234
- 123
- 12
- 1
到目前为止我的代码
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");
}
您必须看到您想要的模式并将其应用到循环中才能获得它。
您需要输出 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
}
为了好玩:另一种简单地划分每个循环的方法。但是使用
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;
}
这是另一种解决方案,仅使用 FOR 循环和 整数除法 。尝试:
#include <stdio.h>
int main(void){
int n= 12345, i;
for(i=n;i>0;i/=10){
printf("%d\n",i);
}
return 0;
}
您需要对外循环进行 2 处更改才能获得预期的输出。
for (x=1; x<=5; x++)
应该是 for (x=1; x<=5; x--)
因为你的程序第一次会计数到 5,第二次是 4,第三次是 3,等等。
- 您应该包括
printf("\n")
以便在输出每个序列后打印一个新行。
您还需要对内部循环进行 1 处更改:
- 而不是
y <= 5
你应该说 y <= x
因为 x
总是等于你要打印的最后一个数字,因为你在外循环中递减它。
我是 C 的初学者,在任何地方都找不到这个问题的答案,因为我不知道如何表达,所以我只想问一个问题。 我了解基本循环,但我想做的是制作一个小程序,其中仅使用循环输出:
- 12345
- 1234
- 123
- 12
- 1
到目前为止我的代码
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");
}
您必须看到您想要的模式并将其应用到循环中才能获得它。
您需要输出 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
}
为了好玩:另一种简单地划分每个循环的方法。但是使用
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;
}
这是另一种解决方案,仅使用 FOR 循环和 整数除法 。尝试:
#include <stdio.h>
int main(void){
int n= 12345, i;
for(i=n;i>0;i/=10){
printf("%d\n",i);
}
return 0;
}
您需要对外循环进行 2 处更改才能获得预期的输出。
for (x=1; x<=5; x++)
应该是for (x=1; x<=5; x--)
因为你的程序第一次会计数到 5,第二次是 4,第三次是 3,等等。- 您应该包括
printf("\n")
以便在输出每个序列后打印一个新行。
您还需要对内部循环进行 1 处更改:
- 而不是
y <= 5
你应该说y <= x
因为x
总是等于你要打印的最后一个数字,因为你在外循环中递减它。