1.调整数组使奇数全部都位于偶数前面2、杨氏矩阵在这样的数组中查找一个数字是否存在

1.调整数组使奇数全部都位于偶数前面。

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

#include <stdio.h>
#include <stdlib.h>
#define NUM 10
void adjust_arr(int *arr, int num)
{
    int *left = NULL, *right = NULL, *mid = NULL;

    int tmp,i;
    left = &arr[0];//left 指向数组元素最左边
    right = &arr[num-1];// 指向数组元素最右边
    while (left < right)
    {
        if (*left%2 == 0)
        {
            if(*right%2 == 0)
            {
                right --;
            }
            else
            {
                tmp = *left;
                *left = *right;
                *right = tmp;
            }
        }
        else
        {
            left++;
        }
    }
}
int main()
{
    int arr[NUM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    int i = 0;
    printf ("变换前:\n");
    for (i=0; i<NUM; ++i)
    {
        printf ("%d ",arr[i]);
    }
    printf("\n");
    adjust_arr(arr, NUM);
    printf ("变换后:\n");
    for (i=0; i<NUM; ++i)
    {
        printf ("%d ",arr[i]);
    }
    printf("\n");
    system ("pause");
    return 0;
}
/*
运行结果:
变换前:
1 2 3 4 5 6 7 8 9 0
变换后:
1 9 3 7 5 6 4 8 2 0
请按任意键继续. . .
*/

2. 杨氏矩阵

有一个二维数组.

数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。

#include <stdio.h>
#include <stdlib.h>
int find_num(int arr[5][5], int k)//判断数字是否存在,存在返回1,不存在返回0
{
    int i, j;
    for (i=0; i<5; ++i)
    {
        for(j=0; j<5; ++j)
        {
            if(arr[i][j] == k || arr[j][i] == k)
            {
                return 1;
            }
        }
    }
    return 0;
}
int main()
{
    int arr[5][5];
    int i = 0, j = 0, key = 0;//key 表示要查找是否存在的数字

    for (i=0; i<5; ++i)//创建数组第一行
    {
        arr[0][i] = i;
    }
    for (i=1; i<5; ++i)//创建数组其他行
    {
        for (j=0; j<5; ++j)
        {
            arr[i][j] = arr[i-1][j] +1;
        }
    }


    for(i=0; i<5; ++i)//打印数组
    {
        for(j=0; j<5; ++j)
        {
            printf ("%d ",arr[i][j]);
        }
        printf ("\n");
    }
    scanf ("%d",&key);
    i = find_num(arr,key);
    if (i == 0)
    {
        printf ("%d不在数组中\n", key);
    }
    else
    {
        printf ("%d在数组中\n", key);
    }
    system ("pause");
    return 0;
}
/*
输出结果:
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
6
6在数组中
请按任意键继续. . .
*/

猜你喜欢

转载自blog.csdn.net/a__b__c__/article/details/79942409