【學習ios之路:C語言】數組.迴圈.語句總和運用試題練習

來源:互聯網
上載者:User

標籤:style   blog   io   ar   color   os   sp   for   on   

1).求一個數組中的第二大值.數組中的值範圍10 - 30 ,儲存空間大小為10.

代碼如下:

    int a[10] = {0};    int max = 0, secMax = 0; //定義第一大值,第二大值.        for (int i = 0; i< 10; i++) {        a[i] = arc4random() %(30 - 10 + 1) + 10;//隨機值 10-30        printf("a[%d] = %d\n" ,i ,a[i]);    }    for (int i = 0 ; i < 10; i++) {        if (max < a[i]) {            secMax = max ;  //先將手中的第二大值給 secMax.然後在儲存當前最大值.            max = a[i];        } else if (a[i] > secMax && max != a[i]) { //為了不出現 max= 30 ,sexMax =30 現象. 即  a[i] < secMax < max            secMax = a[i];  //如果當前值比sexMax要大,比max小,則是第二大值.        }    }    printf("max = %d,sexMax = %d \n" ,max ,secMax);

2.)隨機產生20 個10~50的正整數存放到數組中,並求數組中的多有元素最大值、最小值、平均值及各元素之和。

代碼如下:

    int m[20] = {0};    for (int i = 0; i < 20; i++) {        m[i] = arc4random() % (50 - 10 + 1) + 10;        printf("%d\n", m[i]);    }    int max = 0, min = 0 , sum = 0; float avg = 0;        //最大值    for (int i = 0; i < 20; i++) {        if (max < m[i]) {            max = m[i];        }    }    printf("max = %d\n", max);        //最小值    for (int i = 0; i < 20; i++) {        if ( i == 0) {           min = m[i];        } else {            if (min > m[i]) {                min = m[i];            }        }    }    printf("min = %d\n", min);        //和    for (int i = 0; i < 20; i++) {        sum += m[i];    }    printf("sum = %d\n", sum);        //平均數    avg = sum / 20;    printf("avg = %.2f\n",avg);

 

3).將兩個排好序的數組,合并到另外一個數組中,並且合并之後的數組也是有序的(歸併排序)。

    //定義兩個數組m,n    int m[10] = {0};    int n[10] = {0};        //給數組賦值,隨機值範圍[20,40]之間    for (int i = 0; i < 10; i++) {         m[i] = arc4random() % (40 - 20 + 1) + 20;         n[i] = arc4random() % (40 - 20 + 1) + 20;    }    //對數組m升序排列    for (int i = 0; i < 10 - 1; i++) {        for (int j = 0; j < 10 - i - 1; j++) {            if (m[j] > m[j+1]) {                int temp = m[j];                m[j] = m[j+1];                m[j+1] = temp;            }        }    }     //對數組n升序排列    for (int  i = 0; i < 10 - 1; i++) {        for (int j = 0; j < 10 - i - 1; j++) {            if (n[j] > n[j+1]) {                int temp = n[j];                n[j] = n[j+1];                n[j+1] = temp;            }        }    }      //排序後列印結果    for (int i = 0; i < 10 ; i++) {        printf("m[%d] = %d,n[%d] = %d \n", i, m[i], i, n[i]);    }     int c[10] ={0};//定義第三個數組.兩個數組合并.歸併排序    int k = 0, i = 0, j = 0;    while (i < 10 && j < 10 ) {        if (a[i] < b[j]) {            c[k++] = a[i++];        } else {            c[k++] = b[j++];        }    }    while(i < 10){        c[k++] = a[i++];    }    while (j < 10) {         c[k++] = b[j++];    }    for (int i = 0; i< 10; i++) {    printf("%d\n",c[i]); //輸出結果    }

 


4).在一個已知的字串中,尋找最長單詞,並且輸出最長單詞.

    char str[] =  "name is a mk fuckd is fucshish";    int len = 0;//儲存當前單詞的長度    int max = 0;//儲存最長單詞的長度    int maxIndex = 0;//儲存最長單詞的位置        int i = 0;//迴圈變數初始值    while (str[i] != '\0') {        if (str[i] != ' ') {              //如果去到的字元不是空格            len++;        } else {             //擷取到的是字元是空格.            if (len > max) {                max = len;                maxIndex = i - len;            }            len = 0;//將單詞長度清零,計算新的單詞.        }        i++;    }    //如果最後一個單詞是最長單詞,不會遇到空格,則不會和maxLength 比較.所以我們只需要在迴圈外部比較一次即可.    if (len > max) {        max = len;        maxIndex = i - len;    }        for (int i = maxIndex; i < maxIndex + max ; i++) {        printf("%c",str[i]);//最長單詞    }

5).耶穌有13個門徒,其中有一個就是出賣耶穌的叛徒,請用排除法找出這位叛徒:13人圍坐一圈,從第一個開始報號:1,2,3,1,2,3...。凡是報到“3”就退出圈子,最後留在圈子內的人就是出賣耶穌的叛徒。請找出它原來的序號。


       思路:
         1.如何描述13個人? 定義數組
         2.如何報數? 定義變數 count記錄報數
         3.一旦報數為3,做什麼處理?
         4.如何剔除一個人? 將該元素置0
         5.表示當前或者的人數? 定義變數number;
         6.因為不確定迴圈次數,用whlie迴圈 迴圈條件 number > 1
         7.如何迴圈報數?  如果 i = 13 ,就轉到第一個人繼續報數.

  代碼如下:

    int arr[13] ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};    int count = 0, number = 13,i = 0 ;        while (number > 1) {        if (arr[i] != 0) {            count++;        if (count == 3) {                arr[i] = 0;                number--;                count = 0;            }        }         i++;    if (i == 13) { //下標            i = 0;//及第一個個人        }           }        //對數組遍曆,找到活著的人    for ( int i = 0; i < 13; i++) {        if (arr[i] != 0) {            printf("當前活著的人:%d\n",arr[i]);        }    }


6),有1000000個數,每個數取值範圍是0-999999找出其中重複的數,重複次數。

         int n[1000000];    for (int i = 0; i < 1000000; i++) {        //隨機產生1000000個數,範圍0-999999        n[i] = arc4random() % 999999 ;        printf("%d ", n[i]);    }     printf("\n");    int count = 0; int temp = 0;    for (int i = 0; i < 1000000; i++) {             count = 0;        for (int j = i; j < 1000000  ; j++) {            if (n[i] == n[j] && i != j && n[i] != -1) {                count++;                temp = n[i];                n[j] =  -1;            }        }        n[i] = -1;        if (count > 0) {            printf("重複數為:%d,重複次數為:%d\n",temp,count);        }    }


【學習ios之路:C語言】數組.迴圈.語句總和運用試題練習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.