C语言知识点复习2

二、循环语句

​ 1、while语句

​ 语法结构

while(表达式){

 循环语句;

}

​ 注:在循环语句中break的作用是停止后期所有循环,continue的作用是终止本次循环,开始下一次循环的判断。

​ 2、for语句

for(表达式1;表达式2;表达式3){

 循环语句;

}

​ 表达式1为初始化部分,用于初始化循环变量,当表达式1为空时直接进入循环;

​ 表达式2 为条件判断部分,用于判断循环是否终止,当表达式2为空时为死循环;

​ 表达式3为调整部分,用于循环条件的调整 。

​ 注:建议使用“前闭后开”来限定区间范围。

for(i=0; i<10; i++){

 a[i]=i;

}

​ 3、do while语句

do{

 循环语句;

}while(表达式);

​ 循环体至少执行一次,while之后记得加分号。

​ 二分查找函数循环实现范例:

int bin_search(int arr[], int left, int right, int key)

{

 int mid = 0;

 while(left<=right){

  mid = (left+right)>>1;

  if(arr[mid]>key)

  {

   right = mid-1;

  }

  else if(arr[mid] < key)

  {

   left = mid+1;

  }

  else

  {

   return mid;//找到了,返回下标

  }

 }

 return -1;//找不到

}

函数

一、库函数

​ C语言基础库中的函数,在添加头文件后可直接调用。

二、自定义函数

1、函数组成

​ 由函数名、返回值类型、函数参数以及函数体组成。

​ 实参:真实的传入函数的变量,在被调用时会发生临时拷贝,并非把原来的变量直接放入函数中,只是把实参的数据拷贝给形参。

​ 形参:函数名括号后的变量,因为形参只有在被调用的时候才被实例化并分配空间(形参实例化),在被调用过后即被销毁,只在该函数中有效(局部变量),所以叫形参。

​ 函数声明,要满足先声明后使用的原则,由返回值类型、函数名与函数参数组成(需要加分号), 当我们用到很多函数声明的时候,为了方便我们的调用,我们可以创建一个头文件.h(比如test.h),将函数声明放在头文件当中 ,在写头文件时,要注意加上#pragma once 。

//函数定义

double Add(double x, double y){

 return x+y;

}

//函数声明

double Add(double x, double y);

2、函数调用

​ 分为传值调用与传址调用,其中传址调用是把函数外部创建的内存地址传递给函数,可以真正与原值建立起联系,直接操纵函数外部的变量。

​ 函数也可以进行嵌套调用以及链式访问。

​ 嵌套调用样例:

#include <stdio.h>

void new_line()

{

 printf("hehe\n");

}

void three_line()

{

 int i = 0;

 for(i=0; i<3; i++)

 {

  new_line();

 }

}

int main()

{

 three_line();

 return 0;

}

3、函数递归

​ 程序自身调用被称为递归,把复杂问题层层转化为与原问题类似的小问题,函数在调用自身的情况下存在不合法递归(即无限次的递归导致栈溢出)。

​ 所以在使用递归的时候一定要有递归出口,否则会陷入死循环导致栈溢出!

样例:求n的阶乘

int factorial(int n)

{

 if(n <= 1)

  return 1;

 else

  return n* factorial(n-1);

​ 样例(求斐波那契数列第n个的值):

//递归实现

int fibrec(int n){

 if(n<=2) retuen 1;

 else return fibrec(n-1)+fibrec(n-2);

}

//迭代实现

int fibite(int n){

 int fir=1,sec=1,thd=2;

 if(n<=2) return 1;

 else{

  while(n>2){

   fir=sec;

   sec=thd;

   thd=fir+sec;

   n--;

  }

  return thd;

 }

}
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/2301_79847249/article/details/139710319

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值