任务3

发布时间 2023-11-01 21:02:40作者: 朱孟晗

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

  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 i, j, k, down1=1, down2=1, up=1, ans;
	for(i=1;i<=n;++i)
	up*=i;
	for(j=1;j<=m;++j) 
	down1*=j;
	for(k=1;k<=(n-m);++k)
	down2*=k;
	ans=up/(down1 *down2);
	
	return ans;
}

  

task.5

#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;
    while(scanf("%u",&n) != EOF){
    hanoi(n,'A','B','C');
    step = 0;
    for(i=1;i<=n;++i)
    step=2*step +1;
    printf("一共移动了%d次\n", step);}
    system("pause");
    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);
}

task.6

#include <stdio.h>
#include <math.h>
long func(long s);

int main(){
    
    long s, t;
    
    printf("Enter a nuber: ");
    while (scanf("%ld", &s) != EOF){
        t = func(s);
        printf("new nuber is: %ld\n\n", t);
        printf("Enter a nuber: ");
    }
    
    return 0;
}
long func(long s){
    int sum, t;
    do{
    if(s%2!=0){
    t=s%10;
    sum = 10 * sum+t;
    }
    s/=10;
    }while(s>=10);

    return sum;
}