实验3

发布时间 2023-04-06 15:29:53作者: BUYA

 

 

 

 实验任务1 task1.c

#include<stdio.h>
#include<stdlib.h> 
#include<time.h>
#include<windows.h>
#define N 80
void printf_text(int line,int col,char text[]);
void printf_spaces(int n);//函数声明
void printf_blank_lines(int n);//函数声明

int main() {
    int line,col,i;
    char text[N] = "hi,April~";
    
    srand(time(0));//以当前系统时间作为随机种子
    
    for(i = 1;i <= 10;++i){
        line = rand() % 25;
        col = rand() % 80;
        printf_text(line,col,text);
        sleep(1000);//暂停1000ms 
    } 

return 0;
}

//打印n个空格
void printf_spaces(int n){
    int i;
    
    for(i = 1;i <= n;++i)
    printf("");
} 

//打印n行空白行
void printf_blank_lines(int n){
    int i;
    
    for(i = 1;i <= n;++i)
    printf("\n");
} 
//在第line行第col列打印一段文本
void printf_text(int line,int col,char text[]){
    printf_blank_lines(line-1);//打印(line-1)行空行 
    printf_spaces(col-1);//打印(col-1)列空格 
    printf("%s",text);//在第line行,col列输出text中字符串 
} 

 

 实验任务2 task2_1.c

//利用局部static变量的特性,计算阶乘

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

 实验任务2 task2_2.c

//练习:局部static变量特性
#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;
}

 

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

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

int main(){
    int n,m;
    
    while(scanf_s("%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 x;
    x = 0;
    if (n >= m)
    {
        if(m > 1)
        x = func(n - 1,m - 1) + func(n - 1,m);
        else
        {
        if(m == 0)
        x = 1;
        else
        x = n;
            
        }
    }
    else
    x = 0;
    return x;
}

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

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double mypow(int x,int y);

int main() {
    int x,y;
    double ans;
    
    while(scanf("%d%d", &x, &y) != EOF ) {
    
    ans = mypow(x,y);
    printf("%d的%d次方:%g\n\n",x,y,ans);
} 
    system("pause");
    return 0;
    
}

double mypow(int x,int y) {
    if(y == 0)
    return 1;

  
else if(y > 0) {
    return mypow(x,y - 1) * x;
    }
    
   else if(y < 0) {
    return(double)mypow(x, y + 1)/(double)x;
   }
   
}

#include<stdio.h>
#include<stdlib.h>

void hanoi(int n,char from,char to,char temp);
int cishu(int n);


int main()
{
    char A,B,c;
    int n;
    while(scanf("%d",&n) != EOF){
        hanoi(n,'A','C','B');
        printf("一共移动了%d步\n",cishu(n));
        
        system("pause");}
        return 0;
}
    
void hanoi(int n,char from,char to,char temp)
{
    if(n == 1)
    printf("%d:%c--->%c\n",n,from,to);
    else{
        hanoi(n-1,from,temp,to);
        
        printf("%d:%c\n",n,from,to);
        hanoi(n-1,temp,to,from);
    }
}

int cishu(int n)
{
    if(n==1)
    return 1;
    if(n>1)
    return cishu(n-1)+1+cishu(n-1);
    if(n<1)
    return 0;
}

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

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