您的位置:首页 > 编程语言 > C语言/C++

C语言--关于函数

2014-05-30 21:54 148 查看
#pragma mark--------------函数
        /**
         *  1:function  功能 函数(有两种,一种库函数,自定义函数)
         *  2:系统函数(库函数)
         *  3:自定义函数(4种)
         *
         */
#pragma mark--------------函数声明,定义,调用(使用)
        //函数声明(返回值类型,函数名,形参列表,逗号)
        //函数定义(返回值类型,函数名,形参列表,大括号,函数实现,大括号)
        //函数调用(函数名,实参列表)
        //1:任何函数都有参数,返回值
#pragma mark--------------自定义函数(4种)
        //第一种,无返回值,无参数
        //注意:如果没有参数,void可以省略不写,但是"()"不能不写,C语言规范,即使没有参数,也不要省略void
//        print();
        //第二种,有返回值,无参数
        //注意: 如果函数有返回值,需要使用return 关键字,把值提供给外界(使用函数的地方)
//         double a = PI();
        //第三种,无返回值,有参数
        //注意: 参数可以是一个,也可以是多个,每个参数,都包含类型和参数名,多个参数之间用逗号隔开
//        printNumber(1);
        //第四种,有返回值,有参数
        //注意:上面注意事项的综合
//        int max = maxValue(3,5);
        
        //breakpoint 断点
        //单步执行(逐行执行)
        //return跳出函数
#pragma mark--------------自定义函数运用
        //1:获得指定范围的随机数
        
//        int a[5]={0};
//        for (int i =0; i<5; i++) {
//            a[i]=randomNumber(10, 20);
//        }
        
        //2:打印一维数组
//        printArray(a, 5);
        
        //3:求和
//        printf(" %d ",sumValue(1,10));
        
        //4:给出年月日,求第几天
//        printf(" %d ",dayOfDate(2014, 5, 29));
        
        //5:数7游戏
//        drinkOfData(7);
        
        //6:数组传递的是首地址(重要)
        //7:函数嵌套(重要)
        //在我的括号里,还调用另外的函数
        
        //8:(**)一维浮点型数组的排序函数
//        float a[5]={0};
//        sort(a, 5);
        //9、(****)模拟ATM机取款的过程
//        (1)、定义两个能保存5个整形数的数组,一个用于保存5个人的卡号,一个用于保存对应卡号的密码。
//        (2)、判断输入的卡号是否在数组中。
//        (3)、如果在数组中就让输入密码,判断是否和卡号对应的密码匹配。
//        (4)、判断密码,24小时内只允许输入3次 错误的密码。输入错误应该提示还剩下的输入次数,3次都输入错误提示24小时内不允许操作该卡。
//        (5)、密码正确就让用户对该账户进行相应的操作。
//        (6)、注意取款的限制。
//        (7)、上述功能对于一个ATM机是循环的过程,也就是说每个客户都会按照上面的操作进行操作,一个用户操作完成,下一个用户来了还可以进行相应的操作
//        int a[5]={0},b[5]={0};
//        int c = 0;
//        int d = 0;
//        int count = 1;
//        for (int i = 0; i<5; i++) {
//            a[i]=randomNumber(10, 20);
//            b[i]=randomNumber(1, 10);
//        }
//        for (int i =0; i<5; i++) {
//            printf("卡号是:%d ",a[i]);
//        }
//        printf("\n");
//        for (int i =0; i<5; i++) {
//            printf("密码是: %d ",b[i]);
//        }
//        printf("\n");
//        printf("请输入卡号:");
//        scanf("%d",&c);
//        
//        for (int i = 0; i<5; i++) {
//            if ( c== a[i]) {
//                    printf("请输入密码:");
//                    scanf("%d",&d);
//            if (d == b[i]) {
//                    printf("密码正确,请取款不要超过100万");
//                }
//            if ( d != b[i]) {
//                    printf("错误密码%d次",count);
//                    printf("请输入密码:");
//                    count++;
//                    scanf("%d",&d);
//                    printf("错误密码%d次",count);
//                    printf("请输入密码:");
//                    count++;
//                    scanf("%d",&d);
//                    printf("错误密码%d次,24小时内不允许操作该卡",count);
//                    count++;
//                }
//                
//            }
//
//        }
        
//        int a[5]={12,13,14,16,20};
//        int b[5]={6,10,1,9,6};
//        int e[5]={20,30,40,50,60};
//         ATM(a, 5, b, 5,e,5);
        ATM();
        
        
        
        
        
        //s= (2* 2)! + (3*3)! + (4*4)!阶乘的和.
//        long long sum = 0;
//        long long  result = factorial(square(2));
//         printf("\n");
//        printf(" %lld ",result);
//        sum = factorial(2*2)+factorial(3*3)+factorial(4*4);
//        sum = factorial(square(2))+factorial(square(3))+factorial(square(4));
        //函数定义功能越小,可以组合,不要定义函数太多
        //一个函数的返回值可以作为另一个函数的参数
//        for (int i = 2; i<=4; i++) {
//            sum = sum + factorial(square(i));
//        }
//         printf("\n");
//        printf(" %lld ",sum);
        
        
#pragma mark------------------递归函数(自己调用自己,贪吃蛇,每个方块都调用拐弯,几个方块,调用几次)
        //容易死循环,浪费内存
        //递归找视图的层级关系
        /**
         *  栈区,系统销毁,变量占1M内存
         *  堆区,自己释放
         *  常量区,
         *  代码区,
         *  全局区;
         */
//           printf("\n");
//        printf("%lld",factorial1(5));
        
#pragma mark------------------局部变量,全局变量,作用域,static(静态变量)
        //在函数体里面定义的变量,通常是局部变量
        //函数体外定义的变量是全局变量
        //全局变量的作用域是用变量声明到程序结束都可以用
        //多个函数要使用的变量,定义成全局变量
        //静态变量static只能初始化一次
        
        //静态局部变量生命周期
        //局部变量生命周期
        /**
         *  1:作用域都一样(所在的大括号里)
         *  2:普通局部变量生命周期(出了所在函数(大括号)生命周期就结束了)
         *  3:静态局部变量生命周期(程序结束时)
         */
        
        
        //全局变量
        //静态的全局变量
        //stastic修饰的变量,函数,仅限当前文件使用,生命周期整个程序,只初始化一次
        /**
         *  1,生命周期,程序开始,程序结束
         *  2,加static,仅限自己文件使用,其它文件不可以用
         *  3,两个人取同名的变量,其中一个加static修饰就可以用
         */
        
//        for (int i =0; i<5; i++) {
//            test1();
//        }
        
#pragma mark------------------const(修饰的变量是只读的)
        //1:目的,看懂系统的源码
        //2,作用:保护变量,不被修改
//        const int g = 20;
//        g = 21;
        
        
        
    }
    return 0;
}

//每一次都是新的10,用完就销毁,
//重要 10 10 10 10 10

//void test1(void)
//{
////    int m =10;
//    static int m = 10;
//    printf(" %d ",m++);
//}
<pre name="code" class="html">void print(void);double PI(void);void printNumber(int number);//求最大值int maxValue(int a,int b);//获得指定范围的随机数int randomNumber(int min,int max);//打印void printArray( int a[],int count);//求和int sumValue(int a,int b);//给出年月日,求第几天BOOL isRunYear(int year);int dayOfDate(int year,int month,int day);//数7游戏void drinkOfData(int n);//浮点型排序void sort(float a[],int count);//求阶乘long long  factorial (int number);//求平方int square (int number);//递归void test(int max);//递归求阶乘long long  factorial1 (int number);//模拟ATM机取款的过程void ATM (void);//数组循环void fors1(int a[],int  count);//数组循环void fors2(int a[],int  count);//数组循环void fors3(int a[],int  count);//void password(int b[],int count);
<pre name="code" class="html">void print(void){    printf("第一种,无返回值,无参数");}double PI(void){    return 3.1415926;}void printNumber(int number){    printf("%d",number);}//比较求最大值int maxValue(int a,int b){    return a>b?a:b;}//获得指定范围的随机数int randomNumber(int min,int max){    return arc4random()%(max-min+1)+min;}//打印void printArray( int a[],int count){    for (int i = 0; i< count; i++) {        printf(" %d ",a[i]);    }}//求和int sumValue(int a,int b){    int sum = 0;    for (int i = a; i<= b ; i++) {        sum = sum + i;    }    return sum;}//给出年月日,求第几天BOOL isRunYear(int year){    if (year%400==0 ||(year%4==0 && year%100 != 0) ) {        return YES;    }    return NO;}int dayOfDate(int year,int month,int day){    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};    int days = 0;    for (int i = 1;i<month ; i++) {        days=days+a[i-1];    }    days=days+day;        if (month>2 && (isRunYear(year)==YES) ) {        days=days+1;    }    return days;}void drinkOfData(int n){    for (int i =1; i<100; i++) {        if (i % n == 0 || i%10 == n || i/10 == n) {            printf(" 过 ");        }else{            printf(" %d ",i);        }    }}//浮点型排序void sort(float a[],int count){    for (int i = 0; i< count; i++) {        a[i]=randomNumber(1000, 2000);        a[i]=0.001*a[i];            }    for (int i = 0; i<count-1; i++) {        for (int j = 0; j<count-1-i; j++) {            if (a[j]>a[j+1]) {                float temp = a[j];                a[j]=a[j+1];                a[j+1]=temp;            }        }    }    for (int i = 0; i<count; i++) {        printf(" %f ",a[i]);    }}//求阶乘long long  factorial (int number){    long long value = 1;    for (int i = 1; i<= number; i++) {        value = value * i;    }    return value;}//求平方int  square (int number){    return number * number;}//递归void test(int max){    }//递归求阶乘long long  factorial1 (int number){    if (number==1) {        return 1;    }    return number * factorial1(number - 1);}//数组循环void fors1(int a[],int  count){    for (int i = 0; i<count; i++) {        printf("卡号是: %d ",a[i]);    }}//数组循环void fors2(int a[],int  count){    for (int i = 0; i<count; i++) {        printf("密码是: %d ",a[i]);    }}//数组循环void fors3(int a[],int  count){    for (int i = 0; i<count; i++) {        printf("余额是: %d ",a[i]);    }}//void password(int b[],int count){//    int d = 0;    int f = 0;    int e[5]={20,30,40,50,60};        for (int i = 0; i<count; i++) {//        if (d == b[i]) {            printf("密码正确");            printf("\n");            printf("你的账号有%d元",e[i]);            printf("\n");            printf("请输入取款数:");            scanf("%d",&f);            if ( f>e[i] || f>10000 || f<1) {                printf("操作错误,请重新操作");            }else{                printf("你的账号有%d元",e[i]-f);            }        }//    }} void ATM (void){        int a[5]={12,13,14,16,20};    int b[5]={6,10,1,9,6};    int e[5]={20,30,40,50,60};    int c = 0;    int d = 0;    int f = 0;    int count = 1;        fors1(a, 5);    printf("\n");    fors2(b, 5);    printf("\n");    fors3(e, 5);        printf("\n");    printf("请输入卡号:");    scanf("%d",&c);        for (int i = 0; i<5; i++) {        if ( c == a[i]) {            printf("请输入密码:");            scanf("%d",&d);            if (d == b[i]) {                printf("密码正确");                printf("\n");                printf("你的账号有%d元",e[i]);                printf("\n");                printf("请输入取款数:");                scanf("%d",&f);                if ( f>e[i] || f>10000 || f<1) {                    printf("操作错误,请重新操作");                }else{                    printf("你的账号有%d元",e[i]-f);                }            }                        if ( d != b[i]) {                                printf("错误密码%d次",count);                                printf("请输入密码:");                count++;                scanf("%d",&d);                if (d == b[i]) {                    printf("密码正确");                    printf("\n");                    printf("你的账号有%d元",e[i]);                    printf("\n");                    printf("请输入取款数:");                    scanf("%d",&f);                    if ( f>e[i] || f>10000 || f<1) {                        printf("操作错误,请重新操作");                    }else{                        printf("你的账号有%d元",e[i]-f);                    }                }else{                printf("错误密码%d次",count);                printf("请输入密码:");                count++;                scanf("%d",&d);                    if (d == b[i]) {                        printf("密码正确");                        printf("\n");                        printf("你的账号有%d元",e[i]);                        printf("\n");                        printf("请输入取款数:");                        scanf("%d",&f);                        if ( f>e[i] || f>10000 || f<1) {                            printf("操作错误,请重新操作");                        }else{                            printf("你的账号有%d元",e[i]-f);                        }                    }else{                        printf("错误密码%d次,24小时内不允许操作该卡",count);                        count++;                    }                }                                                                                            }                    }            }}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: