C语言 函数
#include <stdio.h>
#include <stdlib.h>
//每一个函数都是一个独立的整体不能写在另外一个函数体里面
#pragma mark -------无返回值无参数----------
void walk(){
printf("走\n");
}
//写一个输入季节编号进入某个季节的方法
/*void seasons(){
char *a[]={"春","夏","秋","冬"};
int b=0;
printf("请输入季节编号:\n");
scanf("%d",&b);
printf("恭喜您已进入%s天\n",a[b]);
}*/
//乘法口诀
/*void mul(){
for (int i=1; i<10; i++) {
for (int j=1; j<=i; j++) {
printf("%d*%d=%d\t",j,i,i*j);
}
printf("\n");
}
}*/
//输入两个数字相加的函数
/*void sum() {
int a,b;
int sum;
printf("请输入两个数字\n");
scanf("%d%d",&a,&b);
sum=a+b;
printf("它们的和是:%d\n",sum);
}*/
#pragma mark -------无返回值有参数------
/*void walks(char *who){
printf("%s走\n",who);
}*/
//
/*void sum(int a,int b){
printf("它们的和是:%d\n",a+b);
}*/
//家里有一盆玫瑰花,调用一个方法让玫瑰花开花
/*void flower(){
printf("玫瑰花开花了!");
}*/
//家里有5盆花(水仙花、月季花、牡丹花、菊花、百合花)写一个方法分别让这5盆花开花
/*void flower(){
char *flowerName[5]={"水仙花","牡丹花","月季花","菊花","玫瑰花"};
for (int i=0; i<5; i++) {
printf("%s开花了!\n",flowerName[i]);
}
}*/
//前面的5盆花都死了,新换5盆花写一个方法分别让这5盆花开花
/*void flower(char *name[5]){
for (int i=0; i<5; i++) {
printf("%s开花了!\n",name[i]);
}
}*/
#pragma mark -------无参有返回值函数------
//返回值char *就代表函数message它是什么数据类型
/*char * message(){
char *c="今天光棍节!";
return c;
}*/
/*int num(){
return 89;
}*/
//有返回值函数在使用的时候它等价于它的返回值
//怎么去使用返回值c就怎么去使用message这个函数
//使用条件:只需要一个计算的结果,不需要指定条件
//目的:给调用函数的地方一个结果(给别人一个东西)不跟外部函数要参数只提供给调用函数一个具体值
//练习:家里有一盆玫瑰花,写一个方法开花
/*char * message(){
return "开花了";
}*/
//抽奖函数
/*char *choujiang(){
char *prizes[4]={"iPhone7","iPhone6s","iPhone10086","谢谢惠顾"};
int rand=arc4random()%4;
return prizes[rand];
}*/
#pragma mark -------有参有返回值函数
//传一个数字让这个数字与99相加提供给调用的地方计算后的结果
/*int add(int a){
return a+99;
}*/
//抽奖的函数输出奖品里面的奖品可以替换
/*char *choujiang(char *a[4]){
int rand=arc4random()%4;
return a[rand];
}*/
//四季
char *season(int num){
char *c[4]={"春天","夏天","秋天","冬天"};
return c[num];
}
int main(int argc,constchar * argv[]) {
/*
函数的定义:具备某些功能的代码块代码块有自己的名字有自己的功能
函数可以理解为方法
只要有函数(方法)可以在任何地方(其他的函数(方法))使用
函数的好处:优化精简代码模块化提高可阅读性复用性强可维护性强
形参、实参:形参形式参数,媒介
实参 实际参数,真正需要的内容
函数的公式:
数据类型函数名(参数列表){
功能代码
}
数据类型又分为有返回值(结构体、数组、基本数据类型····)的和无返回值(void)的
(参数列表)括号里可以写任意多的参数每一个参数用逗号隔开参数的数据类型:任意
一定要写在调用函数的上面(为了让编译器知道有这个函数)
无参无返回值函数 函数的调用
公式:void 函数名(){
功能代码
}
不需要得到结果,也不需要提供给它任何东西
一般他只具备固定的某些功能(内容也是固定的)不能够拓展
函数的调用:在需要使用这个函数(方法)的地方只需写上 函数名();
带参无返回值函数 函数的调用
公式:void 函数名(参数列表){
功能代码
}
函数里面的内容是可变化的产生的结果也是可变化的
函数名不能重复
参数:向外面函数(别人)要个东西
函数的调用:函数名(实参 具体的值);
挑以前的5道题使用函数实现
无参有返回值函数 函数的调用
return:有跳出函数的功能并且如果有返回值的函数还会携带一个具体的值,然后会把返回的值交给调用的地方去使用
返回值:就是return携带的那个值 是一个具体的值 是一个有实际值的变量
公式:
返回值类型 函数名(){
功能代码
return 与返回值类型相同的参数 ;
注意:不要在跳出函数(return)的后面写功能代码没有任何意义,不会去执行因为已经跳出
无参有返回值函数的调用:函数名();调用的时候这个函数就是一个具体的值
}
有参有返回值函数 函数的调用
会跟调用的地方要一些参数加工完毕之后给调用的地方一个结果
公式:
返回值类型 函数名(参数列表){
功能代码;
return 与返回值类型相同的参数;
}
*/
#pragma mark -------------------
//sum(12, 23);
//walks("小明");
// walk();
//seasons();
//mul();
// sum();
//flower();
//flower();
/* char *Name[5]={"水仙花","牡丹花","月季花","菊花","玫瑰花"};
flower(Name);*/
/* char *m=message();
printf("%s\n",m);*/
// printf("%d\n",num());
// printf("家里的玫瑰花%s!\n",message());
//printf("得到的奖品是:%s\n",choujiang());
//printf("%d\n",add(89));
/* char *prizes[4]={"LV包","香奈儿","爱马仕","一毛钱"};
printf("您抽到的奖品是:%s\n",choujiang(prizes));*/
int num;
printf("请输入季节编号:春天---1\n夏天---2\n秋天---3\n冬天---4\n");
scanf("%d",&num);
printf("您选择的季节是:%s\n",season(num-1));
return 0;
}