第四次实验

一、

不可以。一元二次方程的根有两个,而每个函数只有一个返回值,函数不能有两个返回值,所以不能。

二、

源代码

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

#include<stdio.h>
long long fac(int n);  //函数声明

int main()
{
    int i,n;
    
    printf("Enter n:\n");
    scanf("%d",&n);
    
    for(i=1;i<=n;++i)
       printf("%d! = %11d\n",i,fac(i));
       return 0; 
 } 
 
 //函数定义
 long long fac(int n)
 {
     static long long p=1; 
     p=p*n;
    return p; 
  }

加入一行后

 理论分析p1=8,p2=17

因为再次进入函数时用上次结果运行,且退出时变量始终存在,不能被占有。

实际与理论一致

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

# 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 = %1ld\n",n,f);
    }
    return 0;
}
long long fun(int n){
    long long x;
    if(n==0)
    x=1;
    else
    x=2*(fun(n-1)+1);
    x=x-1;
    return x;     
}

#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 line,col;
    for(line=1;line<=n;line++)
     {
       for(col=1;col<=n-line;col++)
          printf("%c",' ');
       for(int j=1;j<=line*2-1;j++)
          printf("%c",symbol);
          printf("\n");
     }
}

posted @ 2020-12-07 20:19  一时春生  阅读(63)  评论(3)    收藏  举报