《C语言知识点》函数的参数与返还值的简单介绍(就是学会简单的去用函数去定义一个功能后面方便调用)

函数:(function)

ps:function翻译过来其实还有功能的意思()
功能模块,相当于自己定义功能,可以简单使用 
1.要先定义一个函数,表示有这一个功能模块: 
void report(){内容}
2.写完了要来调用,比如干嘛要写: 
report(); 

例子:1.一个班级报数,假设一个班级有32个人: 

#include<stdio.h> 
void report()//定义一个函数// 
{
    for(int i=1;i<=32;i++)
    {
        printf("%3d",i);    //3d,就当我空几个位置,看起来美观点,当然要直接printf输出空格也是可以的//   
        if(i % 10==0)   //这个定义函数的功能// 
        {
            printf("\n");//每10个换一个行// 
        }
    }
    printf("\n"); 
} 
int main()
{
    printf("1班报数!\n");
    report();
    getchar();
    return 0; 
}


当然在命名上没有什么要求,比如void report中的report可以换任意一个词来替代在有提前定义一个函数,在重复运用上就有一定优势了,比如 

#include<stdio.h> 
void report()//定义一个函数// 
{
    for(int i=1;i<=32;i++)
    {
        printf("%3d",i);    //3d,就当我空几个位置,看起来美观点,当然要直接printf输出空格也是可以的//   
        if(i % 10==0)   //这个定义函数的功能// 
        {
            printf("\n");//每10个换一个行// 
        }
    }
    printf("\n"); 
} 
int main()
{
    printf("1班报数!\n");
    report();
    printf("听不清楚,再来一遍!\n");
    report();      //比如在这里需要再来一次报数的话,就不需要再一次去搞一大堆代码进去了,能节省一点时间和空间// 
    getchar();
    return 0; 
}


到这里就学会了函数的初步概念和定义最简单的函数并且在main()调用
ps:不会就去看例子!函数的参数(Arguments) 
函数的一般形式:
返回值类型 函数名(参数列表){
函数体 

例子:上次写了一个班报数,那么如果两个班呢(假设两个班人数不一样,一般32,二班46):
那么最简单的想法就是按照之前的一样,复制粘贴再改一下参数呗~,写出来就是: 

 #include<stdio.h>
void report1()
{
    for(int i=1;i<=32;i++)
    {
        printf("%3d",i);
        if(i % 10==0)
        {
            printf("\n");//每10个换一个行// 
        }
    }
    printf("\n"); 
}

void report2()
{
    for(int i=1;i<=46;i++)
    {
        printf("%3d",i);         //2d的话有点卡位置,3d就刚刚好// 
        if(i % 10==0)
        {
            printf("\n");//每10个换一个行// 
        }
    }
    printf("\n"); 
}int main()
{
    printf("1班报数!\n");
    report1();
    printf("2班报数!\n");
    report2();
    getchar();
    return 0; 
}


写出来还是相当重复和啰嗦的,所以我们要搞一个灵活点的,不要这么蠢的,所以对于相同逻辑,我们要去找不同点,那么在这里面,就是班级人数的问题。

#include<stdio.h>
void report(int N)
{
    for(int i=1;i<=N;i++)
    {
        printf("%3d",i);
        if(i % 10==0)
        {
            printf("\n");//每10个换一个行// 
        }
    }
    printf("\n"); 
}

int main()
{
    printf("1班报数!\n");
    report(32);//这里就相当于N=32// 
    printf("2班报数!\n");
    report(46);
    getchar();
    return 0; 
}


用N来调整报数人数,这个N实际上就相当于调整空调的度数,程序总不能是死的吧 ~
当然实际上定义的时候也不一定要单个参数,可以有多个参数存在,不过需要对准位置~
例子:显示[from,to]之间所有的完全平方数

#include<stdio.h>
void show(int from,int to) //定义两个参量,从开始到结束//
{
    for(int i=from;i<=to;i++)
    {
        for(int k=1;k<=i;k++)
        {
            if(k*k==i)
            {
                printf("%d=%d*%d\n",i,k,k);
            }
        }
    }
    printf("\n");
 } 
 int main(){
     printf("显示【120,300】之间的完全平方数!\n");//Form 120 to 300//
     show(120,300);
     getchar();
     return 0; 
 }


例子2:打印一个三角形 

#include<stdio.h>
#include<stdbool.h>//引用bool// 
//显示三角形
// reversed;true<显示倒三角;false,显示正三角 
void striangle(int N,bool reversed){
    for(int i=1;i<=N;i++)
    {
        //每行星星数//
        int numberStar=i;
        if(reversed)//判断是否是颠倒的三角形// 
        {
            numberStar=N-i+1; //重组一下三角形的*//
         } 
         //答打印一行星星//
         for (int k=1;k<=numberStar;k++)
         {
             printf("*");
          } 
          printf("\n");
    }
}
int main(){
    striangle(8,false);//这里可以改ture和false,就是改正三角和倒三角// 
    getchar();
    return 0;
}  


当然注意的点要对正,比如N对8,reserveture和false。 
函数可能没有参数int void(),也可以有多个参数,同上例子。

函数的返回值(Return Value)
函数的一般形式: 
 返回值类型 函数名(参数列表){
函数体 
}


什么是返回值呢:(返回值和返还值都差不多啦doge)
首先,函数就想是可以做一件事情
函数的返回值,就是这件事件的结果
例子: 1.让小花去买冰淇淋,她买了,并且自己吃了,那就是
void buy(int money){}(有东西,但不多doge)
她买了,然后把冰淇淋交出来
IceCream buy (int money){}(有东西,东西还在doge)

ps:void 表示不返还任何东西 int就可以返回return一个值出来。 
2."感觉"一下return的作用 

#include<stdio.h>
#include<stdbool.h>
int test(int a,int b){
    int result=a*a+b*b;
    return result;//返还一个结果// 
}
int main()
{
    int v=test(3,4);
    printf("result:%d\n",v);
    getchar();
    return 0;
 } 
 
 #include<stdio.h>
#include<stdbool.h>
int test(int a,int b){
    int result=a*a+b*b;
    return result;//返还一个结果// 
}
int main()
{
    int v1=test(3,4);
    int v2=test(4,5);
    int result=v1+v2; 
    printf("result:%d\n",result);//这里用到result,至于为什么要用,你自己“感觉”一下// 
    getchar();
    return 0;
 } 
 //先用return返回出结果,再调用// 

感觉到了吗?(doge)
 例子2:判断区间内为完全平方数的数:

#include<stdio.h>
#include<stdbool.h>
//返回值:ture,是完全平方数;false,不完完全平方数// 
bool is_square(int n)
{
    bool result=false;
    for(int i=1;i<=n;i++)
    {
        if(i*i==n)
        {
            result=true;
            break;
        }
    }
    return result;//返回结果// 
}
 int main(){
 for(int i=200;i<300;i++)//有完全平方数的范围// 
 {
     //调用is_square()方法,并取得其返回值//
     bool ok=is_square(i);//判断这个范围内然后来输出true or false// 
     if(ok)
     {
         printf("%d是完全平方数!\n",i); 
               } 
 }
 }
 //printf只是用来调试而已// 


 return语句的作用:
 1.返回一个值
 2.立即回退一个函数 

 优化一下例子:
 1.对判断完全平方数的例子进行简化,使逻辑更加清晰明了: 

 #include<stdio.h>
#include<stdbool.h>
//返回值:ture,是完全平方数;false,不完完全平方数// 
bool is_square(int n)
{
    for(int i=1;i<=n;i++)
    {
        if(i*i==n)
        {
        return true;//运行到这里,那就是true,直接退出代码// 
        }
    }
    return false;//能运行到这里,前面就是运行不动了// 
}
 int main(){
 for(int i=200;i<300;i++)
 {
     bool ok=is_square(i);
     if(ok)
     {
         printf("%d是完全平方数!\n",i); 
               } 
 }
 } 

 2.用return对打印一个三角形的例子进行一个简单的优化,补充用户输入0时的情况: 

#include<stdio.h>
#include<stdbool.h>//引用bool// 
//显示三角形
// reversed;true<显示倒三角;false,显示正三角 
void striangle(int N,bool reversed){
    if(N<=0)
    {printf("N必须大于等于0。");//加了这三行,如果为0,也不用直接输入了// 
    return;} 
        for(int i=1;i<=N;i++)
    {
        //每行星星数//
        int numberStar=i;
        if(reversed)//判断是否是颠倒的三角形// 
        {
            numberStar=N-i+1; //重组一下三角形的*//
         } 
         for (int k=1;k<=numberStar;k++)
         {
             printf("*");
          } 
          printf("\n");
    }
}
int main(){
    striangle(-8,false);//那这里的话就输出不了了// 
    getchar();
    return 0;
}  
//所以一般加return的作用截断当前的程序,作用自己想(表达不出来 )// 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alueaxten(上学版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值