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

来源:互联网 发布:云计算判断题 编辑:程序博客网 时间:2024/06/04 19:03

任务和代码:

/**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");        }    }}

运行结果:



知识点总结:

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


心得:

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

阅读全文
0 0
原创粉丝点击