作者povertytrap (povertytrap)
看板C_and_CPP
標題[問題] 關於我寫的迴圈疑問
時間Mon Jan 27 20:14:03 2014
各位大大好
我想請問一下 我目前在寫這一題題目
寫一個叫做 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