函数的定义
目录
函数的定义
函数的调用
1.函数类型
2.函数调用过程
3.函数调用的形式
4.参数传递
5.函数结果返回
5.函数声明
练题
题目描述
输入格式
输出格式
输入输出样例
1.函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值。
(与数学上的函数概念接近)
2.定义函数需要三部分内容:
i 函数的返回值类型
ii 函数的名称
iii 函数的参数
double cylinder(double r,double h)//定义求圆柱体积的函数
{
double result;
result=3.1415926*r*r*h;
return result;
}
例如上面的代码就定义了一个返回值为double型的函数,其函数名为cylinder,小括号里面定义两个传入参数(形式参数)double r和double h,在花括号内为函数体,定义result类型并计算返回result的值,可求得圆柱体积。
函数的调用
1.函数类型
我们常用的printf在c语言中为标准库函数,只需要在程序最前面用#include命令包含的头文件;但调用自定义函数时,程序必须有与调用函数相对应的函数定义。
2.函数调用过程
任何c程序开始时,首先从主函数main()开始,如果遇到某个函数被调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
3.函数调用的形式
我们常用的printf在c语言中为标准库函数,只需要在程序最前面用#include命令包含的头文件;但调用自定义函数时,程序必须有与调用函数相对应的函数定义。
2.函数调用过程
任何c程序开始时,首先从主函数main()开始,如果遇到某个函数被调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
3.函数调用的形式
任何c程序开始时,首先从主函数main()开始,如果遇到某个函数被调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
格式:函数名(实际参数表)
4.参数传递
上面提到的形式参数,如例子中的r,h;主调函数的参数为实参,形参与实参一一对应,程序运行遇到函数调用时,实参的值依次传给形参,这就是参数传递。
5.函数结果返回
返回形式:return;
先解表达式的值,再返回其值。return语句有两个作用:一是结束函数的运行;二是带着运算结果返回主调函数。
return只能返回一个值。
5.函数声明
在c语言中,若是函数先调用后定义,则需要在函数调用之前加函数原形声明。
格式:函数类型 函数名(参数表);
上面提到的形式参数,如例子中的r,h;主调函数的参数为实参,形参与实参一一对应,程序运行遇到函数调用时,实参的值依次传给形参,这就是参数传递。
返回形式:return;
先解表达式的值,再返回其值。return语句有两个作用:一是结束函数的运行;二是带着运算结果返回主调函数。
return只能返回一个值。
5.函数声明
在c语言中,若是函数先调用后定义,则需要在函数调用之前加函数原形声明。
格式:函数类型 函数名(参数表);
在c语言中,若是函数先调用后定义,则需要在函数调用之前加函数原形声明。
格式:函数类型 函数名(参数表);
练题
题目描述
给出一个正整数 n(nle 100)n(n≤100),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7times10^{11}7×1011)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 nn 是 20,变化的过程是 [20, 10, 5, 16, 8, 4, 2, 1]。
根据给定的数字,验证这个猜想,并从最后的 1 开始,倒序输出整个变化序列。
输入格式
无
输出格式
无
输入输出样例
输入
20
输出
1 2 4 8 16 5 10 20
#includeint main() { int a[10000]; int n,m,i=1; scanf("%d",&n); a[0]=n; while(n>1){ if(n%2!=0){ n=n*3+1; }else{ n=n/2; } a[i++]=n; } for(m=i-1;m>=0;m--){ printf("%d ",a[m]); } printf("n"); return 0; }



