学C第7天(函数,数组)

一、函数

1.函数的概念:抽象某个独立的功能,使之成为程序的一个独立实体。从而可以重复使用。

2.函数的定义

返回值类型  函数名(参数列表)

{

函数体;

}

3.函数说明

1).函数在定义时,未注明函数的返回值类型时,默认为int。函数没有返回值时,使用void

2).函数名必须符合表示符的命名规则

3).函数的定义在程序中都是平行的,不允许在函数内部在定义一个函数

4).即使是无参函数,函数名后的括号也不能省

4.函数的形式参数和实际参数

形式参数:函数定义时列表中的参数就是形参,用来接收调用该函数时传递的参数,在函数被调用之前,编译器不会为形参开辟空间,当函数执行结束时,创建的形参被销毁

实际参数:函数调用时传递的参数就是实参

说明:

1).实参向形参传递数据是单向值传递,调用函数通过参数传递传给被调函数,被调函数通过return,将值返回给调用函数

2).实参和形参在内存中被分配到不同的内存单元,函数调用时,将实参的值传给形参,改变形参的值不会影响实参原来的值

3).实参和形参的顺序应该保持一致并且个数相等。

4).实参和形参的数据类型应该保持一致,否则会出现强制类型转换。

5.函数的返回值

1).return语句,可以使函数向调用处返回一个值。

2).return可以立即从当前函数中退出,返回到调用的函数中,同时返回一个值给调用函数。

3).return后的表达式应与函数的返回值类型一致,不一致会以函数的返回值类型为主

6.函数的调用

1).函数以表达式语句的形式出现
  2).函数出现在表达式中

3).函数作为其他函数的实参

7.函数声明

1). 函数名(参数列表);其中参数列表的形参名可以省略

2).当函数的定义放在调用之前时,可以直接调用,反之,需要先声明在调用。

3).函数声明主要是通知编译器被调函数的返回值类型、函数名以及参数等信息

4).函数的声明应与函数头保持一致,否则会报错

8.函数调用

1).即使调用无参函数,函数名后的括号不能省略

2).有参函数在调用时,实参与形参个数必须相等,类型应尽量保持一致

3).调用库函数时,需要包含相关的头文件

9.高内聚,低耦合

内聚度:模块内各成分之间互相依赖性大小的度量。内聚度越大,模块内各成分之间联系越紧密,其功能越强

耦合度:模块之间相互依赖性大小的度量。耦合度越小,各模块之间的相对独立性就越大。

10.示例:

#include <stdio.h>
int isPrime(int num);//函数声明
//质数:1和本身
void main()
{
    //函数调用
    printf("%d", isPrime(111));
    getchar();
}

//函数定义
int isPrime(int num)
{
    int flag = 0;
    for (int i = 2; i < num; i++)
    {
        if (num == 1 || num == 2)flag = 1;
        if (num%i == 0)
        {
            flag = 0;
            break;
        }
        flag = 1;
    }
    return flag;
}

检测一个数是否为质数

二、数组

数组定义:同一个类型的多个元素的集合,在内存中开辟连续的空间,数组中的元素必须属于相同的数据类型

1.一维数组

1).数组声明:数组类型  数组名[数组大小]

2).数组的初始化:

类型 数组名[大小]={初值列表};([]中的大小可以省略)

int arr[10]={1,2,3,4,5}或者 int arr[]={1,2,3,4,5}

3).数组访问

数组名[下标]

4).数组的不合法操作

不能用一个已经初始化的数组对另一个数组赋值

不能对数组进行整体输入输出(除字符串外)

不能对数组进行比较

不能对数组进行整体运算

5).数组的引用

&数组名[下标]  或者  数组名+(-)整数

比如:&arr[5]与arr+5

6). 数组名表示数组的首地址,比如arr=&arr[0],数组作为参数传递的时候,传递的时地址,占4个byte

7).数组越界不会报错,如果越界访问,程序可能会崩溃,因为数组外的内存空间,不确定是否有访问权限。

8).排序:

方式一:普通排序

void sort(int arr[], int length)
{
    for (int i = 0; i < length-1;i++)
    {
        for (int j = i + 1; j < length;j++)
        {
            if (arr[i]>arr[j])
            {
                int temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }

方式二:选择排序

void SelectSort(int arr[],int length)
{
    int min;
    for (int i = 0; i < length-1; i++)
    {
        min = i;
        for (int j = i+1; j < length; j++)
        {
            if (arr[min]>arr[j])
            {
                min = j;
            }
        }
        if (min != i)
        {
            int temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }

方式三:冒泡排序

void bubbleSort(int arr[], int length)
{
    for (int i = 0; i < length; i++)
    {
        for (int j = 0; j < length - 1 - i;j++)
        {
            if (arr[j]>arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j + 1] =temp;
            }
        }
    }

时间: 2024-12-15 03:41:42

学C第7天(函数,数组)的相关文章

JAVA 蹒跚自学之 第六日 函数 数组

定义函数的格式    修饰符  返回值类型  函数名  (参数类型  形式参数1,参数类型  形式参数2,----------.) (代码块      return }   如何定义一个函数  1  明确要定义的函数的返回值类型   2   明确 要定义的函数的参数列表 3  明确要定义函数的功能,不该函数完成的功能不要加到函数里面,切记,切记.   例如 1 定义一个函数 完成两个数的求和            public  static  int  getsum(int a ,int b)

java中的函数,数组

函数 程序中独立的过程 函数的语法: 函数的定义 声明 static 返回值类型 函数名 (参数表) 形式参数:形参 在函数内部有效的局部变量 实现 { 语句 } 函数的调用 函数名(参数); 实际参数:实参 为形参赋值 接收返回值 函数的作用: 1. 减少冗余代码,提高程序的可维护性 2. 可重用性 函数库 3. 加强代码的结构化 提高可读性 利于分工 非结构化编程(语句) ---> 结构化编程(函数) ---> 面向对象(类) 数组 一次性定义多个同类型的变量 数组空间在内存是连续的 定义

怒学Python——第四篇——函数与模块

Python的函数:其实和C++非常类似,不过由于是弱类型的语言(用起来感觉是......),把那些类型声明都去掉了,传的是值不是引用(至少2.7是),有一点点小区别是前面必须加def来定义(好像宏定义的样子......),下面给出示例 def sum(a, b): #sum为函数名,注意冒号...... c = a + b #这一部分是函数的语句块 return c #到这里函数就结束了,和C++一样 print sum(1, 2) #根据函数名调用函数,输出1+2的值 这里也有lambda函

1152: 零起点学算法59——找出一个数组中出现次数最多的那个元素

1152: 零起点学算法59--找出一个数组中出现次数最多的那个元素 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 990  Accepted: 532[Submit][Status][Web Board] Description 找出一个数组中出现次数最多的那个元素 Input 第一行输入一个整数n(不大于20) 第二行输入n个整数 多组数据 Output 找出n个整数中出现次数最多的那个整数(

[零基础学python]初识永远强大的函数

函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃.可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至于经济学.政治学.社会学等,都已经普遍使用函数. 下面一段来自维基百科(在本教程中,大量的定义来自维基百科,因为它真的很百科):函数词条 [函数这个数学名词是莱布尼兹在1694年开始使用的,以描述曲线的一个相关量,如曲线的斜率或者曲线上的某一点.莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类.对于可导函数可以讨论它的极限和导

JAVA-day02- 循环函数数组

class Demo1 { public static void main(String[] args) { //求1--10的累加和 int sum =0; for(int i=1;i<=10;i++) { sum = sum+i; } System.out.println("sum="+sum); /* sum = sum+1; sum = sum +2; sum = sum+3; */ } } class Demo2 { public static void main(St

每天php函数 - 数组最后一个元素取出

复制代码代码如下: $array=array(1,2,3,4,5);    echo $array[count($array)-1];//计算数组长度,然后获取数组最后一个元素,如果数组中最后一个元素含有非数字键名,结果可能跟预期不符合    //适用于键名为数字的数组    echo '<br>';    echo end($array);//将数组的内部指针指向最后一个单元,适用于所有数组 总体来说,php的内置函数end还是最好的方法的了.大家可以测试下. PHP取值很容易,可以使用循环

数组&amp;&amp;函数数组

数组:一次性定义多个同类型的变量,数组在 内存中存储空间必须是连续的(查询比较快)定义数组: int a[]; int[] a;分配空间: a=new int[5]; 自动为数组元素赋以默认值 a[0]=1; a[1]=2; 默认值 数值类型 0 boolean false 对象类型 null int[] a=new int[]{1,2,3}; ======错误写法:int[] a=new int[3]{1,2,3};int[] a={1,2,3}; 访问数组元素:数组名[下标] 下标是从0开始

快学Scala(12)--高阶函数

在函数式编程语言中,你只需要将明细动作包在函数当中作为参数传入即可. 作为值的函数 import scala.math._ class TestFun { val num = 3.14 val fun = ceil _ } 这段代码将num设为3.14,fun设为ceil函数.ceil函数后面的_意味着你确实指的是这个函数,而不是碰巧忘记了给他送参数 Array(3.14, 1.42, 2.0).map(fun) //Array(4.0, 2.0, 2.0) map方法接受一个函数参数,将它应用