[問題] 程式碼片段解讀

看板C_and_CPP (C/C++)作者 (深藍)時間13年前 (2012/10/22 14:53), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
整個程式的程式碼是這樣 #include<stdio.h> #include<stdlib.h> #include<time.h> #define random() rand()%49+1 int main(){ srand(time(0)); int arr[6],i,count=1,num; arr[0]=random(); while(count<6){ num=random(); for(i=0;i<count;i++){ if(arr[i]==num) break; } if(i==count) arr[ count++]=num; } for(i=0;i<6;i++) printf(" %d",arr[i]); system("pause"); return 0; } 我對以下這段的程式碼有問題: while(count<6){ num=random(); for(i=0;i<count;i++) { if(arr[i]==num) break; } if(i==count) arr[ count++]=num; } 這段的程式碼我個人的解讀是 先檢查count值是否小於6,如果小於的話就執行while迴圈 再來num先取得一個亂數值 再來一個for迴圈,比對arr[i]是否等於num,如果等於就跳出迴圈 再來比對i和count值是否相等,如果等於,把num值給arr[count++] 最後再回while迴圈檢查count是否有小於6 我想請問各位大大,我這樣的解讀是否有問題,還有if(i==count)這邊, 我們沒設值給i,這樣i如何跟count比對?另外arr[count++]=num, 把num值給arr陣列,可是count的初值是1,這樣arr陣列豈不就沒有arr[0]的值嗎?? 麻煩各位大大幫小弟解惑一下~謝謝各位~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.30.208.91

10/22 15:10, , 1F
進 while 之前有 arr[0]=random();
10/22 15:10, 1F

10/22 15:11, , 2F
i 在每次進 for 迴圈會被設成零,並根據執行狀況改變數值
10/22 15:11, 2F

10/22 15:20, , 3F
for迴圈裡的i不是區域變數嗎??離開for迴圈i值還存在??
10/22 15:20, 3F

10/22 15:58, , 4F
i是在while外面宣告的啊 生命週期是到main結束
10/22 15:58, 4F

10/22 16:04, , 5F
了解~感謝兩位大大的解說與指導~受教了~謝謝^^~
10/22 16:04, 5F
文章代碼(AID): #1GXErziW (C_and_CPP)
文章代碼(AID): #1GXErziW (C_and_CPP)