为循环对寻求此解释

时间:2011-06-21 09:16:40

标签: c for-loop

我一直在尝试使用for循环的数字输出模式,而我无法准确理解这段代码正在做什么。有人可以逐行解释为什么这会显示它的输出吗?任何帮助总是受到赞赏..

 int main() {

     int x, y; 
     for(x = 10; x >= 1; x--)
     {
         for(y = 1; y < x; y++)    
         {
             printf("%d", y);
         }
         printf("\n");
     }

     system("pause");
     return 0;
 }

5 个答案:

答案 0 :(得分:2)

有两个循环,一个是内部另一个。

外部循环(x)从10减少到1(包括1):

for(x = 10; x >= 1; x--)

内循环(y)从1到x - 1计算。它将针对x在外循环中采用的每个值迭代此范围。

for(y = 1; y < x; y++)   

所以它会像这样:

  • 在开始时,x == 10y将取值1,2,3,4,5,6,7,8,9。这些数字将一个接一个地打印
  • 然后(在内循环结束后)x将变为9,因此在下一次迭代中,y将打印值1,2,3,4,5,6,7,8
  • ...
  • 在上一次迭代中,x将变为2,y将仅打印值1
  • 最后,在最后一次迭代中,x将为1,内部循环根本不会运行(不会有大于1但小于x的数字)。所以最后一行是空白的。

答案 1 :(得分:2)

在外部循环中,您将x设置为降序值,直至x >= 1。换句话说,您正在循环x的{​​{1}}值。

10, 9, ..., 1

在内部循环中,您将 for(x = 10; x >= 1; x--) { 的值经过y=1

所以,y<xx=10

y=1,2, ...9x=9

等等。

y=1,2, ...8

在内部循环中,您打印出 for(y = 1; y < x; y++) {

的值
y

在每个内循环结束时,您正在打印换行符。

         printf("%d", y);
     }

实际上,您为 printf("\n"); } 的每个值在一行中打印出y个值。因此,当xx转到10时,您会期望输出如下:

1

答案 2 :(得分:0)

 int main() {

 int x, y; 
 for(x = 10; x >= 1; x--)
 {
   // this for loop will run 10 times, with x values: 10 9 8 ... 2 1
   for(y = 1; y < x; y++)    
   {
     // will print 1234 ... up to one less than the current value of x
     printf("%d", y);
   }
   printf("\n");
 }

 system("pause");
 return 0;
 }

期待输出

123456789
12345678
1234567
123456
12345
1234
123
12
1

答案 3 :(得分:0)

int main() {}这是方法的名称

int x, y;这是声明两个整数,其中没有存储值(例如x =无数字&amp; y =无数字)。

for(x = 10; x >= 1; x--)这设置x = 10然后执行给定块内的代码多次,每次向上递减x,直到达到1,然后停止循环。

for(y = 1; y < x; y++)设置y = 1然后执行给定块内的代码多次,每次向上增加y,直到达到低于x的值。

printf("%d", y);这会打印y的值。  printf("\n");这开始了新的一行  system("pause");这会暂停系统  return 0;这将返回0,从而结束程序

答案 4 :(得分:0)

这只是从1循环到“1小于x”。在外部循环中,x从10减少到1。

int x, y;  //Declare 2 integers x and y.

for(x = 10; x >= 1; x--)      //Loop through values of x starting with 10 then decrease by 1 until x = 1. Each time do the following:
{          
    for(y = 1; y < x; y++)  //Loop through values for y starting at 1 and going to 1 less than the x from the line above. Each time do the following:            
    {
        printf("%d", y);  // Print the value of y as a decimal integer               
    }   
    printf("\n");      //Print a carriage return. i.e. start a new line after this.
}

system("pause");  //Wait so you can see the output until you type a key.

return 0; //When this program is run it will return a value of 0 to whereever it was called from.

您应该看到以下输出。

123456789
12345678
1234567
123456
12345
1234
123
12
1