C语言return应用的案例——判断素数的方法和扩展

❗注意:PC端目录请看文章左手边(默认),app端(移动端)目录请看导航栏处

📑前言

关于return:

  • 函数是C语言的基本构件,一个C程序可以由一个主函数和若干个子程序函数构成,由主函数调用其它子程序函数,其他子程序函数也可以互相调用。通常希望通过函数调用使主函数能得到一个确定的值,这就是函数的返回值。
  • 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。
  • 没有返回值的函数为空类型,用void表示。
  • return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值。

补充:

  • 在C语言中通过函数实现模块化程序设计思想,即用函数实现功能模块的定义,然后通过函数之间的调用来实现程序功能。因此函数有主调函数和被调函数。参数是主调函数和被调函数进行信息通信的接口,在函数的定义和说明语句中,我们将函数名后面括号中的参数称为形式参数,简称“形参”,在主调函数的调用语句中函数名后面括号中用的参数称为实际参数,简称“实参”。当函数被调用时实参要向形参传递数据,函数调用并完成一定的功能后也要向主调函数返回一些数据。
  • return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

多返回值:

在C语言中,一般情况下函数的返回值是通过函数中的return语句来实现的,每调用一次return语句只能从函数中返回一个值。但在实际很多应用中,我们需要从函数中返回多个值,那我们可以用什么方法实现呢?此时我们可以用三种方法来实现。

  • 方法一:设置全局变量 图1 return函数 全局变量是在函数外部定义的全局变量,它不属于任何一个函数,其作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。当我们需要函数返回多个值时,除了函数体中的return语句返回其中一个之外,其它的返回值我们可以通过定义全局变量来处理。因为根据全局变量的特点,在被调用函数中改变了多个全局变量和值,相当于其主调函数全局变量的值也发生了变化,也就相当于返回了多个值。
  • 方法二:使用数组名或指针作为函数的形参 数组名或者指针实际为地址,而数组一般都包括多个元素,指针也可以指向一组数据的着地址,把数组名或者指针作为函数形参,实际上相当于主调函数的实参与形参共用地址,所以在函数中的数组元素发生改变即是实参也随之改变。也相当于在调用函数时多个值返回给主调函数。
  • 方法三:用结构体作为函数的形参 在上述方法二中用数组返回函数多个值的情况,根据数组的特点要求返回的多个值必须是类型相同的数据,但是在实际应用过程中,有时返回值的类型不一定相同,那么我们有不有新的方法来处理这种情况?实际上在C语言中包含多个元素的构造类型除了数组之外,还有结构体和共用体。其中数组的元素类型必须相同,但是结构体和共用体的元素类型可以不相同。而结构体和共用体又有区别,在任何同一时刻,共用体只存放了一个被选中的成员,而结构体的所有成员都存在。因此,当函数需要返回多个不同类型的值时,用结构体来实现是比较函数的多值返回比较合理。

 

案例要求:输入一个整数,判断是否为素数。(素数是自然数,小于零的整数没有意义)

关于素数:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。100以内所有的素数有如下25个:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。

📚文章目录

📑前言

1️⃣第一种

2️⃣第二种

3️⃣第三种


1️⃣第一种

#include <stdio.h>

int prime(int n)
{
    int is_prime = 1, i;

    if (n < 0)
        return -1;
    else if (n < 2)
        return 0;

    for (i = 2; i < n; i++)
        if (n % i == 0)
        {
            is_prime = 0;
            break;
        }

    return is_prime;
}

int main(int argc, char** argv)
{
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);

    if (prime(num) < 0)
        printf("%d 是一个非法输入!\n", num);
    else if (prime(num) > 0)
        printf("%d 是一个素数!\n", num);
    else
        printf("%d 不是一个素数!\n", num);

    return 0;
}


2️⃣第二种

#include <stdio.h>

int prime(int n)
{
    int is_prime = 1, i;

    if (n < 0)
        return -1;
    else if (n < 2)
        return 0;

    for (i = 2; i < n; i++)
        if (n % i == 0)
        {
            is_prime = 0;
            break;
        }

    return is_prime;
}

int main(int argc, char** argv)
{
    int num, is_prime;
    printf("请输入一个整数:");
    scanf("%d", &num);

    is_prime = prime(num);
    if (is_prime < 0)
        printf("%d 是一个非法输入!\n", num);
    else if (is_prime > 0)
        printf("%d 是一个素数!\n", num);
    else
        printf("%d 不是一个素数!\n", num);

    return 0;
}


3️⃣第三种

#include <stdio.h>

void prime(int n)
{
    int is_prime = 1, i;

    if (n < 0)
    {
        printf("%d 是一个非法输入!\n", n);
        return;
    }
    else if (n < 2)
    {
        printf("%d 不是一个素数!\n", n);
        return;
    }
        
    for (i = 2; i < n; i++)
        if (n % i == 0)
        {
            is_prime = 0;
            break;
        }

    if(is_prime == 1)
        printf("%d 是一个素数!\n", n);
    else
        printf("%d 不是一个素数!\n", n);
}

int main(int argc, char** argv)
{
    int num, is_prime;
    printf("请输入一个整数:");
    scanf("%d", &num);
    prime(num);

    return 0;
}


🎯点赞收藏,防止迷路🔥 


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黛琳ghz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值