[問題] 關於我寫的迴圈疑問

看板C_and_CPP (C/C++)作者 (povertytrap)時間12年前 (2014/01/27 20:14), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
各位大大好 我想請問一下 我目前在寫這一題題目 寫一個叫做 count( )的函式,此函式有2 個參數,一個是整數陣列score,另 一個是代表陣列大小的整數 size。假設 score 陣列的所有元素都有整數值,此函式將計算 陣列內有多少個不同的數值,並將其傳回。 這是我的程式碼 #include <stdio.h> #include <stdlib.h> void main(void) { int count(int*, int); int list[]={10, 20, 30, 40, 50, 60, 10, 10, 20, 40}; int result; result = count(list, 10); printf(" 一共有 %d 個不同的整數\n ", result); } int count(int list[], int size) { int result=1; int i, j; if ( size == 0 ) result = 0; for ( i= 1; i < size; i++ ) { for ( j=0; j<i; j++ ) if ( list[j] == list[i]) break; if ( j == i ) result += 1; } return result; } 這是解答的程式碼 #include <stdio.h> #include <stdlib.h> #define SIZE 10 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int count (int score[],int size){ int i,j,diffNum=0; for(i=0;i<size;i++){ for(j=0;j<i;j++){ if(score[j]==score[i]) break; } if(j==i) diffNum++; } return diffNum; } int main(void) { int score[SIZE]={10,20,40,20,50,10,60,30,10,10}; printf("%d\n",count(score,SIZE)); return 0; } 兩個答案都對 可是解答版本的for迴圈 一開始j=0就不符合j<i的條件了阿 這樣怎麼可以跑?答案為甚麼也對.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.70.9

01/27 20:18, , 1F
所以 i = 0 時內圈不會跑, 但 i = 1 開始就會了
01/27 20:18, 1F

01/27 20:19, , 2F
然後 i = 0 的那一次 ++ 讓計數器變成 1
01/27 20:19, 2F

01/27 20:20, , 3F
這跟你一開始設 result = 1 是一樣的意思
01/27 20:20, 3F

01/27 20:22, , 4F
了解謝謝你
01/27 20:22, 4F

01/27 21:11, , 5F
在請問一下,我有拿去問老師可是他沒跟我講這個
01/27 21:11, 5F

01/27 21:12, , 6F
它一直跟我說i=size,我還是不懂為甚麼他要這樣說
01/27 21:12, 6F

01/27 21:20, , 7F
沒事了= =,跟老師雞同鴨講
01/27 21:20, 7F
文章代碼(AID): #1IvasDAK (C_and_CPP)
文章代碼(AID): #1IvasDAK (C_and_CPP)