实验四

//ex1
#include <math.h>
#include <stdio.h>
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);
        }    
}
//不能将根设置为函数返回值,函数只能返回一个值(除了指针函数)
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;
}

//ex2.1
#include <stdio.h>
long long fac(int n)
{
    static long long p = 1;       //static使函数被调用完后里面变量的值不被释放
    p = p*n;
    return p;
}
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;
}

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

//ex3
#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++) 
    {
        flag=1;   
        for(i=2;i<j;i++)
        {
            if(j%i==0) 
            {  
               flag=0;
               break;
            }
        }
        if(flag) 
           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(n,m,bb); 
    for(i=0;i<k;i++)
        printf("%4d",bb[i]);
    printf("\n");
    return 0;
}

//ex4
#include <stdio.h>
long fun(int n);   // 函数声明 
int main() {
    int n;
    long f;
    while(scanf("%d", &n) != EOF) {
        f = fun(n);  // 函数调用 
        printf("n = %d, f = %ld\n", n, f);
    }
    return 0;
}

// 函数定义
// 补足。。。 
long fun(int n)
{
    if (n==1)
        return 1;
    else
        return 2*fun(n-1)+1;
}

//ex5
#include <stdio.h>
void draw(int n, char symbol);  // 函数声明 
#include <stdio.h> 
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");
    }
}

posted @ 2020-11-27 18:18  颜嘉震  阅读(89)  评论(1编辑  收藏  举报