首页 > 其他分享 >三道函数小题:判断是否是闰年、是否是素数和二分查找

三道函数小题:判断是否是闰年、是否是素数和二分查找

时间:2023-11-28 23:31:40浏览次数:27  
标签:二分 sz arr return 闰年 int 是否是 查找 year

、用函数打印100-200之间的素数

#include<stdio.h>
int is_prime(int i)
{
  int n=0;
  for(n=2;n<i;n++)
  {
    if(n%i==0)
      return 0;
  }
  return 1;
}
int main()
{
  int i=0;
  for(i=100;i<=200;i++)
  {
    if(is_prime(i)==1);
    printf("%d ",i);
  }
}  

二、用函数打印1000-2000之间的闰年


#include<stdio.h>
int is_leap_year(int n)
{
  if(n%4==0&&n&100!=0||n%400==0)
  {
    return 1;
  }
  return 0;
}
int main()
{
  int year=0;
  int count=0;
  for(year=1000;year<=200;year++)
  {
    count++;
    if(is_leap_year(year)==1)
    {
      printf("%d ",year);
    }
  }
  
}


三、写一个函数,实现有序数组的二分查找

#include<stdio.h>
int binary_search(int arr[], int k,int sz)
{
	//算法的实现
	int left = 0;
	int right = sz - 1;
	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()
{
	//二分查找:在一个有序数组中查找具体的某个数
	//如果找到了返回这个数的下标,找不到的返回-1
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 11;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret=binary_search(arr, k,sz);
	if (ret == -1)
	{
		printf("找不到指定的数字\n");
	}
	else
	{
		printf("找到了,下标是:%d \n", ret);
	}
}














标签:二分,sz,arr,return,闰年,int,是否是,查找,year
From: https://blog.51cto.com/u_16351083/8605489

相关文章

  • 二分查找
    二分查找二分查找,一般是在一个有序的数组上的,但不一定要在一个有序的数组上,(比如寻找峰值问题),总之只要可以确定答案在某一边,就可以使用二分查找。寻找峰值力扣题目链接解题思路如果数组的大小是1,根据题目的要求,它一定就是峰值,直接返回判断下标0和下标n-1是不是峰值,如果......
  • C++U4-第06课-二分答案
    上节课作业解析链接:https://pan.baidu.com/s/1QCDg1GXb5HhrpkPgomOCyg?pwd=s4b4提取码:s4b4二分答案学习目标二分查找单调性意思 二分答案单调性 二分答案的思路[【二分答案】砍树(简单版)]枚举每一棵树,注意当锯片高度高于树的高度时砍的树木是0。#include<io......
  • (查找)01-二分查找-a
    1importjava.util.*;23publicclassSolution{4/**5*@paramnumsint整型一维数组6*@paramtargetint整型7*@returnint整型8*/9publicintsearch(int[]nums,inttarget){10//从左开始遍历的指......
  • 数字在排序数组中出现的次数--二分
    题目描述有序序列二分先对左端点进行二分再对右端点二分最后得到两个端点,直接相减+1,得到区间个数classSolution{public:intgetNumberOfK(vector<int>&nums,intk){if(nums.empty())return0;intl=0,r=nums.size()-1;while(l<r......
  • 郑轻工 3097. 筛质数 + 二分 = 小模拟
    importjava.util.Arrays;importjava.util.Scanner;classMain{staticint[]pri=newint[100];staticintidx;publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intx=sc.nextInt();init......
  • python中怎么识别判断是否是小数?
    defis_float(str):ifstr.count('.')==1:#小数有且仅有一个小数点left=str.split('.')[0]#小数点左边(整数位,可为正或负)right=str.split('.')[1]#小数点右边(小数位,一定为正)lright=''#取整数位的绝对值(排除掉负号)ifstr......
  • 二分图匹配---Munkres算法(匈牙利算法)
    在任务指派问题(如n项工作由n个人承担,每个人完成不同工作所花时间不同,那如何分配使得花费的时间最少)以及一些多目标检测任务中的数据关联部分(如一个目标有多个特征点,有多个目标时检测到的特征点属于哪一个目标的问题)常常会看到Munkres算法,这里从原理及实现上简单介绍一下Munkres算......
  • 二分查找知识总结
    整数二分:二分的本质并不是单调性,而是从一半满足一半不满足的区间中找到边界点。模板题:数的范围给定一个按照升序排列的长度为n的整数数组,以及q个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回 -1-1。输入格式第一......
  • 二分查找法
    <script>functionm(num,list){varlow=0;varheight=list.length-1;while(low<=height){varmidder=parseInt((low+height)/2)if(num==list[midder])......
  • Java学习—二分法查找(二)
    BM18 二维数组中的查找描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给......