課後作業複習

用篩選法求100之內的素數:

void SiftPrime(int n)
{
    int *arr = (int *)malloc(n*sizeof(n));//動態申請n個內存
    int i; int j;

    assert(arr != NULL);
    for (i = 0; i < n; i++)//初始化數組
    {
        arr[i] = i;
    }
    arr[1] = arr[0] = 0;//0和1不是素數
    for (i = 2; i <=sqrt(1.0*n); i++)
    {
        for (j = i + 1; j < n; j++)
        {
            if ((arr[j] != 0 )&& (j%i == 0))//j是i的倍數
            {
                arr[j] = 0;//!!!!賦值不是置爲
            }
        }
    }
    printf("%d之內的素數有:\n", n);
    j = 0; 
    for (i = 2; i < n; i++)
    {
        if (arr[i] != 0)
        {
            printf("%d ", arr[i]);
            j++;
            if ((j % 5 == 0))
            {
                printf("\n");
            }
        }
        
    }
    printf("\n");
    free(arr);

}

用選擇法對10個整數排序:
void SelectSort(int *arr, int len)
{
    int minIndex;//用於標記最小值的下標
    int tmp;//標記數據交換的臨時量
    int i;
    int j;
    for (i = 0; i < len - 1; i++)//選擇的趟數
    {
        minIndex = i;//必須賦值
        for (j = i; j < len; j++)
        {
            if (arr[minIndex]>arr[j])
            {
                minIndex = j;
            }
        }
        if (arr[minIndex] != i)
        {
            tmp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = tmp;
        }
    }
}

//輸出以下楊輝三角形
1    
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
……

void PascalTriangle()
{
#define  ROW 10//打印的行數
    int arr[ROW][ROW];
    int i;
    int j;
    for (i = 0; i < ROW; i++)
    {
        for (j = 0; j <= i; j++)
        {
            if ((0 == j || i == j))
            {
                arr[i][j] = 1;
            }
            else
            {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
        }
    }
    for (i = 0; i < ROW; i++)//打印楊輝三角
    {
        for (j = 0; j <=i ; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

#undef ROW
}

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