zoukankan      html  css  js  c++  java
  • 实验4 函数和数组

    1.实验任务1

    这个应用中,一元二次方程的根不能设计成以函数返回值的方式返回给主调函数。

    2.实验任务2

    // 利用局部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
    ", i, fac(i)); 
        
        return 0;
    }
    
    // 函数定义 
    long long fac(int n) {
        static long long p = 1;
        printf("p = %lld
    ", 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
    ",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

    //寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组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=2;
            for(i=2;i<j;i++)
                if(j%i==0) {  
                   flag=0;
                   break;
            }
            if(flag!=0) 
               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.实验任务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, f);
        }
        
        return 0;
    }
    
    long long fun(int n){
        long long k;
        if(n==0){
            k=0;
        }
        if(n==1){
            k=1;
        }
        if(n>=2){
            k=2*fun(n-1)+1;
        }
        return k;
    }

    5.实验任务5

    #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("
    ");
        }
        
        return 0;
    } 
    
    void draw(int n,char symbol){
        int i,k,t;
        for(i=1;i<=n;i++){
            for(k=1;k<=n-i;k++){
                printf(" ");
            }
            for(t=1;t<=2*i-1;t++){
                printf("%c",symbol);
            }printf("
    ");
            }
        }

  • 相关阅读:
    Bzoj4627 [BeiJing2016]回转寿司
    Bzoj1901 Zju2112 Dynamic Rankings
    COGS728. [网络流24题] 最小路径覆盖问题
    Bzoj4568 [Scoi2016]幸运数字
    Bzoj2728 [HNOI2012]与非
    HDU4609 3-idiots
    Bzoj2194 快速傅立叶之二
    Bzoj2179 FFT快速傅立叶
    模拟52 题解
    模拟51 题解
  • 原文地址:https://www.cnblogs.com/qiansen/p/14054944.html
Copyright © 2011-2022 走看看