阿倫 發問時間: 電腦與網際網路程式設計 · 1 0 年前

程式設計的問題是使用C的語文

請根據以下步驟撰寫一find_same()程式。

請寫出一個isin()函數,其輸入為一個陣列,其長度及要尋找的數字,若該數字存在於陣列中則傳回1,否則傳回0。若以C語言撰寫,則以下為其宣告。

int isin(int nums[], int length, int key);

請寫出一個printonce()函數,其輸入為一個陣列及其長度,printonce()函數呼叫isin()函數,將輸入陣列中所有數字列印出來,但其限制為重覆出現的數字只能列印一次。若以C語言撰寫,則以下為其宣告。

void printonce(int nums[], int length);

撰寫一find_same()程式,其輸入為兩可能不等長之陣列nums1[]及nums2[],及其長度length1及length2。find_same()運用isin()以找出兩陣列中相同的數字,並運用printonce()將其結果列印出來,以滿足重覆出現的數字只能列印一次的限制。假設nums1[]包含{ 3, 5, 3, 2453, -7, 0},而nums2[]包含{ 2, 9, 3, -2, -7, 1, 2452},則find_same()執行結果為:

3 -7

若以C語言撰寫,則以下為其宣告。

void find_same(int nums1[], int length1, int nums2[], int length2);

(提示:先運用另一陣列儲存兩陣列中相同的數字再呼叫printonce())

1 個解答

評分
  • 1 0 年前
    最佳解答

    #include<iostream.h>

    #include<stdio.h>

    int isin(int nums[],int length,int key);

    int isin(int nums[],int length,int key){

    int i,result=0;

    for (i=0;i<length;i++){

    if(nums[i]==key){

    result=1;}

    }

    return result;

    }

    void printonce(int nums[],int length){

    int i,j;

    for(i=1;i<=length;i++){

    for(j=0;j<i;j++)

    if(isin(nums,i-1,nums[j])==0)printf("%d\n",nums[j]);

    }

    }

    void find_same(int nums1[],int length1,int nums2[],int length2){

    int i,result,count=0,arr[10000];

    for(i=0;i<length1;i++){

    result=isin(nums2,length2,nums1[i]);

    if (result==1){

    arr[count]=nums1[i];

    count++;}

    }

    printonce(arr,count);

    }

    main(int argc,char *argv[]){

    int nums1[]={3,5,3,3,2453,-7,0,2452},nums2[]={2,9,3,-2,-7,1,2452},length1=8,length2=7;

    find_same(nums1,length1,nums2,length2);

    }

    參考資料: 自己與書
還有問題?馬上發問,尋求解答。