学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

相关文章
|
搜索推荐 C++ 容器
你很可能需要知道这个调试小技巧
你很可能需要知道这个调试小技巧
|
算法
【算法】滑动窗口——将x减到0的最小操作数
【算法】滑动窗口——将x减到0的最小操作数
140 0
|
存储 调度 芯片
RT-Thread快速入门-内核移植
RT-Thread快速入门-内核移植
349 0
|
前端开发 JavaScript Java
springboot websocket通信
springboot websocket通信
1224 1
|
SQL Java 关系型数据库
Spring入门&控制反转(或依赖注入)&AOP的关键概念& 多配置文件&与web集成(一)
Spring入门&控制反转(或依赖注入)&AOP的关键概念& 多配置文件&与web集成
268 0
|
存储 Java
引以为戒:避免在Set中使用未重写equals和hashCode的引用对象进行去重
在日常的Java开发中,我们经常会使用Set集合来实现去重操作,确保集合中不含有重复的元素。然而,如果使用未重写equals()和hashCode()方法的引用对象进行去重,可能会导致意外的行为,最近了在项目中就遇到了这个情况,让我们深入探讨这个问题,并引以为戒,确保正确实现去重操作。
216 0
引以为戒:避免在Set中使用未重写equals和hashCode的引用对象进行去重
|
前端开发 算法 JavaScript
2023年前端面试题总结
2023年前端面试题总结
287 0
2023年前端面试题总结
|
存储 搜索推荐 数据挖掘
【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-Meta元数据分析
Word元数据是指文档中的元素信息,包括作者、主题、标题、关键字、文档摘要等。它们可以帮助用户更好地组织和管理文档,并且可以作为搜索引擎索引的重要信息来源。
176 0
 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-Meta元数据分析
|
搜索推荐 API 索引
苏嵌实训——day13(下)
苏嵌实训——day13(下)
161 0
苏嵌实训——day13(下)