初识c语言————新手小白学习c语言的第十天————函数(3)

今天我们要学习c语言中的函数(3)


目录:

一.练习

   1.写一个函数,判断一年是不是闰年

   2. 写一个函数,实现一个整形有序数组的二分法查找

   3.写一个函数,每调用一次这个函数,num的值就会+1

二.布尔类型

三.重点


下面我们正是学习c语言中的函数(3)

一.练习

   1.写一个函数判断一年是不是闰年

   闰年是指:1.能被4整除但不能被100整除;2.能被400整除。

#include <stdio.h>

int is_leap_year(int a)
{
  if((a%4==0)&&(a%100!=0)||(a%400==0))
   return 1;
  else
   return 0;
}

int main()
{
   int year;
   scanf("%d",&year);
   if(is_leap_year(year))
   printf("是闰年");
   else
   printf("不是闰年");
}

   代码解析:

1.is_leap_year是一个能够判断一年是否为闰年的函数

2.代码中&&的意思是和,||的意思是或

3.因为闰年的判断条件是:1.能被4整除但不能被100整除;2.能被400整除。一年只要满足这两个条件中的其中一个就说明这个数是闰年,这样的表述在代码中如下:(a%4==0)&&(a%100!=0)||(a%400==0)

2.写一个函数,实现一个整形有序数组的二分法查找

   二分法在我们之前的学习中已经学过,主要看left,right,mid即可

#include <stdio.h>

int search(int num[],int a1,int b1)
{
   int left=0;
   int right=a1-1;
   int mid=(left+right)/2;
   while(left<=right)
   {
      if(b1<num[mid])
       {
          right=mid-1;
          mid=(right+left)/2;
       }
     else if(b1>num[mid])
       {
          left=mid+1;
          mid=(right+left)/2;
       }
     else if(b1==num[mid])
       return mid;
   }
   if(left>=right)
   return -1;
}

int main()
{
   int arr[]={1,2,3,4,5,6,7,8,9,10};
   int a=sizeof(arr)/sizeof(arr[0]);
   int miss;
   scanf("%d",&miss);
   if(search(arr,a,miss)>=0)
    printf("%d",search(arr,a,miss));
   else
    printf("找不到");
}

   代码解析:

1.right,left,mid分别表示每次分割后的数组的最右位,最左位,中间位

2.sizeof(arr)/sizeof(arr[0])表示数组arr中的元素的个数 

3.mid=(left+right)/2其实最好建议写成mid=left+(right+left)/2,写成这样的话可以防止两个整形相加导致的溢出

    注:形参和实参的名字其实可以相同

           其中代码中不能函数内用sizeof(arr)/sizeof(arr[0],因为在函数内接收到函数外的数组实际上只是接收到了数组的首元素的地址,在使用sizeof(arr)/sizeof(arr[0]的时候结果会发上错误(准确来说int arr[]==int *arr,虽然退化为了指针,但是c语言中的指针算数允许访问函数后面的值

 3.写一个函数,每调用一次这个函数,num的值就会+1 
#include <stdio.h>

void ADD(int *p)
{
   (*p)++;
}

int main()
{
   int num=0;
   ADD(&num);
   printf("%d",num);
}

   代码解析:

1.指针要记得加括号,否则会算错

2.改变实参的值需要我们进行传传址调用

二.布尔类型 

   布尔类型是一个用来判断真假的类型(flase和ture)

   例如:

int is_leap_year(int a)
{
  if((a%4==0)&&(a%100!=0)||(a%400==0))
   return 1;
  else
   return 0;
}

   可以转换为布尔类型:

bool is_leap_year(int a)
{
  if((a%4==0)&&(a%100!=0)||(a%400==0))
   return ture;
  else
   return flase;
}

   使用布尔类型的时候切记要引入它的头文件<stdbool.h>

 三.重点

1.布尔类型的使用方法

2.二分法查找是mid的建议运算

3.闰年的计算方法

4.实参改变的时候要用传址调用


明天我们要学习c语言中的函数(4) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值