程序的提炼 -> 函数
输入两个数, 保存在 base 和 n
输出 base 的 n 次方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main(int argc, char *argv[]) { int base, n; int result =1; int i; scanf("%d%d", &base, &n); for (i=1; i<=n; i++) result = result * base; printf("%d\n", result); return 0; } |
假设在已经有了函数,你会怎么使用呢?
1 2 | #include <math.h> double pow( double base, double exp ); |
使用数学库中的函数 pow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #include <math.h> int main(int argc, char *argv[]) { int base, n; int result; scanf("%d%d", &base, &n); result = pow(base, n); printf("%d\n", result); return 0; } |
现在,我们练习编写一个函数 power,可以用来计算整数的幂,当然,能够计算的范围很小。
函数有四要素:函数名,输入参数,返回值,函数体
我们可以将原先的 main 函数 改写成 power 函数,步骤如下:
1)将 scanf 中的输入作为函数的输入 scanf("%d%d", &base, &n) -> power(int base, int n) 2)将 printf 中的输出作为返回值,根据输出来确定返回值的类型 printf("%d\n", result); -> return result; |
将运算代码复制到函数体内
1 2 3 4 5 6 7 8 9 | int power(int base, int n) { int result = 1; int i; for (i=1; i<=n; i++) result = result * base; return result; } |
It's your turn now! Go to next page.
下面的程序是计算表达式的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h> int main(int argc, char *argv[]) { int a, b,result; char op; scanf("%d%c%d", &a,&op,&b); switch(op) { case '+': result =a+b; break; case '-': result =a-b; break; case '*': result =a*b; break; case '/': result =a/b; break; case '%': result =a%b; break; default: break; } printf("%d\n", result); return 0; } |
1)首先,提取出功能代码,规划好函数的名称: 计算表达式 calc_expression,这个函数的定义应该是怎样的?
2)在主函数中,怎么调用这个函数
3)将主函数中的原有代码移动到 calc_expression 中,然后修改
答案见下页