初识C语言——第二十四天

发布于:2024-05-20 ⋅ 阅读:(58) ⋅ 点赞:(0)

函数的基本使用和递归

1.函数是什么

2.库函数

3.自定义函数

4.函数参数

5.函数调用

6.函数的嵌套调用和链式访问

7.函数的声明和定义


函数是什么

C语言中函数的分类

1.库函数

2.自定义函数

库函数:

简单的总结,C语言常用的库函数都有:

#include <stdio.h>
#include <string.h>
int main()
{
    char arr1[20] = { 0 };
    char arr2[] = "hello bit";
    strcpy(arr1, arr2);

    printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
    return 0;
}

int main()
{
    char arr[] = "hello bit";

    memset(arr,'x', 5);

    printf("%s\n", arr);

    return 0;
}

自定义函数

//Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
//改变形参,不能改变实参
void Swap1(int x,int y)//传值调用
{
    int z = 0;
    z = x;
    x = y;
    y = z;
}

void Swap2(int* pa, int* pb)//传址调用
{
    int z = 0;
    z = *pa;
    *pa = *pb;
    *pb = z;
}




int main()
{
    int a = 10;
    int b = 20;

    printf("交换前:a=%d b=%d\n", a, b);
    Swap2(&a, &b);

    printf("交换后:a=%d b=%d\n", a, b);

    return 0;
}

函数的调用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//#include <stdlib.h>
//#include <time.h>
//
//void menu()//无返回值函数
//{
//    printf("**************************\n");
//    printf("********  1.play   *******\n");
//    printf("********  0.exit   *******\n");
//    printf("**************************\n");
//
//}
//
//void game()
//{
//
//    int guess;
//    int ret = rand() % 100 + 1;//产生1-100的随机数
//    while (1)
//    {
//        printf("请猜一个数字:<");
//        scanf("%d", &guess);
//        if (guess < ret)
//        {
//            printf("猜小了\n");
//        }
//        else if (guess > ret)
//        {
//            printf("猜大了\n");
//        }
//        else
//        {
//            printf("恭喜你,猜对了\n");
//            break;
//        }
//    }
//}


//#include <string.h>
//int main()
//{
//    char arr1[20] = { 0 };
//    char arr2[] = "hello bit";
//    strcpy(arr1, arr2);
//
//    printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
//    return 0;
//}
//
//int main()
//{
//    char arr[] = "hello bit";
//
//    memset(arr,'x', 5);
//
//    printf("%s\n", arr);
//
//    return 0;
//}

Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
改变形参,不能改变实参
//void Swap1(int x,int y)//传值调用
//{
//    int z = 0;
//    z = x;
//    x = y;
//    y = z;
//}
//
//void Swap2(int* pa, int* pb)//传址调用
//{
//    int z = 0;
//    z = *pa;
//    *pa = *pb;
//    *pb = z;
//}
//
//
//
//
//int main()
//{
//    int a = 10;
//    int b = 20;
//
//    printf("交换前:a=%d b=%d\n", a, b);
//    Swap2(&a, &b);
//
//    printf("交换后:a=%d b=%d\n", a, b);
//
//    return 0;
//}

//#include <math.h>
//int is_prime(int x)
//{
//    //2-x-1
//    int j = 0;
//    for (j = 2; j <=sqrt(x); j++)
//    {
//        if (x % j == 0)
//        {
//            return 0;
//        }
//
//    }
//    
//        return 1;
//
//}
//
//
//int main()
//{
//    //100-200之间的素数
//    int i = 0;
//    int count = 0;
//    for (i = 100; i <= 200; i++)
//    {
//        //判断i是否为素数
//        if (is_prime(i) == 1)
//        {
//            printf("%d ", i);
//            count++;
//        }
//    }
//
//    printf("\ncount=%d ", count);
//    return 0;
//}

//int is_leap_year(int x)
//{
//    if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))
//    {
//        return 1;
//    }
//    else
//    return 0;
//}
//
//
//
//int main()
//{
//    int y = 0;
//    for (y = 1000; y <= 2000; y++)
//    {
//        if (is_leap_year(y) == 1)
//        {
//            printf("%d ", y);
//        }
//        
//    }
//
//    return 0;
//}

//int binary_search(int* a,int key1)

int binary_search(int arr1[],int key1,int n1)
{
    int left = 0;
    int right = n1 - 1;
    
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr1[mid] < key1)
        {
            left = mid + 1;
        }
        else if (arr1[mid] > key1)
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }

    }
    return -1;

}



int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int key = 7;
    int n = sizeof(arr) / sizeof(arr[0]);

    //找到了就返回找到的位置的下标
    //找不到就返回-1
    //数组arr传参,实际传递的不是数组本身
    //仅仅传过去了数组首元素的地址
    int ret=binary_search(arr,key,n);
    if (ret == -1)
    {
        printf("找不到\n");
    }
    else
    {
        printf("找到了,下标是: %d\n", ret);
    }


    return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到