C语言初学函数(练习)

//练习1:写一个函数在100-200之间可以判断一个数是不是素数

#include
int is_prime(int z)
{
        int j = 0;
        for (j = 2; j < z; j++)
        {
            if (z % j == 0)
                return 0;
        }
    return 1;
}

int main()
{
    int i = 0;
    for (i = 100; i <= 200; i++)
    {
        if (is_prime(i) == 1)
            printf("%d ", i);
      }
    return 0;
}

//练习2:写一个函数判断在1000-2000年之间的闰年

#include
int is_run_year(int z)
{
    if ((z % 4 == 0) && (z % 100 != 0) || (z % 400 == 0))
        return 1;
    else
        return 0;
}
int main()
{
    int i = 0;
    for (i = 1000; i <= 2000; i++)
    {
        //判断i是否为闰年
        int ret = is_run_year(i);
        if (ret == 1)//这里必须改为ret,不能是is_run_year==1
            printf("%d ", i);
    }
    return 0;
}

//练习3:写一个函数,实现一个整形有序数组的二分查找

#include
int main() //二分法
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int k = 7;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int left = 0;
    int right = sz - 1;
    int mid = 0;
    while (left <= right)
    {
         mid = (left + right) / 2;//这里不能加int给mid
        if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else
            break;
    }
    if (left <= right)
        printf("找到了,下标是%d", mid);
    else
        printf("找不到");
    return 0;
}
//二分查找函数版
                 //本质上arr是一个指针
binary_search(int arr[], int k,int sz)
{
    //算法的实现
    
    int left = 0;
    int right = sz - 1;
    while (left<=right)
    {
        
        int mid = (left + right) / 2;
        if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}
int main()
{
    //在一个有序数组中查找具体的某个数
    //如果找到了返回这个数的下标,找不到返回-1
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int k = 7;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ret= binary_search(arr,k,sz);//在arr里找k。传过去的是arr首元素的地址
    if (ret == -1)
    {
        printf("找不到指定的数字");
    }
    else
    {
        printf("找到了,下标是:%d\n", ret);
    }
    return 0;
}

//练习4:写一个函数,每调用一次这个函数,就会将num的值增加1

#include
void Add(int* p)
{
    (*p)++;
}
int main()
{
    int num = 0;
    Add(&num);
    printf("num=%d\n", num);
    Add(&num);
    printf("num=%d\n", num);
    Add(&num);
    printf("num=%d\n", num);
    return 0;
}

你可能感兴趣的:(c语言,算法,java)