实验4 函数和数组

实验一

不能,因为一元二次方程的根有两个,而函数的返回值无法做到返回两个根的值。

 

实验二

#include<stdio.h>
long long fac(int n)
{
    static long long p=1;
    p=p*n;
    return p;
}
int main()
{
    int i,n;
    
    printf("enter n:");
    scanf("%d",&n);
    
    for(i=1;i<=n;++i)
    printf("%d!=%11d\n",i,fac(i));
    return 0;
}

一致

总结局部static变量特性:静态局部变量,程序执行期间,一旦存储单元中的值改变,就不会再次执行赋初始值的操作。

实验三

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

实验五

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

踩了C11标准的坑。。。。

posted @ 2020-12-03 19:55  潘惪拉貢  阅读(64)  评论(0编辑  收藏  举报