函数及设计
函数
:
库函数
(
系统自带或者第三方提供
),
自定义函数
库函数
:printf,scanf,sqrt,pow,strxxx ,
可以直接使用
(
需要引用对应的头文件
)
写函数的目的
:1.
提高代码使用率
;2.
方便分工协作
;......
后面不允许把所有的代码放在
main
函数中
,
必须单独成自定义函数
函数定义完成后
,
如果需要使用必须调用该函数
函数由
4
部分组成
,
如下
:
返回值
函数名
(
参数列表
)
{
函数体
(
函数的实现
)
}
1.
函数名
:
唯一
,
可以由字母
,
数字和下划线组成
int
arr
[
ROW
][
ROW
]
=
{
0
};
//
全部初始化为
0,
为了和后面有效的值区分
int
row
=
0
;
//
行下标
int
col
=
ROW
/
2
;
//
列下标
arr
[
row
][
col
]
=
1
;
//1.
数字
1
放在第一行中间
for
(
int
i
=
2
;
i
<=
ROW
*
ROW
;
++
i
)
{
//
环形处理
/*
row = row - 1;//
方法
1
if (row < 0)
row = ROW - 1;
*/
//row = (row == 0 ? ROW - 1 : row - 1);//
方法
2
row
=
(
row
-
1
+
ROW
)
%
ROW
;
//
方法
3
col
=
(
col
+
1
)
%
ROW
;
if
(
arr
[
row
][
col
]
!=
0
)
//
已经有数据
,
往下两行
,
往前一列
{
row
=
(
row
+
2
)
%
ROW
;
col
=
(
col
-
1
+
ROW
)
%
ROW
;
}
arr
[
row
][
col
]
=
i
;
}
//
输出魔方阵
for
(
int
i
=
0
;
i
<
ROW
;
i
++
)
{
for
(
int
j
=
0
;
j
<
ROW
;
j
++
)
{
printf
(
"%-3d"
,
arr
[
i
][
j
]);
}
printf
(
"\n"
);
}
return
0
;
}
2.
参数列表
:
传递数据的窗口
.
在软件的实际使用过程
,
并不会使用
scanf
函数
以后在自定义函数中不允许使用
scanf
实际参数
:
简称实参
,
调用函数时给的数据
形式参数
:
简称形参
,
函数定义时写的参数
3.
返回值
在函数中不应该通过
printf
输出
(
特殊情况例外
,
有多个返回值
)
应该通过返回值把结果返回
可参考
,strlen,sqrt,pow
等
注意调用函数时需要接收返回值
返回值只能是
0
个或者
1
个
,
不能是多个
(
如果有多个暂时使用
printf
输出
)
void:
没有
,
如果没有返回值
,
函数的前面加
void
标识符命名建议
:1.
变量名首字母小写
;2.
函数名首字母大小
(
为了和库函数区分
);3.
宏名全大写
函数设计有两个角色
:
1.
写函数的人
;2.
使用函数的人
例如
.
利用函数实现
1+2+3+...+n
int
Sum
(
int
n
)
//
需要的数据应该通过参数列表获取
,
不应该通过
scanf
{
int
s
=
0
;
//
注意变量名不能和函数名同名
for
(
int
i
=
1
;
i
<=
n
;
i
++
)
s
+=
i
;
//printf("%d\n",s);//
不要
printf
输出
,
应该改为
return
返回
return
s
;
}
int
main
()
{
int
a
=
Sum
(
10
);
//
测试用例
printf
(
"%d\n"
,
a
);
printf
(
"%d\n"
,
Sum
(
100
));
//
测试用例
printf
(
"%d\n"
,
Sum
(
1000
));
//
测试用例
return
0
;
}