实验1

一元二次方程的根不可以设计成函数的返回值返回给主调函数,因为一元二次方程的根可能有两个不同的,而函数的返回值只能是一个。

 

 

实验2

#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>
long long fac(int n);

int main(){
    int i,n;
    
    printf("Enter n: ");
    scanf("%d",&n);
    
    for(i=1;i<=n;++i){
        printf("\n%d!=%lld\n",i,fac(i));
    }
    
    return 0;
} 

long long fac(int n){
    static long long p=1;
    
    printf("%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\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变量将保留上一次的运行结果

 

 

实验3

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

 

 

实验5

#include <stdio.h>

void draw(int n,char symbol);

#include <stdio.h> 
int main() {
    int n;
    char symbol;
    
    while(scanf("%d %c", &n, &symbol) != EOF) {
        draw(n, symbol);
        printf("\n");
    }
    
    return 0;
} 


void draw(int n,char symbol){
    int line,i,t;
    for(line=1;line<=n;line++){
        for(i=1;i<=n-line;i++){
            printf(" ");
        }
        for(t=1;t<=2*line-1;t++){
            printf("%c",symbol);
        }
        
        printf("\n");
    }
} 

 

 

实验总结:本次实验重点在函数的定义、声明和调用,就不用再相同的操作将代码复制粘贴一遍了,也会使代码更加简洁明了。

                  这次实验中我踩了不少坑,关于数组的操作中fun=(m,n,bb)我将bb打成了bb[N],尝试过不对后又改成bb[i],都显示错误,最后询问了同学才知道应该是bb,这里应该是数组而不是数字。而实验4中也可以函数定义中用2^n,最后运用+1-1的操作,就不需要再找f(n)和f(n+1)的关系。

posted on 2020-11-29 20:27  魏梦如  阅读(122)  评论(0编辑  收藏  举报