实验四

#include<math.h>
#include<stdio.h>

void solve(double a,double b,double c);

int main(){
    double a,b,c;
    
    printf("Enter a,b,c:");
    while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){
        solve(a,b,c);
        printf("Enter a,b,c:");
    }
    return 0;
} 

void solve(double a,double b,double c){
    double x1,x2;
    double delta,real,imag;
    
    if(a==0)
        printf("not quadratic equation.\n");
    else{
        delta=b*b-4*a*c;
        
        if(delta>=0){
            x1=(-b+sqrt(delta))/(2*a);
            x2=(-b-sqrt(delta))/(2*a);
            printf("x1=%f,x2=%f\n",x1,x2);
        }
        else{
        real=-b/(2*a);
        imag=sqrt(-delta)/(2*a);
        printf("x1=%f+%fi,x2=%f-%fi\n",real,imag,real,imag);
        }
    }
}

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

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

 

stactic变量为静态变量,当函数再次被调用时,该变量不会被初始化,仍保持上一运算的值。

 

#include<stdio.h>
#define N 1000

int fun(int n,int m,int bb[N]){
    int i,j,k=0,flag;
    
    for(j=n;j<=m;j++){
        /*1*/
        flag=1;
        for(i=2;i<j;i++){
            if(/*2*/j%i==0){
                flag=0;
                break;
            }
        }
            if(/*3*/flag==1){
                bb[k++]=j;
            }
    }
    return k;
}

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(/*4*/n,m,bb);
    
    for(i=0;i<k;i++)
        printf("%4d",bb[i]);
        
    return 0;
} 

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

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

#include<stdio.h>

void draw(int n,char symbol);

int main(){
    int n,symbol;
    
    while(scanf("%d %c",&n,&symbol)!=EOF){
        draw(n,symbol);
        printf("\n");
    }
    return 0;
}

void draw(int n,char symbol){
    int i,j,k;
    for(i=0;i<n;i++){
        for(j=0;j<n-i-1;j++){
            printf(" ");
        }
        for(k=0;k<2*i+1;k++){
            printf("%c",symbol);
        }
        printf("\n");
    }
}

 

 

实验总结:

       理解了递归函数使用的关键是找到n和n-1的关系;

       知道了当数据很长时要用long long定义,如果数据过长的时候要用数组一位一位的输出,但是我还是没有弄清楚一位一位输出是怎么个算法QwQ

posted @ 2020-11-28 10:59  时生与你  阅读(60)  评论(0编辑  收藏  举报