看板 C_and_CPP 關於我們 聯絡資訊
各位大大好 我想請問一下 我目前在寫這一題題目 寫一個叫做 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
LPH66:所以 i = 0 時內圈不會跑, 但 i = 1 開始就會了 01/27 20:18
LPH66:然後 i = 0 的那一次 ++ 讓計數器變成 1 01/27 20:19
LPH66:這跟你一開始設 result = 1 是一樣的意思 01/27 20:20
povertytrap:了解謝謝你 01/27 20:22
povertytrap:在請問一下,我有拿去問老師可是他沒跟我講這個 01/27 21:11
povertytrap:它一直跟我說i=size,我還是不懂為甚麼他要這樣說 01/27 21:12
povertytrap:沒事了= =,跟老師雞同鴨講 01/27 21:20