c语言(函数(function//))

//  main.m

//  1-20随堂笔记

//讲师: 小辉

//笔者: 王学文

//  Created by lanouhn on 15/1/20.

//  Copyright (c) 2015年 lanouhn. All rights reserved.

//  函数(function//)

 

#import <Foundation/Foundation.h>

//引入头文件的过程,是一个复制粘贴的过程

#import "1 - 20课堂笔记2.h"

#import "Operator.h"

#import "Algorithm.h"

#import "MaxValue.h"

 

//无返回值, 无参数

//注: 没有返回值用void, 没有参数小括号()不能省略

void buyRedWine1(); //函数声明

void buyRedWine1() {

    printf("没钱, 买个毛!\n");

}

 

//无返回值, 有参数

void buyRedWine2(float money);

void buyRedWine2(float money) {

    printf("给了%.2f元\n", money);

    printf("被(mai)狗(xiang)咬(yan)了(zi),钱(ji)被(xi)调(le)走了");

}

 

//3. 有返回值, 无参数

//有返回值, 要用rrturn 返回

int buyRedWine3();

int buyRedWine3() {

    printf("都是自己人,给什么钱呀!一瓶酒算什么呀,咱们兄弟谈钱多伤感情!\n");

    printf("买什么酒(1. 拉菲, 2. 其他): ");

    int flag = 0;

    scanf("%d", &flag);

    if (flag == 1) {

        return 1;

    } else if (flag == 2) {

        return 12;

    } else {

        return 0;

    }

}

 

//4. 有返回值,有参数

//1. 如果函数有返回值,要保证任何情况豆油你改改有return返回值

//2. return之后的代码永远不会执行

float buyRedWine4(float money, int count);

float buyRedWine4(float money, int count) {

    printf("给了%.2f元, 买%d瓶\n", money, count);

    float price = 100.0; //酒价

    return money - count * price;

}

 

int sumValue(int n);

int sumValue(int n) {

    int sum = 0;

    for (int i = 1; i <= n; i++) {

        sum = i + sum;

    }

    return sum;

}

 

 

int dayOfYear(int year, int mouth, int day);

int dayOfYear(int year, int mouth, int day) {

    int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    int days = 0;

    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {

        a[1] = 29;

    }

    for (int i = 0; i< mouth - 1; i++) {

        days = days + a[i];

    }

    days = days + day;

    return days;

}

 

int mid(int a, int b, int c );//有问题

int mid(int a, int b , int c) {

    int m[3] = {a, b, c};

    for (int i = 0; i < 3 - 1; i++) {

        for (int j = 0; j < 3 - 1 - i; j++) {

            if (m[j] > m[j + 1]) {

                int temp = m[j];

                m[j] = m[j + 1];

                m[j + 1] = temp;

            }

        }

    }

    

        return m[1];

}

 

int count(int num);

int count(int num) {

    int i = 0;

    do {

        i++;

        num = num / 10;

    } while (num > 0);

    return i;

}

//如果 函数定义在 主调函数 的后面,一定要在 主调函数 前面写上 函数声明;

//主调函数: 如果在函数A中调用了函数B,就称函数A是函数B的主调函数;

 

 

 

 

int main(int argc, const char * argv[]) {

    //函数是具有特殊功能的代码段

    

    //函数定义的格式

    /*

     返回值的数据类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...){

    语句

    }

    

    //根据有误返回值和有无参数,可以吧函数划分为

    //1. 无返回值, 无参数

    //2. 无返回值, 有参数

    //3. 有返回值, 无参数

    //4. 有返回值, 有参数

    

    //函数定义在哪里?

    //1. 函数与函数之间是并列的关系

    //2. 函数定义不能够嵌套

    

    //函数调用

    //格式! 函数名(参数1, 参数2, ...)

    

    //1. 对无返回值,无参数函数调用

    //注: 没有参数,小括号()不能够省略

    buyRedWine1();

    

    //2. 对无返回值,有参数函数调用

    //方法1

    buyRedWine2(100.0);

    //方法2

    float money = 100.0;

    buyRedWine2(money);

    

    //3. 有返回值, 无参数函数调用

    int count = 0;

    count = buyRedWine3();

    printf("买了%d瓶\n", count);

    

    //4. 有返回值, 有参数函数调用

    float leftMoney = 0.0;

    leftMoney = buyRedWine4(1000.0, 5);

    printf("剩余%.2f元\n", leftMoney);

    

    */

    //编写函数int sumValue(int n):计算1到n的和

    

//    int x = 0, k = 0;

//    printf("请输入k为:");

//    scanf("%d", &k);

//    x = sumValue(k);

//    printf("sum = %d\n", x);

    

    

    

    //形参实参是没有关系的

    //1. 形参: 形式参数,函数定义中的参数,没有固定的值,当函数被调用的时候,制才能够确定

    //2. 实参: 实际参数,函数调用中的参数,有确定的值

    

    

    //当函数调用的时候,实参向形参传递的过程,是一个内容拷贝的过程

    

    //变量的作用域

    //1. 先找到变量定义的位置,

    //2. 往上找最近的大括号

    

    //变量使用的时候,要先确定使用的哪一个变量,要进行变量的查找

    //变量查找,先从同一级查找,如果找到,就使用;如果没有找到,就往上一级找,直到找到为止

    //注: 变量不会向下查找

    

//    int i= 0;

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

//        i = 100;

//    }

//    int n = 0;

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

//        if (i) {

//            n = 100;

//        }

//    }

//    printf("i = %d\n", i);

//    printf("n = %d\n", n);

    

    //编写函数DayOfYearViewer(year, mouth, day),使得函数返回由这三个数确定的那一天是一年中的第几天

    

//    int year = 0, mouth = 0, day = 0, days = 0;

//    printf("请输入年月日: ");

//    scanf("%d %d %d", &year, &mouth, &day);

//    days = dayOfYear(year, mouth, day);

//    printf("该天是这一年的第%d天\n", days);

    

    

    //编写函数, 返回三个整数的中间数

//    int a = 0, b = 0, c = 0;

//    printf("输入三个正整数:");

//    scanf("%d %d %d", &a, &b, &c);

//    int n = mid(a, b, c);

//    printf("中间数为%d\n", n);

    

    //编写函数,放回正整数n中的数字的个数

//    int num = 0;

//    printf("请输入一个正整数:");

//    scanf("%d", &num);

//    num = count(num);

//    printf("这个数是%d位数\n", num);

    

    

    //严格的函数包含

    //1. 函数声明

    //2. 函数定义

    //3. 函数调用

    

    //函数声明是对函数的描述,不包含具体的实现;

    //格式;

    //返回值类型,函数名(参数类型1 参数1, 参数类型2 参数2,...);

   

//    printf("%d\n", add(1, 1));

//    printf("%d\n", sub(4, 8));

//    printf("%d\n", mul(4, 6));

//    printf("%.2f\n", div1(5.0, 6.0));

    

    //全局变量和局部变量

    //局部变量: 定义在函数内部的变量,作用范围在函数内部

    //全局变量: 定义在函数外部的变量,在全局都有效

    

//    int array[5] = {1, 10, 3, 8, 5};

//    printArray(array, 5);

//

//    bubbleSort(array, 5);

    printf("最大值是%d\n", max(3, 5));

    return 0;

}

 

转载于:https://www.cnblogs.com/xiaoxuetongxie/p/4237932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值