实验三


task 1;

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

 功能:随机打印一串字符。

task 2_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;
    printf("p = %lld\n", p);
    p = p * n;

    return p;
}

 

task 2_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;
}

  

 

 

task 3:

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

task 4:

#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 ans;
	if(n==m||m==0){
		return 1;
	}
	else if(n<m){
		return 0;
	}
	else{
		return func(n-1,m-1) + func(n-1,m);
	}
}

task 5_1:

#include <stdio.h>
double mypow(int n, int m);
int main(){
	int x, y;
	double ans;
	while(scanf("%d%d", &x, &y) != EOF){
		if(y>=0){
			ans = mypow(x,y);
		    printf("%d的%d次方:%g\n\n", x, y, ans);
		}
		else{
			y = -y;
			ans = 1.0/mypow(x, y);
		    printf("%d的-%d次方:%g\n\n", x, y, ans);
		}
	}
	return 0;
} 
double mypow(int n, int m){
	if(m==1){
		return n;
	}
	else if(m==0){
		return 0;
	} 
	else{
		return n*mypow(n,m-1);
	}		
}

task 5_2:

#include <stdio.h>
double mypow(int n, int m);
int main(){
	int x, y;
	double ans;
	while(scanf("%d%d", &x, &y) != EOF){
		if(y>=0){
			ans = mypow(x,y);
		    printf("%d的%d次方:%g\n\n", x, y, ans);
		}
		else{
			y = -y;
			ans = 1.0/mypow(x, y);
		    printf("%d的-%d次方:%g\n\n", x, y, ans);
		}
	}
	return 0;
} 
double mypow(int n, int m){
	int i;
	double ans=1.0;
	for(i=1;i<=m;i++){
		ans = ans*n ;
	}
	return ans;
	
}

 

task 6:

#include<stdio.h>

void hanoi(int n,char A,char B,char C);
void move(int n,char A,char B);
static int t=0;

int main(){
    char A,B,C;
    int n;
    while(scanf("%d",&n)!=EOF){
    t=0;
    hanoi(n,'A','B','C');
    printf("一共移动了%d次\n",t);}
    return 0;
}

void move(int n,char A,char C){
    printf("%d:%c-->%c\n",n,A,C);
    t++;
}
void hanoi(int n,char A,char B,char C){
    if(n==1)
    move (n,A,C);
    else{
       hanoi(n-1,A,C,B);
       move(n,A,C);
       hanoi(n-1,B,A,C);
    }
}

 

task 7:

#include<stdio.h>
int is_prime(int x);

int main() {
    int i, n;
    while (scanf("%d", &n) != EOF) {
        for (i = 2; i <= n; i++) {
            if (!is_prime(i) || !is_prime(n - i))continue;
            printf("%d = %d + %d\n", n, i, n - i);
            break;
        }
    }
    return 0;
}

int is_prime(int x) {
    int i;
    for (i = 2; i *i<= x; i++) {
        if (x % i == 0) {
            return 0;}
        else { 
            return 1; }
    }
}

 

task 8:

#include<stdio.h>
int is_prime(int x);

int main() {
    int i, n;
    while (scanf("%d", &n) != EOF) {
        for (i = 2; i <= n; i++) {
            if (!is_prime(i) || !is_prime(n - i))continue;
            printf("%d = %d + %d\n", n, i, n - i);
            break;
        }
    }
    return 0;
}

int is_prime(int x) {
    int i;
    for (i = 2; i *i<= x; i++) {
        if (x % i == 0) {
            return 0;}
        else { 
            return 1; }
    }
}

 

  

 

 

 

  

  

  

 

 

posted @ 2023-04-05 16:49  陈乐~  阅读(15)  评论(0编辑  收藏  举报