学C的第九天(深入学习函数:库函数、自定义函数、函数的参数、函数调用、练习、补充知识点)-2

简介: 5.5:练习(部分上一期做过,换成函数做法):(1).写一个函数可以判断一个数是不是素数:

5.5:练习(部分上一期做过,换成函数做法):

(1).写一个函数可以判断一个数是不是素数:

// 写一个函数可以判断一个数是不是素数。
// 是素数返回1,不是素数返回0:
#include <stdio.h>
#include <math.h>
//自定义判断素数的函数:
int is_prime(int n)
{
  int j = 0;
  for ( j = 2; j <= sqrt(n); j++ )
  {
    if (n % j == 0)
    {
      return 0; // 能被整除说明是素数,返回0
    }
  }
  return 1; // 整个循环中都没有被整除,说明是素数 
}
int main()
{
  int i = 0;
  int count = 0;
  for ( i = 100; i <= 200; i++)
  {
    // 判断i是否为素数
    if (is_prime(i) == 1) // 调用函数返回值是1,说明是素数
    {
      printf("%d\n", i);
      count++;
    }
  }
  printf("\ncount = %d\n", count);
  return 0;
}

image.png

(2).写一个函数判断一年是不是闰年:

// 2.实现函数
// 自定义判断是不是闰年的函数:
int is_leap_year(int y)
{
  return ((y % 4 ==0) && (y % 100 != 0) || (y % 400 == 0));
  // 因为判断结果是1或0,所以可以直接放在return后
}
int main()
{
  int y = 0;
  int count = 0;
  for ( y = 1000; y <= 2000; y++ )
  {
    // 1.函数怎么使用
    //TDD - 测试驱动开发
    //test drive development(测试驱动开发):先做框架,再做细节
    if (is_leap_year(y) == 1)
    {
      printf("%d ", y);
      count++;
    }
  }
  printf("\ncount = %d\n", count);
  return 0;
}

image.png

(3).写一个函数,实现一个整形有序数组的二分查找:

//写一个函数,实现一个整形有序数组的二分查找:
#include <stdio.h>
int binary_search(int arr[], int k, int sz)
{
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    // 如果left和right过大超过4个字节,那就不是想要的结果了
    // int mid = (left + right) / 2;
    // left是小的一边,(right - left)是两者差值,
    // (right - left) / 2,差值的一半赋给小的一边
    // 两边一样,这时任意一边都是平均值(中间值)
    int mid = left + (right - left) / 2;
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else 
    {
      return mid; // 找到了
    }
  }
}
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 ret = binary_search(arr, k, sz); // 返回下标
  // 自定义函数参数:数组,要找的值,元素个数
  // 找到了,返回下标 ; 未找到,返回-1
  if (ret == -1)
  {
    printf("找不到\n");
  }
  else
  {
    printf("找到了,下标是:%d\n", ret);
  }
  return 0;
}

网络异常,图片无法展示
|

网络异常,图片无法展示
|

(下回揭晓)

(4).写一个函数,每调用一次这个函数,就会将num的值增加1:

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

7.函数的声明和定义:

8.函数递归:

补充知识点:

1. 形参在内存中是放在栈区的:


image.png

2. 变量名只是为了程序员方便查看使用的:


d45837e336634f62be160bb7039c4855.png

相关文章
|
5天前
|
存储 安全 C语言
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))
80 0
|
5天前
|
存储 C语言
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(上))
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(上))
68 0
|
6月前
|
C语言
关于C语言中函数的知识总结(一)---函数的功能和分类
关于C语言中函数的知识总结(一)---函数的功能和分类
|
5天前
|
自然语言处理 Linux 编译器
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-1
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
5天前
|
存储 Linux C语言
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-2
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
5天前
|
C语言
在C语言中调用函数的基本原理及示例
在C语言中调用函数的基本原理及示例
37 0
|
10月前
|
程序员 编译器 C语言
学C的第九天(深入学习函数:库函数、自定义函数、函数的参数、函数调用、练习、补充知识点)-1
1.函数是什么: 维基百科中对函数的定义:子程序 * 在计算机科学中,子程序(英语:
|
11月前
|
自然语言处理 程序员 C语言
C语言——函数(上)分类、参数、调用。
C语言——函数(上)分类、参数、调用。
|
11月前
|
程序员 C语言 C++
关于C语言中函数的知识总结---函数的功能和分类
关于C语言中函数的知识总结---函数的功能和分类
146 0
|
算法 程序员 C语言
【C初阶】第四篇——函数(库函数+自定义函数+函数递归)
【C初阶】第四篇——函数(库函数+自定义函数+函数递归)
【C初阶】第四篇——函数(库函数+自定义函数+函数递归)