函数,以及函数例题,函数的嵌套调用,链式访问,声明以及定义,形参和实参,传值调用和传址调用

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
自定义一个函数,将两个值互换
void change(int* x, int* y)
{
    int temp = 0;
    temp = *x;
    *x = *y;
    *y = temp;
}
int main()
{
    int a = 10;
    int b = 20;
    change(&a,& b);//将a和b的地址赋给*x,*y,使其能和a,b产生联系。
    printf("a=%d b=%d", a, b);

    return 0;
}

memset—库函数—内存设置—memset(要填充的内存块名称,整形值,值的大小)
int main()
{
    char arr[] = { "hello word" };
    memset(arr, '*', 5);//需引入头文件<string.h>
字符在存储时有其相对应的ASCII码值,所以也算整形值
    printf("%s", arr);
    return 0;
}

当实参传给形参时,相当于形参是实参的一份临时拷贝,形参值的改变不影响实参
/*函数的调用分为传值调用和传址调用
传值调用中的实参和形参分别占用不同的内存空间,对形参的修改不影响实参。
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。这种传参方式可以让函数和函数外边的变量建立起真正的联系,
也就是函数内部可以直接操作函数外部的变量。
获取值,不需要改变外部函数变量—传值调用。需要改变外部函数的变量并将其重新赋给函数本身—传址调用*/

判断100~200的素数
#include<math.h>
int is_prime(int n)
{
    int j = 0;
    for (j = 2; j <=sqrt(n); j++)
    {
        if (n%j == 0)
            return 0;
    }
    return 1;
    /*int j = 0;
    for (j = 2; j < n; j++)
    {
        if (n%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;
}

写一个函数,判断是否是闰年
int leap_year(int x)
{
    if (((x % 4 == 0) && (x % 100 != 0)) || (x % 400 == 0))
        return 1;
    else
        return 0;
}
int main()
{
    int year = 0;
    int count = 0;
    for (year = 1000; year <= 2000; year++)
    {
        int leap = leap_year(year);
        if (leap == 1)
        {
            printf("%d ", year);
            count++;
        }
    }
    printf("\n%d", count);
    return 0;
}

写一个函数,实现一个整形有序组的二分查找
int Binary_Search(int arr[] , int y,int k)
{
    int left = 0;
    int right = k;
    int average = 0;
    while (left <= right)
    {
        average = (left + right) / 2;
        if (y < arr[average])
        {
            right = average-1;
        }
        else if (y > arr[average])
            left = average+1;
        else
            return average;
    }
    return 0;
}
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int x = 0;
    int k = sizeof(arr) / sizeof(arr[0])-1;
    scanf("%d", &x);
    int search = Binary_Search(arr,x,k);
    if (search == 0)
        printf("没找到\n");

    else
        printf("找到了\n下标为%d",search);
        
    return 0;
}

写一个函数,每调用一次函数,就会将num的值增加1
void function(int* x)
{
    (*x)++;//++的优先级比*高
    
}
int main()
{
    int num = 0;
    function(&num);
    printf("num=%d\n", num);
    function(&num);
    printf("num=%d\n", num);
    return 0;
}

函数的嵌套调用//类似于语句之间的嵌套

函数的链式访问//把一个函数的返回值作为另外一个函数的参数

printf("%d",printf("%d",printf("%d",34)));
//
/*函数的声明—告诉编译器有一个函数叫什么,参数是什么,返回类型是什么——一般出现在函数使用之前—一般放在头文件中
函数的定义—指函数的具体实现,交代函数的功能实现—一般放在.c文件中
需要使用函数时,只需调用该函数的头文件即可。例如:#include""  
*/

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值