數組相關題目

1.二維數組中的查找

在一個數組中,每一行都按照從左至右遞增、從上到下遞增的順序排列,請完成一個函數,輸入這樣一個二維數組和整數,判斷這個整數是否在數組中。

//二維數組實際上是連續存放的
bool Find(const int *a, int x, int y, int &key)
{
    assert(a);
    while (x < M&&x >= 0 && y < N&&y >= 0)
    {
        int num = a[x*M + y];
        if (key>num)//如果查找的數字大於某一行最後一個數字,則x++;  
        {
            x++;
        }
        else if (key<num)//如果查找的數字小於某一行最後一個數字,則y--;  
        {
            y--;
        }
        else
        {
            return true;
        }
    }
    return false;
}  

2.求數組所有元素的和
(1)非遞歸

int main()
{
    int sum = 0;
    int arr[5] = {1,2,4,5,6};
    int len = sizeof(arr) / sizeof(arr[0]);
    for (int i = 0; i < len; i++)
    {
        sum += arr[i];
    }
    printf("sum = %d\n",sum);
    return 0;
}

(2)遞歸

int Get_Sum(int *arr,int len)
{
    return len == 0 ? 0 : Get_Sum(arr, len - 1) + arr[len - 1];
}
int main()
{
    int arr[5] = {1,2,4,5,6};
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("sum= %d\n",Get_Sum(arr, len));
    return 0;
}

3.寫一個函數,將一維數組中的元素逆序存放

void reverseChar(char strs[]){
    //strlen()方法在string.h的頭文件中,所以這裏要include <string.h>
    size_t count = strlen(strs);
    //定義一個指針指向strs的內存地址
    char *p = strs;
    char tmp;
    for (int i = 0; i < count / 2; i++) {
        tmp = *(p + i);
        *(p + i) = *(p + count - 1 - i);
        *(p + count - 1 - i) = tmp;
    }
}
int main()
{
        //C語言是沒有String類型的 它用char的數組來表示字符串
        char strs[] = "ios_php_java";
        printf("倒序前的字符串爲:%s\n", strs);
        reverseChar(strs);
        printf("倒序後的字符串爲:%s\n", strs);

        return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章