C语言学习日记——函数

目录

学习目标:

学习内容:

2.1有参函数定义的一般形式

 2.2形式参数和实际参数

 2.3函数的返回值

2.4函数的调用

学习产出: 

3.1、用冒泡或者插入法实现对字符串排序

2、用函数实现打印指定范围内所有的素数

3、编写函数实现求最大公约数gcd和最小公倍数lcm

 学习总结:


学习目标:

理解和掌握函数的概念与使用。函数是程序中完成特定任务的代码块,它可以接收输入参数并返回结果。通过函数的使用,提高代码的复用性模块化可读性


学习内容:

2.1有参函数定义的一般形式

定义有参函数的一般形式为:

类型标识符 函数名(形式参数表列)
{
    声明部分
    语句部分
}

 无参函数相当于有参函数的特殊形式,这里不另做说明。

在为函数命名时,可以使用驼峰命名法。第一个单词的首字母小写,后续每个单词的首字母大写。这种命名方式使得标识符看起来像骆驼的峰背一样,有高有低,因此得名“驼峰命名法”。例如,

myFirstName

 和

myLastName

 都是采用了驼峰命名法。

 2.2形式参数和实际参数

形式参数是在函数定义时声明的变量,而实际参数是在调用函数时传递的具体值。形式参数用于在函数内部表示这些值,而实际参数则是具体的数据。

关于形参与实参的说明:
(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单
元。只有在发生函数调用时,函数ax中的形参才被分配内存单元。在调用结束后,形
参所占的内存单元也被释放。
(2)实参可以是常量、变量或表达式,即实参可以是左值也是可以右值或者是隐式转换后和形参类型匹配 但要求它们有确定的值。在调用时将实参的值赋给形参。
(3)在被定义的函数中,必须指定形参的类型
(4)实参与形参的类型应相同或赋值兼容。字符型与整型可以互相通用。
(5)在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。

 2.3函数的返回值

通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。
(1)函数的返回值是通过函数中的return语句获得的return语句将被调用函数中的一个确定值带回主调函数中去。如果需要从被调用函数带回一个函数值(供主调函数使用),被调用函数中必须包含return语句。如果不需要从被调用函数带回函数值可以不要return语句。一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。
(2)在定义函数时指定函数值的类型。在C语言中,凡不加类型说明的函数,自动按整型处理。对数值型数据,可以自动进行类型转换。有时,可以利用这一特点进行类型转换,如在函数中进行实型运算,希望返回的是整型量,可让系统自动完成类型转换。但这种做法往往使程序不清晰,可读性降低,容易弄错,而且并不是所有的类型都能互相转换的(如实数与字符类型数据之间)。因此建议不要采用这种方法,而应做到使函数类型与return返回值的类型一致。
(3)对于不带回值的函数,应当用“void”定义函数为“无类型”(或称“空类型”)。

2.4函数的调用

函数名(实参表列);

调用时注意实参和形参的个数相等类型匹配。实参可以是左值也是可以右值或者是隐式转换后和形参类型匹配 


学习产出: 

3.1、用冒泡或者插入法实现对字符串排序

  1 #include<stdio.h>                                                                                                                                                                
  2 #include<string.h>
  3 int main(void)
  4 {
  5     char s[][100] = {"Hello","World","China","America","Mao","Pao"};
  6     int rows = sizeof(s) / sizeof(s[0]);
  7     int i = 0;
  8     int j = 0;
  9     for(j = rows - 1;j > 0;--j)
 10     {
 11         for(i = 0 ; i < j;++i)
 12         {
 13             if(strcmp(s[i],s[i + 1]) > 0)
 14             {
 15                 char room[100];
 16                 strcpy(room , s[i]);
 17                 strcpy(s[i], s[ i + 1]);
 18                 strcpy(s[i + 1], room);
 19               }
 20          }
 21      }
 22 
 23     for(i = 0;i < rows;++i)
 24     {
 25         puts(s[i]);
 26     }
 27 }

 输出结果:

2、用函数实现打印指定范围内所有的素数

  1 #include<stdio.h>
  2 int isSu(int i)
  3 {
  4     int j;
            if(a > 0 && b > 0)
            {
  5             for ( j = 2;j < i; ++j )
  6             {
  7                 if(i % j == 0)
  8                 {
  9                     return 0;
 10                 }
 11                 else
 12                 {
 13                     return 1;
 14                 }
 15             }
            }
 16     return -1;
 17 }
 18 void printfisSu(int begin, int end)
 19 {
 20     int i;
 21     for(i = begin; i <=  end;++i)
 22     {
 23         if(isSu(i) == 1)
 24         {
 25             printf("%d ",i);
 26         }
 27         if(isSu(i) == -1)
 28         {
 29             printf("error\n");                                                                                                                                                                                                       
 30             return ;
 31         }
 32     }
 33     printf("\n");
 34 }
 35 int main(void)
 36 {
 37     int a = 0;
 38     int b = 0;
 39     printf("请输入第一个数:");
 40     scanf("%d",&a);
 41     printf("请输入第二个数:");
 42     scanf("%d",&b);
 43     printfisSu(a,b);
 44     return 0;
 45 }

 输出结果:

3、编写函数实现求最大公约数gcd和最小公倍数lcm

  1 #include<stdio.h>
  2 int max(int a,int b)
  3 {
  4     return a > b ? a : b;
  5 }
  6 
  7 int gcd(int a,int b)
  8 {
  9     int i;
 10     if(a > 0 && b >0)
 11     {
 12         for(i = max(a,b);i > 0;--i)
 13         {
 14             if(a % i == 0 && b % i == 0)
 15             {
 16                 return i;
 17             }
 18         }
 19     }
 20     return -1;
 21 }
 22 
 23 int lcm(int a,int b)
 24 {
 25     int i;
 26     if(a > 0 && b >0)
 27     {
 28         for(i = max(a,b);;++i)
 29         {
 30             if(i % a == 0 && i % b == 0)
 31             {
 32                 return i;
 33             }
 34         }
 35     }
 36     return -1;
 37 }
 38 
 39 void printfError(int a)
 40 {
 41     if(a > 0)
 42     {
 43         printf("%d\n",a);
 44     }
 45     else
 46     {
 47         printf("error\n");
 48     }
 49 }
 50 int main(void)
 51 {
 52     int a = 0;
 53     int b = 0;
 54     printf("请输入第一个数:");
 55     scanf("%d",&a);
 56     printf("请输入第二个数:");
 57     scanf("%d",&b);
 58     printfError(gcd(a,b));
 59     printfError(lcm(a,b));
 60     return 0;
 61 }

 输出结果:


 学习总结:

函数的定义:函数是一段具有特定功能的代码块,它可以接收输入参数并返回结果。函数的使用提高了代码的复用性、模块化和可读性。

函数的形式参数和实际参数:形式参数用于在函数内部表示这些值,而实际参数则是具体的数据。

函数的返回值:函数可以有返回值,这个返回值要符合函数的数据类型。通过return语句可以将函数的结果返回给调用者。

函数的调用:要使用函数,必须对其进行调用。调用时需要提供与形式参数匹配的实际参数,然后执行函数体中的代码。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值