C语言第六讲(Function函数)

  • Post author:
  • Post category:其他


先给大家上传一下课程的代码:


一:


main.m文件


main.m文件




main.m里:

#import

#import “Second.h”

#import “Operator.h”

#import “Last.h”

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

//注:无返回值,适应void,空类型

//void buyRedWine1(){printf(“没(wo)钱(草),买(mai)不(个)了(pi)”);}

2.无返回值,有参数

//void buyRedWine2(float money);

//void buyRedWine2(float money){

// printf(“给了%.2f元\n”,money);

// printf(“被(mai)狗(xiang)咬(yan)了(la),钱(zi)被(ji)叼(xi)走(le)了”);

//}

3.有返回值,无参数

注:有返回值,使用return进行返回,一旦遇到return,就跳出函数

//int buyRedWine3(){

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

// printf(“买什么酒呢:(1.拉菲,2.果啤)”);

// int type=0;

// scanf(“%d”,&type);

// switch (type) {

// case 1:

// return 1;

// break;

// case 2:

// return 6;

// break;

// default:

// return 0;

// break;

// }

// //return之后的代码不会执行

// printf(“hello\n”);

// }

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

注:当有多个参数时,用逗号隔开,并且参数类型相同,数据类型也不能省略;不写数据类型,默认是int

//float buyRedWine4(float money,int count);

//float buyRedWine4(float money,int count){

// printf(“给了%.2f元钱,买了%d瓶果啤\n”,money,count);

// float price=49.9;//价格

// //剩余钱

//

// return money-count*price;

//}

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

//

//int sumValue(int n);

//int sumValue(int n){

// int sum=0;

//

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

// sum =i;

//}

//return sum;

//}

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

//int dayOfYear(int year,int month,int day);int sum=0;

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

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

// if ((year@0==0)||(year%4==0&&year0!=0)) {

// a[1]=29;

// }

//


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



sum =a[i];

// }

// return sum day;

//}

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

//int middleValue(int a,int b,int c);

//int middleValue(int a,int b,int c){

// int max=a,min=a;

// max=a>b?(a>c?a:c):(b>c?b:c);


// min=a<b?(a<c?a:c):(b<c?b:c);


return a b c-max-min;

//}

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

//int countOfNumber(int n);

//int countOfNumber(int n){

//

// int count=0;

// do {

// n/=10;

// count ;

// } while (n!=0);

// return count;

//

//}


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

//函数:具有特定功能的代码段

//函数定义

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

语句

}

//可以根据有无返回值和 有无参数,把函数分为:

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

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

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

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

//函数定义在哪里?

//1.函数和函数是并列的关系

//2.函数之间不能嵌套定义

//函数调用

//函数名(参数值1,参数值2,…)

//注:函数调用时,没有参数,括号()不能够省略

// buyRedWine1();

//函数调用可以嵌套

//主调函数

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

//函数调用的过程

//先回到函数定义中,执行代码,代码执行完后,回到主调函数

// 有参数

//1

// buyRedWine2(20.0);

// //2

// float money=90.0;

// buyRedWine2(money);

//定义变量,接收函数的返回值

//变量类型与函数的返回值类型相同

// int number= buyRedWine3();

// printf(“购买瓶数:%d\n”,number);

// float remainMoney= buyRedWine4(1000,5);

// printf(“剩余:%.2f\n”,remainMoney);

//

//严格的函数包含

//1.函数声明

//2.函数定义

//3.函数调用

//函数声明

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

//函数调用,是向上查找函数,如果找不到函数就没有办法调用

//当调用的函数,定义在主调函数的下方,需要在主调函数的上方进行声明,防止找不到函数,而无法调用函数.

// void printHello(){

// printf(“Hello\n”);

// }

// int sum=sumValue(5);

// printf(“%d\n”,sum);

//

// printf(“%d\n”,sumValue(5));

// // printf(“%d\n”,sum);

// printf(“%d\n”,dayOfYear(2015,04,28));

// printf(“%d\n”, middleValue(8,200,5454));

// printf(“%d\n”,countOfNumber(455454541));

// // 根据变量的作用域,可分为:

// //1.局部变量:定义在函数内部的变量,作用范围从变量定义开始,到函数结束

// //2.全局变量:定义在函数外部的变量,作用范围从变量定义开始,到文件结束

//

// //当使用局部变量时,首先从本层找变量定义,如果没有找到,就扩大范围,去上一层找变量定义,知道找到

// //尽量不要使用全局变量

//

// //程序的入口,不要写过多的代码

// printf(“%d \n”,add(1, 3));

// printf(“%d \n”,minus(1, 3));

// printf(“%d \n”,multiply(1, 3));

// printf(“%d \n”,divide(1, 3));

形式参数(形参),函数定义和函数声明中的参数,没有固定的值,当函数调用时,值才能确定

// //实际参数(实参),函数调用中的参数,有确定的值

// int a=10;

// int b=5;

// minus(a,b);

//

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

// printf(“%d,%d”,a,b);

// printf(“\n”);

// // 交换两个变量的值

//

// int n=100,m=10;

// swap(n, m);//指针….只交换了形参,实参没变

// printf(“n=%d,m=%d\n”,n,m);

//

int array [5]={2,3,6,1,7};

printArray(array, 5);

//

// // 冒泡排序函数

// bubbleSort(array, 5);

//

// printarray(array,5);


二:Last.h里:


//求两个函数的最大值

int maxValue2(int a,int b);

//求三个数的最大值

int maxValue3(int a,int b,int c);

//四个数的最大值


int maxValue4(int a,int b,int c,int d);


三:Last.m文件里:


int maxValue2(int a,int b){

return a>b?a:b;

}

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

return a>b?(a>c?a:c):(b>c?b:c);

}

//函数嵌套

//return maxValue2(maxValue2(a,b),c);

int maxValue4(int a,int b,int c,int d){

//3 1

return maxValue2(maxValue3(a, b, c), d);

//2 2

return maxValue2(maxValue2(a, b),maxValue2(a, b));


}

四:Operator.h里:


//int add(int a,int b);

//int minus(int a,int b);

//int multiply(int a,int b);

//int divide(int a,int b);

交换两个变量的值

//void swap(int a,int b);

当数组作为函数的参数,因为这时数组是形参,形参的值是不固定的,所以数组的元素个数省略

因为打印数组需要知道数组的元素个数,所以再添加一个参数,用于记录数组元素个数

打印数组的每个元素

//void printArray(int array[],int count);

冒泡排序函数

//int bubbleSort(int array[],int count);


五:Operator.m文件里:


//int add(int a,int b){

// return a b;

//}

//int minus(int a,int b){

// return a-b;

//}

//int multiply(int a,int b){

// return a*b;

//}

//int divide(int a,int b){

// if(b==0){

// return 0;

// }else{

// return a/b;

// }

//}

//

//

//void swap(int a,int b){

//

// int temp=a;

// a=b;

// b=temp;

//}

//void printArray(int array[],int count){

// for (int i=0; iarray[i 1]) {

// int temp=0;

// temp=array[i];

// array[i]=array[i 1];

// array[i 1]=temp;

// }

// }

// }

六:Second.h中:


编写函数,返回正整数n中的数字的个数。

//int countOfNumber(int n);

//

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

//

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

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

//int middleValue(int a,int b,int c);

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

//

//int sumValue(int n);


七:Second.m中:


//int countOfNumber(int n){

// int count=0;

// do {

// n/=10;

// count ;

// } while (n!=0);

// return count;

//

// }

//int sum=0;

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

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

// if ((year@0==0)||(year%4==0&&year0!=0)) {

// a[1]=29;

// }

//

// for (int i=0; ib?(a>c?a:c):(b>c?b:c);


// min=a