• 实验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("
    ");
            }
        }

  • 相关阅读:
    从头梳理一下经常问到的 “零拷贝” 问题!
    Redis缓存使用中的热key问题
    使用Redis,你必须知道的21个注意要点
    一文理解 Redis 的核心原理与技术!
    大厂常问的Redis面试题
    三种不同场景下的 Kubernetes 服务调试方法
    Docker 和 Kubernetes:root 与特权
    DRBD详细解说及配置过程记录
    MySQL 高可用方案-PXC环境部署记录
    MySQL高可用方案
  • 原文地址:https://www.cnblogs.com/qiansen/p/14054944.html
Copyright © 2020-2023  润新知