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++; } } } } }}
相关文章推荐
- 关于估价函数的实现-------基于python语言(网络爬虫)
- C语言基础知识(个人简单总结的关于变量和函数方面)
- 学点 C 语言(34): 函数 - 关于变量(auto、static、register、extern、volatile、restrict)
- 关于C语言中一,二级指针函数中的使用和c语言中和函数发生调用时,实参和形参都会占用内存吗?
- 关于编译型语言函数的调用(二)
- 关于编译型语言函数的调用(一)
- 关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结
- 几个关于语言和区域的函数
- 易语言-关于 mouse_event 函数
- C 语言里面关于字符数组的函数定义(string.h)
- 【脚本语言系列】关于Python基础知识函数缓存,你需要知道的事
- PHP脚本语言中关于箭号(->)在程序中的解释及strpos()函数的讲解摘要
- 关于php的语言结构和函数
- 学点 C 语言(41): 函数 - 关于 main 函数
- 【语言处理与Python】4.3风格的问题/4.4函数:结构化编程的基础/4.5更多关于函数
- 【语言-C++】关于CString 函数GetLength()返回值等于0
- 关于编译型语言函数的调用(三)
- sql server 关于函数中如何使用Getdate() (转贴)
- 关于c#中的消息处理函数和vc中的消息处理函数区别(引自ucucf的专栏)
- 在C语言中关于scanf函数的高级应用