C_Language_07
C_Language_07
函数:函数是具有特定功能的代码段。
printf("hello world!\n");//不调用函数
//1.无参,无返回值
示例:
void hello(){
printf("hello world!\n");
}
int main(int argc, const char * argv[]) {
hello();
return 0;
}
int main(int argc, const char * argv[]) {
for (int i = 0; i < 10; i++) {
hello();//无参无返回值
}
return 0;
}
//2.无参,有返回值
示例:
int peopleCount(){
return 20;
}
int main(int argc, const char * argv[]) {
int a = peopleCount();//无参有返回值
printf("%d\n",a);
// 一个人有两只手,定义变量r = 2;
int r = 2;
int hands = r * peopleCount();
printf("%d ",hands);
return 0;
}
//3.有参,有返回值
示例:
int max(int a,int b){
return a > b ? a : b;
}
int main(int argc, const char * argv[]) {
int a = max(20,30);//有参有返回值
printf("%d ",a);
return 0;
}
int max1(int a,int b){
if (a > b) {
return a;
}else{
return b;
}
}
int main(int argc, const char * argv[]) {
int a = max1(20,30);
printf("%d\n",a);
return 0;
}
//4.有参,无返回值(打印一个数)
示例:
void number(int a){
printf("%d\n",a);
}
int main(int argc, const char * argv[]) {
number(5);//有参无返回值
}
函数调用中,形参会拷贝实参内容,传递参数是给函数传送信息的一种⽅方法。即形参的改变不会改变实参的值,形参只拷贝了实参的副本
对其进行操作,实参不会改变,形参则会改变
示例:
void cheng5(int a, int b){
printf("a = %d b = %d\n",a,b);
a = a * 5;
b = b * 5;
printf("a = %d b = %d\n",a,b);
}
int main(int argc, const char * argv[]) {
int x = 4, y = 6;
cheng5(x, y);
printf("x = %d y = %d\n",x,y);
return 0;
}
数组作为参数
示例:
void changArray(int a[]){
for (int i = 0; i < 5/2; i++) {
int temp = a[i];
a[i] = a[5 - 1 -i];
a[5 -1 -i] = temp;
}
for (int i = 0; i < 5; i++) {
printf("%d ",a[i]);
}
}
int main(int argc, const char * argv[]) {
int a[5] = {1,2,3,4,5};
changArray(a);
printf("\n");
for (int i = 0; i < 5; i++) {
printf("%d ",a[i]);
}
return 0;
}
示例:
void swap(int *a, int *b){
printf("a = %d b = %d\n",*a,*b);
int i = 0;
int *temp = &i;
*temp = *a;
*a = *b;
*b = *temp;
printf("a = %d b = %d\n",*a,*b);
}
int main(int argc, const char * argv[]) {
int a[5] = {1,2,3,4,5};
swap(&a[1], &a[3]);
for (int i = 0; i < 5; i++) {
printf("%d ",a[i]);
}
return 0;
}
递归函数:C语⾔允许函数实现体内再次调用函数本⾝身。这种调⽤方式称为递归调用,这个函数称为递归函数。
注意:递归⼀定要有出口。
示例:
int factorial(int n){
if (n == 1) {
return 1;
}else{
return n * factorial(n - 1);
}
}
int main(int argc, const char * argv[]) {
int n = 0;
printf("请输入:");
scanf("%d",&n);
printf("%d! = %d\n",n,factorial(n));
return 0;
}
变量作用域:即变量的有效范围
局部变量与全局变量:函数体内定义的变量是局部变量,函数体外定义的变量是全局变量。
注意:外部变量和局部变量可重名,但是在局部变量作⽤域内只能访问局部变量。
示例:
int main(int argc, const char * argv[]) {
int a1 = 5;
if (a1 > 0) {
int a11 = 3;
printf("%d\n",a1);
}
printf("%d\n",a1);
if (a11 > 0) {
printf("%d\n",a11);
}
return 0;
}
练习1.编写函数int sumValue(int n):计算1到n的和。
示例:
int sumValue(int n){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
int main(int argc, const char * argv[]) {
int n = 0;
printf("请输入:");
scanf("%d",&n);
printf("%d ",sumValue(n));
return 0;
}
练习2.编写函数int sumValudmn(int m, int n):计算m-n的和
int sumValudmn(int m, int n){
int sum = 0;
for (int i = m; i <= n; i++) {
sum += i;
}
return sum;
}
int main(int argc, const char * argv[]) {
int a,b;
printf("请输入起始值和终止值:");
scanf("%d%d",&a,&b);
printf("%d \n",sumValudmn(a, b));
return 0;
}

浙公网安备 33010602011771号