实验4

1,实验任务1

#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 f;
    if(n==0)
        f=0;
    if(n>0&&n<33)
        f=2*fun(n-1)+1;
    return f;
}

 

 

 2.实验任务2

 

 

 

#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;
    
    
}

 

 

#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);
}

 

 

 答:程序运行结果与理论分析一致。

总结:使用关键字static时,后面的变量只能在本函数内使用,但在外部,变量也存在,但不能被使用。当再次进入该函数时,保存上次的结果。

3.实验任务3

#include<stdio.h>
#include<stdlib.h>
#define N 1000
int fun(int n,int m,int bb[N]);
int main(){
    int n=0,m=0,i,k,bb[N];
    
    scanf("%d",&n);
    scanf("%d",&m);
    
    for(i=0;i<m-n;i++)
        bb[i]=0;
    
    k=fun(n,m,bb);
    
    for(i=0;i<k;i++)
        printf("%4d",bb[i]);
        
return 0;
}
int fun(int n,int m,int bb[N]){
    int i,j,k=0,flag;
    
    for(j=n;j<=m;j++){
        flag=1;
        for(i=2;i<j;i++)
            if(j%i==0){
                flag=0;
                break;
            }
            if(flag==1)
                bb[k++]=j;
    }
    return k;
}

 

 

 4。实验任务4

 

 5.实验总

#include<stdio.h>
void dec2n(int x,int n);

int main(){
    int x;
    
    printf("输入一个十进制整数:");
    scanf("%d",&x);
    
    dec2n(x,2);
    dec2n(x,8);
    dec2n(x,16);
    
    return 0; 
}
void dec2n(int x,int n){
    int a[1000],i;
    
    
    for(i=0;x!=0;i++){
        a[i]=x%n;
        x=x/n;
    }
    
    for(i=i-1;i>=0;i--){
        if(a[i]>9){
        switch(a[i]){
            case 10:printf("A"); break;
            case 11:printf("B"); break;
            case 12:printf("C"); break;
            case 13:printf("D"); break;
            case 14:printf("E"); break;
            case 15:printf("F"); break;
        }  
    }
        else
        printf("%d",a[i]);
        
    }
    printf("\n");
}

 

 

5.总结:

(1)知道递归函数使用的规则,以及static关键字的应用规则。

(2)明确了数组在C中使用的广泛以及多种应用

(3)尚未知道数组保存高精度计算该怎么进行,求解答。

posted @ 2021-04-29 22:57  LihahaLi  阅读(35)  评论(0编辑  收藏  举报