提高篇第2-5课第六题

第一小题:

#include <stdio.h>
#include <stdlib.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=x%10+y*10;
         x=x/10;
     }
     return y;
}

第二小题:

#include <stdio.h>
#include <stdlib.h>
//第六题,第二小题,判断回文数
int reverse(int);
int isPalindrome(int);
int main()
{
    int m;
    scanf("%d", &m);
    if(isPalindrome(m))
        printf("%d是回文数,噢耶!\n", m);
    else
        printf("%d不是回文数。回文有什么好!\n", m);
    return 0;
}
int reverse(int x)   //函数只管求值,不管输出。输出由main函数完成
{
     int y=0;
     while(x!=0)
     {
         y=x%10+y*10;
         x=x/10;
     }
     return y;
}
int isPalindrome(int n)  //在这个函数中只管判断,不能出现printf语句!
{
    int m;
    int r;
    m=reverse(n);
    if(m==n)
        r=1;
    else
        r=0;
    return r;
}

第三题:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第六题,第三小题,判断素数
//int reverse(int);
//int isPalindrome(int);
int isPrimer(int);
int main()
{
    int num;
    scanf("%d",&num);
    if(isPrimer(num))
        printf("%d是素数",num);
    else
        printf("%d不是素数",num);
    return 0;
}

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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//第六题,第四小题
int reverse(int);
int isPalindrome(int);
int isPrimer(int);
int main()
{
    int num,num_anti;
    printf("1000以内的素数如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPrimer(num))
        {
            printf("%d ",num);
        }
    }
    printf("\n");
    printf("1000以内的回文数如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPalindrome(num))
        {
           printf("%d ",num);
        }
    }
    printf("\n");
    printf("1000以内的回文素数如下:\n");
    for(num=1;num<=1000;num++)
    {
        if(isPrimer(num)&&isPalindrome(num))
        {
            printf("%d ",num);
        }
    }
    printf("\n");
    printf("10000以内的可逆素数如下:\n");
    for(num=1;num<=10000;num++)
    {
        num_anti=reverse(num);
        if(isPrimer(num)&&isPrimer(num_anti))
           printf("%d ",num);
    }
    return 0;
}

int isPrimer(int n)  //在这个函数中只管判断,不能出现printf语句!
{
    int i;
    int r=1;
    if(n==1)
        r=1;
    else
    {
        for(i=2;i<=sqrt(n);i++)
        {
            if(n%i==0)
            {
                r=0;
                break;
            }
        }
    }
        return r;
}
int reverse(int x)   //函数只管求值,不管输出。输出由main函数完成
{
     int y=0;
     while(x!=0)
     {
         y=x%10+y*10;
         x=x/10;
     }
     return y;
}
int isPalindrome(int n)  //在这个函数中只管判断,不能出现printf语句!
{
    int m;
    int r;
    m=reverse(n);
    if(m==n)
        r=1;
    else
        r=0;
    return r;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章