实验 3

实验任务1

task1

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

void printText(int line,int col,char text[]);
void printSpaces(int n);
void printBlankLines(int n);

int main()
{
    int line,col,i;
    char text[N]="hi,May~";
    srand(time(0));
    for(i=1;i<=10;++i)
    {
        line=rand()%25;
        col=rand()%80;
        printText(line,col,text);
        Sleep(1000);
    }
    return 0;
 }
 
 void printSpaces(int n) 
 {
     int i;
     for(i=1;i<=n;++i)
     printf(" ");
 }
 
 void printBlankLines(int n)
 {
     int i;
     for(i=1;i<=n;++i)
     printf("\n");
 }
 
 void printText(int line,int col,char text[])
 {
     printBlankLines(line-1);
     printSpaces(col-1);
     printf("%s",text);
 }

 

 

实验任务2

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

 

task2_2

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

 

 

实验任务3

task3

#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)
 {
     int i;
     long long a;
     for(i=0,a=0;i<n;i++)
     {
         a=2*a+1;
    }
    return a;
 }

 

 

实验任务4

task4

#include <stdio.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;
    int i;
    while(scanf("%u",&n)!=EOF)
    {
        hanoi(n,'A','B','C');
        i=pow(2,n)-1;
        printf("一共移动了%d次。\n\n\n",i);
    }
    return 0;
 } 
 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);
     }
     
 }
 void moveplate(unsigned int n,char from,char to)
 {
     printf("%u:%c-->%c\n",n,from,to);
 }

 

 

实验任务5

task5

#include <stdio.h>
#include <math.h> 
#define N 20
int is_prime(int n);
int main()
{
    int i;
    int num;
    for(num=4;num<=N;num+=2)
    {
        for(i=2;i<=num/2;i++)
        {
            if(is_prime(i)&&is_prime(num-1))
            printf("%d=%d+%d\n",num,i,num-1);
        }
    }
    return 0;
}
int is_prime(int n)
{
    int i;
    if(n==1)return 1;
    for(i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
        return 0;
    }
    return 1;
}

 

 

实验任务6

task6

#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 numbr is:%ld\n\n",t);
        printf("Enter a number:");
    }
    return 0;
 } 
 long fun(long s)
 {
     long n=1;
     int t=0,d;
     while(s>0)
     {
         d=s%10;
         if(d%2!=0)
         {
             t=d*n+t;
             n*=10;
         }
         s/=10;
     }
     return t;
 }

 

posted @ 2022-04-26 13:20  Ares-Snape  阅读(29)  评论(2)    收藏  举报