实验3

#include<stdio.h>
long long fac(int n);
int main()
{
    int i,n;
    
    printf("Enter n:");
    scanf("%d",&n);
    
    for(i=1;i<=n;++i)
    printf("%d! = %lld\n",i,fac(i));
    
    return 0;
}

long long fac(int n)
{
    static long long p=1;
    
    p=p*n;
    
    return p;
}

 

#include<stdio.h>
long long fac(int n);
int main()
{
    int i,n;
    
    printf("Enter n:");
    scanf("%d",&n);
    
    for(i=1;i<=n;++i)
    printf("%d! = %lld\n",i,fac(i));
    
    return 0;
}

long long fac(int n)
{
    static long long p=1;
    printf("p=%lld\n",p);
    p=p*n;
    
    return p;
}

 static将值设定为静态变量,每次值改变后均存储,下次继续使用

#include<stdio.h>
int func(int,int);
int main()
{
    int k=4,m=1,p1,p2;
    p1=func(k,m);
    p2=func(k,m);
    printf("%d,%d\n",p1,p2);
    
    return 0;
}

int func(int a,int b)
{
    static int m=0,i=2;
    
    i+=m+1;
    m=i+a+b;
    
    return (m);
}

 

#include<stdio.h>
void printSymbol(int n,char symbol);
int main()
{
    int n;
    char symbol;
    
    while(scanf("%d %c",&n,&symbol)!=EOF)
    {
        printSymbol(n,symbol);
        printf("\n");
    }
    return 0;
}

void printSymbol(int n,char symbol)
{
    int i;
    for(i=1;i<=n;i++)
        printf("%c",symbol);
    return ;

}

 

#include<stdio.h>
void printSymbol(int n,char symbol);
int main()
{
    int n;
    char symbol;
    
    while(scanf("%d %c",&n,&symbol)!=EOF)
    {
        printSymbol(n,symbol);
        printf("\n");
    }
    return 0;
}

void printSymbol(int n,char symbol)
{
    if(n==1)
    printf("%c",symbol);

    if(n>1)
    {
        printf("%c",symbol);
        return printSymbol(n-1,symbol);
    }    

}

 结果并不复杂时,迭代更为方便简洁,递归技巧性更强

#include<stdio.h>
long long fun(int n);
int main()
{
    int n;
    long long f;
    
    while(scanf("%d",&n)!=EOF)
    {
        f=fun(n);
        printf("n = %d,f=%lld\n",n,f);
    }
    return 0;
}

long long fun(int n)
{
    long long m;
    if(n==0)
    return 0;
    else if(n==1)
    return 1;
    else if(n>1)
    return 2*(fun(n-1)+1)-1;

}

 

#include<stdio.h>
#include<math.h>
int isPrime(int n);
int main()
{
    int i,m=0;
    for(i=101;i<201;i++)
    {
        if(isPrime(i)==0)
        {
            printf("%4d",i);
            m++;
            if(m%10==0)
        printf("\n");
        }
    
    }
    printf("\n");
    printf("101~200之间一共有%d个非素数\n",m);
    return 0;
    
}


int isPrime(int n)
{
    int p,q;
    q=(int)sqrt((double)n);
    for(p=2;p<=q;p++)
    {
        if(n%p==0)
        break;
    }
    if(p>q)
    return 1;
    else
    return 0;
}

 

#include<stdio.h>
long fun(long s);

int main()
{
    long s,t;
    
    printf("Enter a number:");
    while(scanf("%ld",&s)!=EOF)
    {
        t=fun(s);
        printf("new number is:%ld\n\n",t);
        printf("Enter a number:");
    }
    return 0;
}

long fun(long s)
{
    long m=0;
    long n=0,p=1;
    while(s>0)
    {
        m=s%10;
        if(m%2!=0)
        {
            n = n+m*p;
            p=p*10;
        }
        s=s/10;
    }
    return n;
}

 

#include<stdio.h>
double fun(int n);
int main()
{
    int n;
    double s;
    printf("Enter n(1~10):");
    while(scanf("%d",&n)!=EOF)
    {
        s=fun(n);
        printf("n = %d,s = %f\n\n",n,s);
        printf("Enter n(1~10):");
    }
    return 0;
}

double fun(int n)
{
    int a,b,c;
    double d,f;
    f=0;
    
    for(n;n>0;n--)
    {
        if(n%2==0)
        a=-1;
        else
        a=1;
        c=1;
        for(b=1;b<=n;b++)
        c=c*b;
         d=1.0/c*a;
        f=f+d;     
    } 
    return f;
}

 

posted @ 2021-11-24 23:55  王金梦  阅读(38)  评论(2编辑  收藏  举报