C语言提高-第5讲: 函数的参数(回文、素数)

本文探讨C语言中的函数参数,通过实例讲解如何利用函数判断回文和素数。同时,展示了有返回值和无返回值函数的调用,并分享了在判断语句中运用函数表达式的心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务和代码:

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.10
*版本号:v2.
*
*问题描述:编制一个函数reverse,返回给定数据的“反序数”.
*问题输出:例如输入1234,输出4321。请编制reverse函数,实现要求的功能。
*/
#include <stdio.h>
int reverse(int);
int main()
{
    int m,n;
    scanf("%d", &m);
    n=reverse(m);
    printf("%d\n", n);
    return 0;
}
int reverse(int x){   //函数只管求值,不管输出。输出由main函数完成
    int y=0;
    while(x!=0){
            y=y*10+x%10;    //m进一位并加上余数
            x/=10;
    }
    return y;
}

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.10
*版本号:v2.
*
*问题描述:编制isPalindrome(),用于判断参数是否是回文数——回文数
*问题输出:如1221和121都是回文数,而1231、123都不是回文数。isPalindrome()函数的返回值是int型,是回文返回1(真),不是回文,返回0(假)
*/
#include<stdio.h>
int isPalindrome(int);
int reverse(int);
int main()
{
    int m;
    scanf("%d", &m);
    if(isPalindrome(m))
        printf("%d是回文数,噢耶!\n", m);
    else
        printf("%d不是回文数。回文有什么好!\n", m);
    return 0;
}
int isPalindrome(int n){ //在这个函数中只管判断,不能出现printf语句!
    int l;
    l=reverse(n);
    if(l!=n)
        return 0;
}
int reverse(int x){   //函数只管求值,不管输出。输出由main函数完成
    int y=0;
    while(x!=0){
            y=y*10+x%10;    //m进一位并加上余数
            x/=10;
    }
    return y;
}

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.10
*版本号:v2.
*
*问题描述:编制一个返回值为int型的函数isPrimer(),用于判断参数是否为素数
*问题输出:是素数返回1-真,不是素数,返回0-假
*/
#include<stdio.h>
int isPrimer(int);
int main(){
    int m;
    scanf("%d",&m);
    if(isPrimer(m))
        printf("是素数");
    else
        printf("非也");
}

int isPrimer(int n){  //在这个函数中只管判断,不能出现printf语句!
    int t,i;
    t=sqrt(n);
    for(i=2;i<=t;i++){
        if(n%i==0)
            return 0;
    }
}

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.10
*版本号:v2.
*
*问题描述:编制main函数,调用上面定义的3个函数
*问题输出:输出1000以内的所有素数。
           输出1000以内的所有回文数。
           输出1000以内的所有回文素数。
           输出10000以内的所有可逆素数。
*/
#include <stdio.h>
#include <math.h>
int isPrimer(int);
int isPalindrome(int);
int reverse(int);
void printPrime();
void printPalindrome();
void printPrimeAndPalindrome();
void printReversiblePrime();

int main(){
    printf("1000以内的所有素数: \n");
    printPrime();
    printf("\n\n");
    printf("1000以内的所有回文数: \n");
    printPalindrome();
    printf("\n\n");
    printf("1000以内的所有回文素数: \n");
    printPrimeAndPalindrome();
    printf("\n\n");
    printf("1000以内的所有可逆素数: \n");
    printReversiblePrime();
    printf("\n\n");
}

int isPrimer(int n){  //判断是否为素数
    int t,i;
    t=sqrt(n);
    for(i=2;i<=t;i++){
        if(n%i==0)
            return 0;
    }
}

int isPalindrome(int n){ //判断是否为回文数
    int l;
    l=reverse(n);
    if(l!=n)
        return 0;
}

int reverse(int x){   //判断是否为反序数
    int y=0;
    while(x!=0){
            y=y*10+x%10;
            x/=10;
    }
    return y;
}

void printPrime(){     //输出1000以内的所有素数
    int i,n=0;
    for(i=2;i<=1000;i++){
        if(isPrimer(i)){
            printf("%d\t",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
}

void printPalindrome(){   //输出1000以内的所有回文数
    int i,n=0;
    for(i=1;i<=1000;i++){
        if(isPalindrome(i)){
            printf("%d\t",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
}

void printPrimeAndPalindrome(){  //输出1000以内的所有回文素数
    int i,n=0;
    for(i=2;i<=1000;i++){
        if(isPrimer(i)&&isPalindrome(i)){
            printf("%d\t",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
}

void printReversiblePrime(){    //输出10000以内的所有可逆素数
    int i,n=0;
    for(i=2;i<=1000;i++){
        if(isPrimer(i)&&isPrimer(reverse(i))){
            printf("%d\t",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
}

运行结果:



知识点总结:

        有返回值和没有返回值两种函数的调用


心得:

        在判断语句中,也可以使用函数表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值