天天看点

iOS开发学习之C语言---C05 函数-1

//

//  main.m

//  C05 函数-1

//

//  Created by xalo on 15/10/20.

//  Copyright (c) 2015年 Darling.com. All rights reserved.

//

#import <Foundation/Foundation.h>

// 1、函数定义

#pragma mark 无返无参函数

// 返回值类型:如果无返回值,必须使用void修饰符

// 函数名:遵守变量名的命名法则

// 参数列表:如果没有参数,可以用void修饰,也可以什么都不写,但是,小括号不能省略。

void printHello(void) // 括号内的void可以省略

{   // 在大括号里写实现功能的代码

    printf("西安的青年都帅\n");

    // return标志着函数的结束,如果return后边有数值,则将这个数值交给主调函数。

    // 当return只负责结束函数执行时,可以省略return。当return负责返回值,则不能省略。

    return;

}

#pragma mark 无返有参函数

void sum(int a, int b)

{

    int c = a - b;

    printf("a - b = %d\n", c);

}

#pragma mark 有返无参函数

int returnNumber()

{

    // 有返回值的函数,return即表示函数到此结束执行,同时具备将结果交给主调函数的功能,这时的return不能省略。

    return 20;

}

#pragma mark 有返有参函数

double returnToNumSum(double a , double b)

{

    double c = a + b;

    return c;

}

// 定义一个函数:交换两个整形变量的值

void exchangeTwoNums(int num1, int num2)  //  形参

{

    printf("num1 = %d, num2 = %d", num1, num2);

    int temp = num1;

    num1 = num2;

    num2 = temp;

    printf("num1 = %d, num2 = %d", num1, num2);

}

int sumValue(int n)

{

    // 定义一个累加和的变量

    int sum = 0;

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

        sum = sum + i; // sum保存累加和

    }

    return sum;

}

int dayOfYear(int year, int month, int day)

{

    // 1.1 用数组保存一年中各个月份的天数

    int monthArray[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    // 1.2 判断闰年,平年,修改二月份天数

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

        monthArray[1] = 29;

    }

    // 2.1 根据月份来 累加 当前月之前 总共多少天

    int sumDay = 0;

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

        sumDay = sumDay + monthArray[i];

    }

    // 3. 将当前月的天数加进累加器中

    sumDay = sumDay + day;

    // 4. 将结果返回给主调函数

    return sumDay;

}

//    // 复杂方法(比较)

//    // 定义整形变量

//    int year , month , day , sum;

//

//    // 保存用户输入的整形数

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

//

//    // 使用switch语句判断用户输入的月份,然后进入不同分支

//    switch (month)//先计算某月 以前月份的总天数

//    {

//

//        case 1:sum = 0;break;

//        case 2:sum = 31;break;

//        case 3:sum = 59;break;

//        case 4:sum = 90;break;

//        case 5:sum = 120;break;

//        case 6:sum = 151;break;

//        case 7:sum = 181;break;

//        case 8:sum = 212;break;

//        case 9:sum = 243;break;

//        case 10:sum = 273;break;

//        case 11:sum = 304;break;

//        case 12:sum = 334;break;

//        default:printf("输入有误,请重新输入!");

//            break;

//    }

//

//    // 再加上某天的天数

//    sum = sum + day;

//    // 判断闰年,若是,则再加上一天

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

//        sum = sum + 1;

//    }

//

//    printf("%d年%d月%d日是这一年的第%d天", year, month, day, sum);

int midNum(int a, int b, int c)

{

    //1. 找出三个数中的最大数(两两比较)

    int max = a > b ? a : b;

    max = max > c ? max : c;

    //2. 找出三个数中的最小数

    int min = a < b ? a : b;

    min = min < c ? min : c;

    //3. 中间数的值 = (a+b+c)- (max+min)

    int mid = (a + b + c)- (max + min);

    return mid;

}

int returnNumCount(int n)

{

    int count = 0;

    // 如果用10去除,商不为零,表示这个数字至少是两位数,计数器加一

    while (n / 10 != 0) {

        count = count + 1;

        n = n / 10;

    }

    // 在循环条件不满足时,n变成了一个只有一位的数,所以这一位也要加进计数器中

    count = count + 1;

    return count;

}

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

    // 函数的定义,一般定义在main函数前面

    //     函数的调用:必须要先定义出来这个函数,定义之后才能调用

    //     函数调用方式:函数名+参数列表

    // 调用无返无参函数

    printHello();

    printHello();

    // 调用无返、有参函数:有参数,所以函数有几个参数,就要在参数列表中写几个参数,参数的位置要一一对应

    sum(6, 5);

    // 调用有返无参函数: 有返回值的函数,需要在主调函数中定义一个对应返回值的变量,盛放返回值。

    int c = returnNumber();

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

    // 调用有返有参函数

    double num1 = 12.34;

    double num2 = 34.56;

    double d = returnToNumSum(num1, num2);

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

    //    // 调用交换两个变量值的函数

    //    int a = 12; int b = 34;

    //    // 函数参数传递:将实参的值 拷贝 一份到形参变量的内存空间中,在被调函数中操作的参数是新开辟的内存的数值,和实参没有关系

    //    exchangeTwoNums(a, b); // 在主调函数中,参数叫做“实参”

    //    printf("a = %d, b = %d", a, b);

    //    int temp = sumValue(5);

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

        int m = dayOfYear(2000, 3, 1);

        printf("data = %d", m);

    //    printf("%d\n",dayOfYear(2000, 3, 1)); // 精简写法

    //    int x = midNum(2, 15, 7);

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

    //    int y = returnNumCount(88);

    //    printf("数字的个数%d\n",y);

    return 0;

}