1.封装一个能计算 m~n 求和的函数,m和n由参数传递
通过返回值返回计算的结果。调用并测试。
#include <stdio.h>
int my_sum(int m, int n);//函数的声明,函数定义好之后,可以在其他函数中调用。
int main(int argc, const char *argv[])
{
int ret1 = my_sum(1,100);调用my_sum函数,
int ret2 = my_sum(1,10);//()里面的叫做 实际参数 简称实参,(m=1,n=100)
int a = 10;
int b = 20;
int ret3 = my_sum(a, b);
printf("ret1 = %d\n", ret1);
printf("ret2 = %d\n", ret2);
printf("ret3 = %d\n", ret3);
return 0;
}
int my_sum(int m, int n){ //()里面的叫做函数的形式参数,简称形参
//实参的个数和类型要和形参保持一致
//在调用的过程中相当于用 实参去初始化形参
int i = 0;
int sum = 0;
for(i = m; i <= n; i++){
sum += i;
}
return sum;
}
2.
封装4个函数 分别实现两个整数的 加减乘除的功能,测试并调用。
my_add
my_sub
my_mul
my_div
#include <stdio.h>
//函数的声明
int my_add(int, int);
int my_sub(int, int);
int my_mul(int, int);
double my_div(int, int);
int main(int argc, const char *argv[])
{
int a = 25;
int b = 10;
int ret = my_add(a, b);
printf("a+b = %d\n", ret);
printf("a-b = %d\n", my_sub(a, b));
printf("a*b = %d\n", my_mul(a, b));
double ret2 = my_div(a, b);
printf("a/b = %lf\n", ret2);
return 0;
}
//加
int my_add(int x, int y){
int temp = x+y;
return temp;
}
//减
int my_sub(int x, int y){
return x-y;//return后面可以直接写表达式
}
//乘
int my_mul(int x, int y){
return x*y;
}
//除
double my_div(int x, int y){
return (double)x/(double)y;//注意除法会出现小数,类型强制转化为double类型
}
3.对值传递和地址传递的区分//形参是指针,也不一定是地址传递,也可能是指针的值传递。
#include <stdio.h>
int m = 10;
int n = 20;
//指针的值传递
void my_chage1(int *x){
x = &n;
}
//指针的地址传递
void my_chage2(int **x){
*x = &n;
}
int main(int argc, const char *argv[])
{
#if 0
//指针的值传递
int *p = &m;
my_chage1(p);
printf("*p = %d\n", *p);//10
#endif
//指针的地址传递
int *p = &m;
my_chage2(&p);
printf("*p = %d\n", *p);//20
printf("p = %p, &n = %p\n", p, &n);//一样的
return 0;
}