实验3

实验任务1

 

 #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;
     
 }
 //static作用于p,使得p变量转化为静态变量,会随p=p*n而改变,而不是每次重新赋值为1 

 

 

 #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;
     printf("p=%11d\n",p);
     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);
}
//8,17

     

 

                                   static作用于p,使得p变量转化为静态变量,会随p=p*n而改变,而不是每次重新赋值为1 

 

实验任务2

 

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

return 0;
}

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

 

 

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

return 0;
}

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

 

    两种方法各有千秋,对于不同问题方法的难易程度不同,对于本题,迭代跟简单一点

 

实验任务3

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

 

 

实验任务4

 #include<stdio.h>
 #include<math.h>
 int isprime(int);
 
 int main(){
     int i,n,m;
     m=0;
     for(i=101;i<=200;i++){
      n=isprime(i);

        if(n==0){
         printf("%4d",i);
         m++;}
     }
     printf("\n");
     printf("有%d",m);
     return 0;
 }
 
int isprime(int i)
 { 
   int k;
   k=sqrt(i);
   for(int j=2;j<=k;j++)
   {
       if(i%j==0)
       return 0;
    else if(j>k)
    return 1;
   }
 }

 

 

实验任务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 sum;
     int k;
     int n=0; 
   while(s!=0){
       k=s%10;
       s=s/10;
       if(k%2!=0)
       {n++;
       sum=k*pow(10,n-1)+sum;
       }
   }
    return sum;
    
}

 

 

实验任务6

#include <stdio.h>
double fun(int n);

int main()
{
   int n;
   double s;
   
   printf("ENTER(1-10): ");
   while(scanf("%d",&n)!=EOF)
   {
       s=fun(n);
       printf("n=%d,s=%f\n\n",n,s);
       printf("ENTER(1-10): ");
   }
   return 0;
}

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

 

posted @ 2021-11-25 19:21  杨程旭  阅读(12)  评论(0编辑  收藏  举报