簡體   English   中英

在我的C程序中,為什么我的跟蹤循環和實際輸出不同?

[英]In my C program, why are my traced loop and actual output different?

  1. 跟蹤以下程序的執行? 將打印數組的最終值是什么? 我必須跟蹤以下C代碼並編寫輸出。 我運行了程序,輸出結果與預期的不同。 很可能我沒有正確地找到它,但是我找不到我做錯了什么。

*我沒有寫代碼。 該代碼已包含在問題中。

#include <stdio.h>
#include <math.h>

int main()
{
    int a[7]={2,0,0,0,0,0,0};
    int i=1;

    for (i=1; i<7; i++)
    {

       if (i<3)
          a[i] = a[i-1]+i+1; //when i=1, a[1]= a[1-1]+1+1 -> a[0]+1+1 -> 2+1+1=4
                             //a[1] is now 4
                             //when i=2, a[2]= a[2-1]+1+1 -> a[1]+1+1 -> 4+2+1=7
                             //a[2] is now 7
       else if (i<5) 
          a[i] = a[i-2]+1;   //when i=3, a[3]= a[3-2]+1 -> a[1]+1 -> 4+1=6 
                             //a[3] is now 6 but it should be 11??? 11
                             //when i=4, a[4]= a[4-1]+1 -> a[2]+1 -> 7+1=8
                             //a[4] is now 8 but it should be 16??? 16

       else
          a[i] = a[i-2]*i-2; //when i=5, a[5]= a[5-2]*5-2 -> a[3]*3 -> 6*3= 18 
                             //a[5] is now 18 but it should be 22???
                             //when i=6, a[6]= a[6-1]*6-2 -> a[5]*4 -> 18*4= 72
                             //a[6] is now 8 but it should be 29????

    }
    for (i=0; i<7; i++)
       printf("a[%d] = %d\n",i,a[i]); //prints a[0] = 2 first because i=0 in the above loop
}

實際輸出:

a[0] = 2
a[1] = 4
a[2] = 7
a[3] = 11
a[4] = 16
a[5] = 22
a[6] = 29

我復制了代碼並運行了,這是我的輸出:

a[0] = 2
a[1] = 4
a[2] = 7
a[3] = 5
a[4] = 8
a[5] = 23
a[6] = 46

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM