LDu

导航

 

ex1.cpp

不能,由函数体可知,函数有多个根,而函数只能返回一个值给main函数。

ex2_1.cpp

//利用局部变量static变量计算阶乘

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

 

ex2_2.cpp

//练习:局部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", 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特性:定义的变量只进行一次赋值,例如:上述func函数第一次被调用时,static对变量m和i进行赋值,第一次调用结束,第二次被调用时,m和i不会再次被赋值,而是保留上次函数调用结束时的值。

ex3.cpp

//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。
//例如,输入6和21,则输出为:7 11 13 17 19。

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

 

ex4.cpp

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

 

ex5.cpp

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

 

总结:光有理论知识是远远不够的,没有实操神马都是浮云(这是考试裂开的总结)!!!

posted on 2020-12-04 23:42  LDu  阅读(91)  评论(2)    收藏  举报