实验三

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

间隔一秒钟打印文本“hi,May”

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!=%11d\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;
}

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

局部在static变量声明处初始化,之后将变量运算的所得值,代替原来变量所被赋予的值进行下一步运算

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=%11d\n",n,f);
    }
    
    return 0;
}
long long fun(int n)
{
    long long k;
    if(n==0)
    return 0;
    else
    k=2*fun(n-1)+1;
    return k;
}

task4

#include<stdio.h>
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate(unsigned int ,char from,char to);
long long fun(int n);
int main()
{
    unsigned int n;
    while(scanf("%u",&n)!=EOF)
    {
        hanoi(n,'A','B','C');
        printf("一共移动了%d次\n",fun(n));
    }
    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);
     hanoi(n-1,temp,from,to);    
    }
}
void moveplate(unsigned int n,char from,char to)
{
    printf("第%u个盘子:%c-->%c\n",n,from,to);
}
long long fun(int n)
{
    long long k;
    if(n==0)
    return 0;
    else
    k=2*fun(n-1)+1;
    return k;  
}

task5

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

task6

#include<stdio.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)
{
    int a[100],i=0,j,k;
    while(s!=0)
    {
        a[i]=s%10;
        s/=10;
        i++;
     } 
     for(j=0;j<=i;j++)
      {
          if(a[i-j-1]%2==1)
        k=k*10+a[i-j-1];
        }
        return k;
}

 

posted @ 2022-04-24 19:53  沈若妍  阅读(37)  评论(1)    收藏  举报