任务描述
本关任务:定义求x
的n
次幂的函数,并返回计算结果。
相关知识
为了完成本关任务,你需要掌握如何定义函数。
函数的本质是一段可以重复使用的代码,每一个函数用来实现一个特定的功能,这段代码被提前编写好了,放到了指定的文件中,使用时直接调取即可。
从函数定义角度看,函数可分为库函数和用户自定义函数两种。
标准库函数
前面程序用到的数学函数sqrt()
、pow()
等函数是标准库函数,符合ANSI C
标准的 C 语言编译器,都必须提供这些库函数。使用ANSI C
的库函数,必须在程序的开头把该函数所在的头文件包含进来。例如,要使用数学函数时,只要在程序开头将头文件math.h
包含到程序中即可。 常见的库函数如下:
- 输入/输出函数(头文件为 stdio.h):用于完成输入/输出功能;
- 字符串函数(头文件为 string.h):用于字符串操作和处理;
- 数学函数(头文件为 math.h):用于数学函数计算;
- 内存管理函数(头文件为 stdlib.h):用于内存管理;
- 日期和时间函数(头文件为 time.h):用于日期、时间的转换操作;
- 接口函数(头文件为 dos.h):用于与 DOS、BIOS 和硬件的接口。
用户自定义函数
虽然 C 语言的标准库函数为用户提供了丰富的函数,但还是不能满足用户实际编程的需要。因此,大量的函数还需用户自行定义。
在 C 语言中,所有自定义的函数都必须遵循“先定义,后使用”的原则,并且所有的函数定义都是相互平行和独立的,不容许出现嵌套定义。函数定义的基本格式为:
函数名是函数的唯一标识,用于说明函数的功能,其命名规则与变量的命名规则相同。为便于区分变量名,通常变量名用小写字母开头的单词组合而成,函数名则用大写字母开头的单词组合而成。
函数体必须用一对花括号包围,这里的花括号{ }
是函数体的定界符。在函数体内部定义的变量只能在函数体内部访问,函数头部参数表里的变量称为形式参数,也是内部变量,也只能在函数体内部访问。函数体执行语句部分是函数的主体,具体描述该函数所应实现的功能。
形参表是函数的入口。如果说函数名相当于说明运算的规则的话,那么形参表里的形参就相当于运算的操作数,而函数的返回值就是运算的结果。
函数定义中的函数返回值类型是指函数返回值的类型。函数返回值不能是数组,也不能是函数,除此之外任何合法的数据类型都可以是函数返回值的类型,如:char、int、long、float、指针或结构等。
若函数没有函数返回值,则需要用void
定义返回值类型。若函数不需要入口参数,则用void
代替函数头部中形参表中的内容,或者空着。这就意味着该函数不接收来自调用函数的任何数据。
综上所述,函数定义的第一行称为函数首部,它定义了函数返回值的类型、函数的名字以及调用该函数时需要给出的参数个数及参数的类型。
请看示例:定义求两个整数和的 add( ) 函数,并返回这两个整数的和。
int add( int x,int y )
{
int z;
z = x + y;
return (z);
}
对于计算两数之和的函数而言,在函数头部int add(int x,int y)
中函数名add
之前的int
表明函数返回值类型为int
类型;(int x,int y)
表明形参列表中有两个参数,形参x
、y
的类型均为int
类型,在add()
函数的定义时不需要考虑形参的输入,认为在已经有两个参数的基础上,将这两个参数相加;然后通过return(z)
,将z
的值作为函数的返回值返回,其中return
后面的变量或者表达式的值代表函数要返回的值,它的类型应该与函数定义头部中声明的函数返回值类型一致。add()
函数并不是可运行的程序。
请模仿add()
函数定义power()
函数求两个整数的幂。
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,按原型 int power(int x, int n)
定义函数,实现指定功能。
测试说明
平台会对你编写的代码进行测试:
测试输入:4
9
预期输出:262144
测试输入:5
4
预期输出:625
开始你的任务吧,祝你成功!
/*在下面Begin至End间,按原型 int power(int x, int n) 定义函数*/
/********** Begin **********/
#include <stdio.h>
int power(int x,int n)
{
int k=1;
for(int i=0;i<n;i++)k=x*k;
return k;
}
/********** End **********/
int main()
{
int a,b,s;
scanf("%d%d",&a,&b);
s = power(a,b); //调用power( )函数,求a与b的和
printf("%d\n",s);
return 0;
}