实验三

1,

 与预期结果一样

static的作用就是给一个变量赋一个初始值,在第二次执行到该语句时,不会再次给变量赋值

 

 

 2,

void printSymbol(int n,char symbol)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%c",symbol);
    }
    return;
}

 

 

3,

void printSymbol(int n,char symbol)
{
    if(n==1)
    {
        printf("%c",symbol);
        return ;
    }
    else
    {
        printf("%c",symbol);
        printSymbol(n-1,symbol);
    }

    
}

 

我认为迭代更好,问题越简单,就要用简单的方法,当问题变复杂的时候,递归的效果才能更好

 

 

4,

#include<stdio.h>
#include<math.h>
int isPrime(int n);
int main()
{
    int a,b,i,x=0;
    printf("请输入判定范围:"); 
    scanf("%d %d",&a,&b);
    for(i=a;i<=b;i++)
    {
        if(isPrime(i)==1)
        continue;
        else
        {
        printf("%d ",i);
        x++;
        }
        if(x%10==0)
        printf("\n");
    }
    printf("\n%d~%d之间一共有%d个非素数",a,b,x);
    return 0;
}

int isPrime(int n)
{
    int  i;
    for(i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
        break;
    }
    if(i>sqrt(n))
    return 1;
    else
    return 0;
}

 

 

 

5,

#include <stdio.h> 
#include<math.h>
long fun(long s); // 函数声明 
int main() 
{
    long s, t; 
    printf("Enter a number: "); 
    while (scanf("%ld", &s) != EOF) 
    {
        t = fun(s); // 函数调用 
        printf("new number is: %ld\n\n", t); 
        printf("Enter a number: "); 
    }
    return 0; 
}

long fun(long s)
{
    long t=0;
    int a,x1,x2,i,e=1,w[e];
    for(a=0;;a++)
    {
        if(s/pow(10,a)==0)
        break; 
    }
    for(i=1;i<a;i++)
    {
        x1=pow(10,i);
        x2=pow(10,i-1);        
        if((s%x1)/x2%2==0)
        continue;
        else
        {
            w[e]=(s%x1)/x2;
            e++;
        }
    }
    for(i=1;i<e;i++)
    t+=w[i]*pow(10,i-1);
    return t;
}

 

 

 

6,

#include <stdio.h> 
#include<math.h>
double fun(int n); // 函数声明 
int main() 
{
    int n; 
    double s; 
    printf("Enter n(1~10): "); 
    while (scanf("%d", &n) != EOF) 
    {
        s = fun(n); // 函数调用 
        printf("n=%d,s=%f\n\n",n,s); 
        printf("Enter n(1~10): "); 
    }
    return 0; 
}

double fun(int n)
{
    int i,t=1;
    double b,a[i];
    for(i=0;i<n;i++)
    {
        t=t*(i+1);
        a[i]=1.0/t*pow(-1,i);
    }
    for(i=0;i<n;i++)
    {
        b+=a[i];
    }
    return b;
}

 

 

posted @ 2021-11-24 20:53  483石泰宁  阅读(22)  评论(2编辑  收藏  举报