Pong 發問時間: 電腦與網際網路程式設計 · 11 個月前

用C語言打出來 一.從20到80取不重複的十個亂數 並輸入一維陣列,由大至小排列 輸入一數字,確認是否在陣列中,如果是,顯示其位置,若不是,則顯示不在其中。?

1 個解答

評分
  • 11 個月前
    最佳解答

    #include<stdio.h>

    #include<stdlib.h>

    const int L = 20, H = 80, N = 10;

    int main(){

    int e[H-L+1] = {0};

    int d[N];

    int i, j, k;

    for(i=N, 0 < i; ){

    j = random()/(1.0+RANDOM_MAX) * (H-L+1);

    if(0 == e[j]) (e[j] = 1, --i);

    }

    for(j=i=0; i<=(H-L); ++i) if(e[i]) d[j++] = 20+i;

    for(; printf("Enter a number between %d and %d: ", L, H)

    && scanf("%d", &k)

    && L <= k

    && k <= H;){

    for(i = 0, j = N-1; i <= j;){

    int m = (i+j)/2;

    if(d[m] == k) {printf("%d\n",m); break;}

    if(d[m] > k) j = m-1; else i = m+1;

    }

    if(j < i) printf("not found.\n");

    }

    return 0;

    }

還有問題?馬上發問,尋求解答。