ios--c DAY_6

来源:互联网 发布:小米网络助手在哪里 编辑:程序博客网 时间:2024/06/10 20:50

//花括号的作用:打包,使其中的语句作为一个整体,并与外界隔离。


1、函数定义

2、函数调用

3、函数声明

4、数组作为参数

5、函数嵌套

6、函数递归



源代码:比较乱,可能值适合自己看了

//
//  main.m
//  LessonSix
//
//  Created by lanou3g on 15/8/4.
//  Copyright (c) 2015年 lanou.3g.com. All rights reserved.
//

#import <Foundation/Foundation.h>
#pragma 函数声明 二
//在文件的.h中声明 在.m中定义实现
#import "function.h"  //引用.h文件---这样的话.m文件也在.h中---就可以使用其中声明以及定义好的函数了。
#import "Operation.h"
#import "Computer.h"
// 上午
enum FRUIT{
    APPLE,ORIENGE,PEAR,BANANA
};
//< 库函数  >
//" 自定义函数 "
//函数声明
void BuySomething();
void BuySomething0(int price);
int  BuySomething1();
int  BuySomething2(int price);
//交换a,b
void swap(int a,int b){
    printf("交换前:a=%d,b=%d\n",a,b);
    int temp=0;
    temp=a;
    a=b;
    b=temp;
    printf("交换后:a=%d,b=%d\n",a,b);
}
//1-n 的和
int sumNumber(int n){
    int sum=0;
    for (int i=1; i<=n ; i++) {
        sum+=i;
    }
    return sum;
}
//找出一个数组中的中间数
int computeMedia(int a[],int n){
    int temp=0;
    for (int i=0; i<n; i++) {
        for (int j=0; j<n-i-1; j++) {
            if (a[j]>a[j+1]) {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    return a[1];
}
//判断位数
int judgeNumberWeiShu(int number){
    int n=1;
    while (number/10!=0) {
        n++;
        number/=10;
    }    return n;
}
//下午
#pragma 函数声明 一
//所有函数声明都写在main.m文件中
//函数声明中,形参可以省略
//int minTwoNumber(int a,int b);
int minTwoNumber(int,int);
//函数定义中,形参不可以省略
int minTwoNumber(int a,int b){
    return a<b?a:b;
}
#pragma 函数声明 三
//数组作为函数的参数
//数组名 是地址
//1、数组作为参数,至少要有两个参数: 数组 和 数组元素个数。
//2、声明时,int [],[]中绝对不可以添加元素的数量,定义也是不可以的。
//3、传入的是 数组的首地址
//4、实参和形参操作的是同一段地址空间。
void min();
//1、定义求两个数中最大值
int maxTwo(int num1,int num2);
int maxTwo(int num1,int num2){
    return num1>num2?num1:num2;
}
int maxThree(int num1,int num2,int num3);
int maxThree(int num1,int num2,int num3){
    int max11=maxTwo(num1,num2);
    return max11>num3?max11:num3;
}
int maxFour(int num1,int num2,int num3,int num4);
int maxFour(int num1,int num2,int num3,int num4){
    int max22=maxThree(num1,num2,num3 );
    return max22>num4?max22:num4;
}
int main(int argc, const char * argv[]) {
    int num1=3,num2=12,num3=98,num4=23;
    int maxfour=maxFour(num1, num2,num3, num4);
    printf("四个数中最大值:%d\n",maxfour);
    //下午
    //函数调用
    int a=4,b=9;
    int min=minTwoNumber(a, b);
    printf("min=%d\n",min);
    //调用一个未定义的函数是错误的。
//    min();
    //经过头文件的引用来调用函数
    int max=returnMaxOfTwoNumber(6, 9);
    printf("max=%d\n",max);
    int numberOne1=0,numberTwo2=0;
    char operator=0;
    printf("请输入两个数:\n");
    scanf("%d%d",&numberOne1,&numberTwo2);
    getchar();//吞掉上次输入的回车符
    printf("请输入运算符:\n");
    scanf("%c",&operator);
    getchar();//吞掉上次键入的回车符
    int result=returnResultOfTwoNumber(numberOne1, numberTwo2,operator);
    printf("%d%c%d=%d\n",numberOne1,operator,numberTwo2,result);
    //求和
    int numberOfN=0;
    printf("请输入一个数:\n");
    scanf("%d",&numberOfN);
    getchar();
    int sum=returnSumOf1_nNumber(numberOfN);
    printf("1-%d的总和:%d\n",numberOfN,sum);
    //打印数组中的元素
    int array[10]={0};
    for (int i=0; i<10; i++) {
        array[i]=arc4random()%(20-0+1)+0;
        printf("%d\t",array[i]);
    }
    printf("\n===========================\n");
    printf("函数调用打印数组元素:\n");
    //调用的时候,实参为数组的时候,只需要写数组名就可以了,数组名就是数组的首地址
    //形参是函数声明和定义时的名称
    //实参是函数调用 时的叫法
    printAllElementsOfArray(array, 10);
    //创建一个名为ArrayFunction的文件,写个方法,分别求数组的升序降序
    printf("既能升序,又能降序:\n");
    printShengXu(array,10);
    printf("\n============================\n");
    printf("降序单功能:\n");
    printJiangXu(array,10);
#pragma 函数的嵌套调用
    //函数的嵌套调用
    //用挖掘机炒菜
//    电脑:Computer---调用挖掘机
//    挖掘机:Digger——--调用炒菜
//    炒菜:Cook
    controlDigger();
    //上午
    //常量命名:全部是大写字母
    //常规冒泡
    printf("常规冒泡:\n");
    int _bubbleSort[10]={0};
    int _bubbleTemp=0;//the intermediate variable
    for (int i=0; i<10; i++) {
        _bubbleSort[i]=arc4random()%(100-20+1)+20;
        printf("%d\t",_bubbleSort[i]);
    }
    printf("\n==================================\n");
    for (int i=0; i<10; i++) {
        for (int j=0; j<10-i-1; j++) {
            if (_bubbleSort[j]>_bubbleSort[j+1]) {
                _bubbleTemp=_bubbleSort[j];
                _bubbleSort[j]=_bubbleSort[j+1];
                _bubbleSort[j+1]=_bubbleTemp;
            }
        }
    }
    for (int i=0; i<10; i++) {
        printf("%d\t",_bubbleSort[i]);
    }
    //优化冒泡
    printf("\n===================================\n");
    printf("优化冒泡:\n");
    int _bubbleSort0[10]={0};
    int _bubbleTemp0=0;
    BOOL _bubbleFlag0=NO;//the sign of the change
    for (int i=0; i<10; i++) {
        _bubbleSort0[i]=arc4random()%(100-0+1)+0;
        printf("%d\t",_bubbleSort0[i]);
    }
    printf("\n=================================\n");
    for (int i=0; i<10; i++) {
        _bubbleFlag0=NO;
        for (int j=0; j<10-i-1; j++) {
            if (_bubbleSort0[j]>_bubbleSort0[j+1]) {
                _bubbleTemp0=_bubbleSort0[j];
                _bubbleSort0[j]=_bubbleSort0[j+1];
                _bubbleSort0[j+1]=_bubbleTemp0;
                _bubbleFlag0=YES;
            }
        }
        if (_bubbleFlag0==NO) {
            printf("第%d趟就不用再交换了.\n",i);
            break;
        }
    }
    for (int i=0; i<10; i++) {
        printf("%d\t",_bubbleSort0[i]);
    }
    printf("\n");
    //函数--第六讲
    //函数就是一种类型,什么叫类型
    //类名--驼峰命名--第一个字母小写之后每个单词的首字母大写
    //maxTwoNumber
    //形式 :  返回值类型 函数名(有参或者无参){
    //                      语句
    //                      return 返回值;
    //                  }
    //1、无返回值无参数
    //2、无返回值有参数
    //3、有返回值无参数
    //4、有返回值有参数
    //函数声明 :
    //函数定义 :
    BuySomething();
    BuySomething0(8);
    int _sumPrice=BuySomething1();
    printf("_sumPrice=%d\n",_sumPrice);
    int change=BuySomething2(12);
    printf("the change=%d\n",change);
    //函数调用过程,从主调函数进入-->被调函数--执行--得到结果-->返回到主调函数。
    //被调函数生命周期:
    //形参和实参
    //形参:出现在函数定义中,提供给函数使用的值。
    //实参: 出现在函数调用中,为函数的执行提供值。
    //形参-->实参  通过 拷贝
    //形参 在函数调用完毕后 立即被释放掉。  形参也就是副本
    
    //定义一个函数,实现两个变量的交换。
    int numberOne=0,numberTwo=23;
    swap(numberOne,numberTwo);
    //1+2+3+....+number
    int number=0;
    printf("请输入一个值,计算1-其的和:\n");
    scanf("%d",&number);
    getchar();
    sum= sumNumber(number);
    printf("1-%d的和:%d\n",number,sum);
    //随机数[10-30],返回三个数中间的中间数
    int numberArray[3]={0};
    for (int i=0; i<3; i++) {
        numberArray[i]=arc4random()%(30-10+1)+10;
        printf("%d\t",numberArray[i]);
    }
    int mediaNumber=computeMedia(numberArray,3);
    printf("中间数:%d\n",mediaNumber);
    //输入一个数,返回是几位数
    int numberWeiShu=0;
    printf("请输入一个数值:\n");
    scanf("%d",&numberWeiShu);
    int n=judgeNumberWeiShu(numberWeiShu);
    printf("这个数%d是%d位数.\n",numberWeiShu,n) ;
    //第一种:所有函数生命都写在Main函数中
    return 0;
}
 //上午
void BuySomething(){
    printf("you should get some fruits back.\n");
}
void BuySomething0(int price){
    int APPLE=4;
    switch (price) {
        case 4:
            printf("You buy some apples back.\n");
            break;
        case 5:
            printf("You buy some orienge back.\n");
            break;
        case 6:
            printf("You buy some pears back.\n");
            break;
        case 7:
            printf("You buy some bananas back.\n");
            break;
        default:
            break;
    }
    
}
int BuySomething1(){
    int totalPrice=12;
    return totalPrice;
}
int BuySomething2(int price){
    int change=5;
    int _price=0;
    _price=price-change;
    switch (_price) {
        case 4:
            printf("you get an apple back.\n");
            break;
        case 5:
            printf("you get an orange back.\n");
            break;
        case 6:
            printf("you get a pear back.\n");
            break;
        case 7:
            printf("you get a banana back.\n");
            break;
        default:
            break;
    }
    return  change;
}


0 0