自学内容网 自学内容网

鹏哥C语言42---函数调用相关练习

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//------------------------------------打印1000-2000年之间的闰年---------------------------------------------------
//闰年的判断规则有两个
//1.能被4整除,但是不能被100整除
//2.能被400整除也是闰年
/*
int main()
{
    int year = 0;
    for (year = 1000; year <= 2000; year++)
    {
        判断每次产生的 year 是不是闰年-------------------方法1
        //if (year%4==0) // 规则 1
        //{
        //    if (year % 100 != 0)
        //    {
        //        printf("%d ", year);
        //    }
        //}
        //
        //if (year % 400 == 0)// 规则 2
        //{
        //    printf("%d ", year);
        //}

        //判断每次产生的 year 是不是闰年-------------------方法2 (简化)
        if (( (year % 4 == 0) && (year % 100 != 0) ) || (year % 400 == 0))
        {
            printf("%d ", year);
        }

    }
    return 0;
}
*/

//------------------------------------2. 写一个 函数 ,判断一年是不是闰年----------------------------------------
/*
int is_leap_year(int y) // 是闰年返回1,不是闰年返回0
{
    if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
    {
        return 1;
    }
    return 0;
}

int main()
{
    int year = 0;
    int count = 0;
    for (year = 1000; year <= 2000; year++)
    {
        //判断每次产生的 year 是不是闰年
     // 是闰年返回   1
     //不是闰年返回 0
        if (is_leap_year(year))
        {
            count++;
            printf("%d ", year);
        }
    }
    printf("\ncount=%d", count);

    return 0;
}
*/

//---------------------------3.写一个函数,实现一个整型有序数组的二分查找-----------------------------------

//数组传参实际上传递的是数组首元素的地址
//这里 arr[] 其实是个指针变量,存放的是数组的首元素地址
//因此不能把 数组元素个数的计算  放到函数里

/*
int binary_search(int arr[], int k, int sz) // 形参和实参的命名可以相同可以不同
{
    //  int sz = sizeof(arr) / sizeof(arr[0]);  //  不能把 数组元素个数的计算  放到函数里 ,error,只能计算出1或者2
    int left = 0;
    int right = sz;
    
    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()
{
    int arr[] = { 1,2,3,4,5,6,7,8,910 };
    int k = 0;
    scanf("%d", &k);
    int sz = sizeof(arr) / sizeof(arr[0]); //求数组中元素个数
    
    //先想好函数怎么用,再尝试
    //如果找到了,返回下标,
   //如果找不到,返回 -1

    int ret = binary_search(arr, k, sz);// 调用函数 进行 二分查找
    if (ret == -1)
    {
        printf("找不到\n");
    }
    else
    {
        printf("找到了,下标为:%d\n", ret);
    }

    return 0;
}
*/


//--------------------------------------------------------------------------------------布尔类型 bool
// 用来表示真假的变量
// 判断一个数是不是素数
//是素数,返回1
//不是素数,返回0
#include <stdbool.h>
#include <math.h>

/*
bool is_prime(int n)
{
    int j = 0;
    for (j = 2; j <= sqrt(n); j++)
    {
        if (n % j == 0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    int i = 0;
    int count = 0;
    for (i = 101; i <= 200; i += 2) //排除偶数
    {
        if (is_prime(i)) //调用函数  如果 is_prime(i) 为真,打印
        {
            count++;
            printf("%d ", i);
        }
    }
    printf("\ncount=%d\n", count);

    return 0;
}
*/

//-----------------------------4.写一个函数,每调用一次这个函数,就会将 num 的值增加1------------------
void ADD(int* p)
{
    (*p)++;
}

int Add(int n)
{
    return n+1;
 //return n++; // 先返回,后++了,错误
 //return ++n; // 先++,后返回,可以

}

int main()
{
    int num = 0;
    //-------------------------------------方法一
    //ADD(&num);
    //printf("%d\n", num);// 输出1
    //ADD(&num);
    //printf("%d\n", num);// 输出 2 
    
    //-------------------------------------方法二
    num = Add(num);
    printf("%d\n", num);// 输出1
    num = Add(num);
    printf("%d\n", num);// 输出2

    return 0;
}


原文地址:https://blog.csdn.net/most_wanted_/article/details/142333634

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!