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

  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    提高SQL执行效率的16种方法
    Spring Ioc DI 原理
    java内存泄漏
    转:js闭包
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Best Time to Buy and Sell Stock with Cooldown
    LeetCode Length of Longest Fibonacci Subsequence
    LeetCode Divisor Game
    LeetCode Sum of Even Numbers After Queries
  • 原文地址:https://www.cnblogs.com/qiansen/p/14054944.html
Copyright © 2011-2022 走看看