实验4

任务一:

一元二次方程的根不能设计成以函数返回值的方式返回给主调函数,因为函数的返回值至多有一个

任务二:

#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>
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变量的特性:再次调用函数时会保留上次函数调用结束时的值

任务三:

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

任务4

#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 s;
    if(n == 0)
        s = 0;
    else{
        s = 2*(fun(n-1) + 1) - 1;
    }
    return s;
}

任务5

#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, x, y, line;
        for(line=1; line<=n; line++){
            x = n - line;
            y = 2*line - 1;
            for(i=1; i<=x; i++) 
                printf(" ");
            for(i=1; i<=y; i++) 
                printf("%c", symbol);
            printf("\n"); 
        }

}

posted @ 2020-11-29 23:29  Xx0  阅读(98)  评论(0编辑  收藏  举报