任务3

发布时间 2023-11-01 20:07:11作者: bunga

task1

 

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 80

void print_text(int line, int col, char text[]);
void print_spaces(int n); 
void print_blank_lines(int n);  

int main() {
    int line, col, i;
    char text[N] = "hi, November~";
    
    srand(time(0));
    
    for(i = 1; i <= 10; ++i) {
        line = rand() % 25;
        col =  rand() % 80;
        print_text(line, col, text);
        Sleep(1000);
    }
    
    return 0; 
}

void print_spaces(int n) {
    int i;
    
    for(i = 1; i <= n; ++i)
        printf(" ");
}

void print_blank_lines(int n) {
    int i;
    
    for(i = 1; i <= n; ++i)
        printf("\n");
 } 

void print_text(int line, int col, char text[]) {
    print_blank_lines(line-1);  
    print_spaces(col-1);        
    printf("%s", text);        
}

task2

 

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

 task3

 

#include <stdio.h>
long long func(int n);

int main(){
    int n;
    long long f;
    
    while(scanf("%d",&n)!=EOF){
        f=func(n);
        printf("n = %d,f = %lld\n",n,f);
    }
    
    return 0;
}
long long func(int n){
    int result;
    if (n==1)
       {result=1;}
    else if(n>1)
       {result=2*func(n-1)+1;}
    return result;
}

 

 

task4

 

迭代

 

#include <stdio.h>
int func(int n,int m);

int main(){
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
        printf("n = %d,m = %d,ans = %d\n",n,m,func(n,m));
        
        return 0;
}
int func(int n,int m)
{
    int up=1,down=1,i,a=n;
    for(i=1;i<=m;++i)
        {up*=a;
         a--;
        down*=i;}
     return up/down;
}
 

 

 

递归

#include <stdio.h>
int func(int n,int m);

int main(){
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
        printf("n = %d,m = %d,ans = %d\n",n,m,func(n,m));
        
        return 0;
}
int func(int n,int m)
{
 int result;
 if(n<m)
 {result=0;}
  else if(m==0||n==1&&m==1)
  {result=1;}
  else
      {
          result=func(n-1,m)+func(n-1,m-1);
      }
  
  return result;
}

task5

 

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate(unsigned int n,char from,char to);
int main()
{
    unsigned int n,i,step;
    scanf("%u",&n);
    hanoi(n,'A','B','C');
    step=pow(2,n)-1;
    printf("一共移动了%d次",step);
}
void hanoi(unsigned int n,char from,char temp,char to)
{
    if(n==1)
     moveplate(n,from,to);
    else
    {
        hanoi(n-1,from,to,temp);
        moveplate(n,from,to);
        hanoi(n-1,temp,from,to);
    }
}
void moveplate(unsigned int n,char from,char to)
{
    printf("%u:%c-->%c\n",n,from,to);
}

 

 

task6

 

#include <stdio.h>
#include <math.h>
long func(long s);
int main()
{
    
    long s,t;
     
    printf("Enter a number:");
    while(scanf("%ld",&s)!=EOF){
        t = func(s);
        printf("new number is : %ld\n\n",t);
        printf("Enter a number:");
    }
    
    return 0;
}
 long func(long s) {
     int n,i=0,result=0;
      while(s!= 0) {
      n=s%10;
       s=s/10;
       if(n%2!=0)
       {
       result = n * pow(10,i) + result;
       ++i;}
       }

     return result;
 }