如果第一個陣列中的每個元素都等于第二個陣列中的對應元素,則該函式應回傳“T”,如果兩個陣列之間存在任何差異,則回傳“F”。
#include <stdio.h>
char match_array(int a[10], int b[10]);
int main()
{
int a1[10] = {1,2,3,4,5,6,7,8,9,10};
int a2[10] = {0,0,0,4,5,6,7,8,9,10};
char match;
match = match_array(a1, a2);
printf("%c", match);
return 0;
}
char match_array(int a[10], int b[10])
{
int i;
for(i=0; i<10; i ){
if(a[i] == b[i]){
return 'T';
}
}
return 'F';
}
uj5u.com熱心網友回復:
match_array再次清楚地檢查您的代碼。
char match_array(int a[10], int b[10])
{
int i;
for(i=0; i<10; i ){
if(a[i] == b[i]){
return 'T';
}
}
return 'F';
}
在這里,只要陣列的兩個對應元素相等,您就會回傳T. 這意味著,true當“任意”兩個對應元素相等時回傳。我想,這不是你想要的。要true在“所有”對應元素相等時回傳,您應該將代碼修改為:
char match_array(int a[10], int b[10])
{
int i;
for(i=0; i<10; i ){
if(a[i] != b[i]){
return 'F';
}
}
return 'T';
}
在這里,只要兩個對應的元素不相等,您就會回傳false. true僅當您遍歷整個陣列并發現沒有元素不相等時才應回傳。
uj5u.com熱心網友回復:
你運行你的回圈
for(i=0; i<10; i ){
if(a[i] == b[i]){
return 'T';
}
}
return 'F';
它通過陣列并檢查每一對。當(并且如果)它到達一對相等時,它將回傳 T,這意味著在我們的例子中: a[3] & b[3] == 4
它將回傳 true,僅此而已。它不會到達回圈的結尾,因為 return 陳述句會停止函式并回傳回傳值。
在這種情況下,它回傳的唯一方法F是陣列中沒有相等的對,這里不是這種情況。
為簡化起見:您的演算法是:
check if a[i] == b[i]:
if yes - stop function return true
if no - continue loop and check a[i 1] == b[i i]
if reached here - return F.
uj5u.com熱心網友回復:
對于初學者,該函式應宣告為
char match_array( const int a[], const int b[], size_t n );
那就是該函式應該能夠處理各種大小的陣列。
并且其表示陣列的引數應具有限定符const,因為傳遞的陣列在函式內不會更改。
'T'一旦發現陣列的兩個元素彼此相等,您的函式就會回傳,盡管所有其他元素可以彼此不相等。
for(i=0; i<10; i ){
if(a[i] == b[i]){
return 'T';
}
}
該函式可以通過以下方式定義
char match_array( const int a[], const int b[], size_t n )
{
size_t i = 0;
while ( i < n && a[i] == b[i] ) i;
return i == n ? 'T' : 'F';
}
并且該函式被稱為
match = match_array( a1, a2, 10 );
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429098.html
