【C语言第七章】用函数实现模块化程序设计(上部分)

C语言学习日记(3)
#include<stdio.h>
int main() {
void print_star(); //声明:写函数声明时,可以简单复制已定义的函数的首行,再加一个分号,就构成函数的声明
void print_message();
print_star();//调用
print_message();
print_star();
return 0;
}
void print_star() { //无参函数
printf(“*******************************\n”);

}
void print_message() {
printf(“Hi! World!\n”); //void空类型无返回值,不写return
}

C程序的执行是从main 函数开始的,在main函数中调用其它函数,调用结束后返回main函数,结束运行。
函数间可以相互调用,但是不能调用main函数,main函数是被操作系统调用的。
在这里插入图片描述

从用户使用角度看,函数有两种:
1.库函数(系统提供,直接使用);
2.用户自己定义的函数。

从函数的形式看,有两种:
1.无参函数 (主调函数不向被调用函数传递数据)
2.有参函数(主调函数通过参数向被调用函数传递数据)
在这里插入图片描述
#include<stdio.h>
int max(int x, int y) { //形参
int z;
z = x > y ? x : y;
return(z);
}
int main() {
int max(int x, int y);
int a, b, c;
printf(“请输入两个整数:”);
scanf_s(“%d%d”, &a, &b);
c = max(a, b); //实参
printf(“最大值为%d\n”, c);
return 0;
}
实参与形参的类型应相同或赋值兼容

函数调用时的数据传递
1.形式参数:定义函数时函数后面括号中的变量名称。
2.实际参数:主函数调用函数时,函数名后面括号中的参数。
在调用函数时,系统会把实参的值传递给被调用的形参,在调用期间有效。

函数调用的过程
形参,在未出现函数调用时并不分配内存单元,被调用时,才临时分配内存单元。形参的值发生改变,不影响主调函数的实参的值。
实参和形参在内存中占用不同的存储单元,实参无法得到形参的值。

函数的返回值
通过函数中的return语句获得,如果需要从被调用函数带回一个函数值供主调函数使用,被调用函数中必须包含return语句。
函数类型决定返回值类型。不带回值的函数应定义为空(void)类型。

在这里插入图片描述

函数的嵌套调用
输入4个整数,找出其中最大的数

#include<stdio.h>
int max4(int a, int b, int c, int d) {
   
	int max2(int a, int b);
	int m;
	m = max2(a, b); //调用max2函数,将a,b中最大值赋给m
	m = max2(m, c);//将a,b,c
	m = max2(m, d);//将a,b,c,d
	return m;
}
int max2(int a,int b) {
   
	if (a > b) return a;
	else return b;
}
int main() {
   
	int max4(int a, int b, int c, int d);
	int a, b, c, d, max;
	printf("请输入四个整数");
	scanf_s("%d%d%d%d", &a, &b, &c, &d);
	max = max4(a, b, c, d);
	printf("最大值为%d", max);
	return 0;
}
//11, 12行可改为: return(a >= b ? a : b);
//5 - 7行可改为:m = max(max2(max2(a, b), c), d);

函数的递归调用
学生的年龄依次减小,递归求第一个学生的年龄。

#include<stdio.h>
int age(int n) {
   
	int c;
	if (n 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值