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

server/2024/9/24 8:55:20/

#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;
}


http://www.ppmy.cn/server/121271.html

相关文章

ElasticSearch分页查询性能及封装实现

Es的分页方式 fromsize 最基本的分页方式&#xff0c;类似于SQL中的Limit语法&#xff1a; //查询年龄在12到32之间的前15条数据 {"query":{"bool":{"must":{"range":{"user_age":{"gte":12,"lte":3…

C语言——自定义类型

目录 结构体 概念 结构体变量的创建和初始化 结构体的自引用 结构体的内存对齐 内存对齐存在的原因 合理设计结构体 方法一 方法二 结构体传参 结构体实现位段 什么是位段 位段的内存分配 位段的跨平台问题 注意 联合体 概念 验证 优点 小应用 什么是大小…

每日一练:二叉树的直径

543. 二叉树的直径 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之…

WinCC中归档数据片段的时间和尺寸设置

1&#xff0e;归档数据片段介绍工控人加入PLC工业自动化精英社群 1.1 概述 WinCC V6.2 开始的后台数据库采用了MS SQL Server 2005 &#xff0c;所以归档方式与V5 有所不同&#xff0c;它的运行数据存放在数据片段&#xff08;segment&#xff09;当中&#xff0c;工程师可以…

基于单片机的智能校园照明系统

由于校园用电量较大&#xff0c;本设计可以根据实际环境情况的改变&#xff0c;实现实时照明的控制。本设计以单片机芯片为控制芯片&#xff0c;热释电传感器采集教室中学生出入的信息&#xff0c;并把信息传递给单片机芯片&#xff0c;单片机芯片根据传感器传递过来的信息来控…

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…

二、电脑入门2之常用dos命令

打开dos命令窗口 win R 常用dos命令 dir&#xff1a; 列出当前目录下的所有文件以及目录 cls &#xff1a;清理屏幕 exit&#xff1a; 关闭dos命令窗口 c:(盘字母后带冒号) 切换盘符 del&#xff1a; 删除文件 ipconfig &#xff1a; 查看IP信息 ipconfig/all &#xf…

微前端中的路由加载流程

1. 初始化基座应用 基座应用&#xff1a;基座应用是微前端架构中的主应用&#xff0c;负责管理和协调各个子应用的加载和卸载。 初始化&#xff1a;基座应用在启动时会初始化路由配置&#xff0c;注册各个子应用的路由。 2. 注册子应用 子应用需要向基座应用注册自己的路由和…