实验3

发布时间 2023-03-30 21:59:16作者: 邓牧蝶

task1

程序源码

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

void print_text(int line, int col, char text[]);
void print_spaces(int n);
void print_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;
		print_text(line,col,text);
		Sleep(1000);
	}
	return 0;}

void print_spaces(int n){
	int i;

	for(i = 1;i<=n;++i)
		printf(" ");
}

void print_blank_lines(int n){
	int i;

	for(i=1;i<=n;++i)
		printf("\n");
}

void print_text(int line, int col,char text[]){
	print_blank_lines(line-1);
	print_spaces(col-1);
	printf("%s",text);
}

  功能:连续每隔1s随机打印10次行在[0,25)列在[0,80)之间的一串hi,april字符

task2

程序源码

#include <stdio.h>
#include<stdlib.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));
		system("pause");
		return 0;
}


long long fac(int n){
	static long long p = 1;
	printf("p = %lld\n",&p);
	p=p*n;
	return p;

  实验截图

task2.2

程序源码

#include<stdio.h>
#include<stdlib.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);
	system("pause");
	return 0;
}


int func(int a,int b){
	static int m = 0, i=2;

	i+=m+1;
	m=i+a+b;

	return m;

  实验截图

task3

程序源码

int main(){
	int n;
	long long f;

	while (scanf("%d",&n)!=EOF){
		f= func(n);
		printf("n=%d,f=%lld\n",n,f);
	}

	system("pause");
	return 0;
}


long long func(int n){
	int ans;
	if(n==1)
		ans=1;
	else
		ans=func(n-1)*2+1;
	return ans;

}

  实验截图

task4

程序源码

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

  实验截图

task5.1

程序源码

#include<stdio.h>
#include<stdlib.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);
	}
	return 0;
}


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

  实验截图

task5.2

程序源码

#include<stdio.h>
#include<stdlib.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);
	}
	return 0;
}


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

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

  实验截图

task6

程序源码

#include<stdio.h>
#include<stdlib.h>
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate(unsigned int n,char from,char to);
int i=0;
int main()
{
	unsigned int n;
	
	while(scanf("%u",&n)!=EOF)
	{i=0;
		hanoi(n,'A','B','C');
	printf("一共移动了%d次\n",i);}

	
	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)
{
	
	i++;
	printf("%u:%c-->%c\n",n,from,to);
	
}

  实验截图

task7

程序源码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int is_prime(int n);

int main(){
	int z=0,k=1,i=2,p=0,n,flag,flag2;
	while(scanf("%d",&n)!=EOF){
		for(i=2;i<=n;++i){
	flag=is_prime(i);
	if(flag==1)
		{z=n-i;
	flag2=is_prime(z);
	if(flag==1&&flag2==1)
		break;}}
		printf("%d=%d+%d\n",n,i,z);}

	system("pause");
	return 0;
}


int is_prime(int n)
{
	int i=2,a=0;
	for(i;i<n;i++){
		if(n%i==0)
		{
           a++;
		}}
	if(a==0)
		return 1;
	else
		return 0;
}

  实验截图

task8

程序源码

#include <stdio.h>
#include<stdlib.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 number is: %ld\n\n", t);
        printf("Enter a number: ");
    }
	system("pause");
    return 0;
}
long func(long s)
{
   int s1 = 1,d;
   long w = 0;
   while (s > 0)
    {
    d = s % 10;
    if (d % 2 != 0)
        {
            w=s1 * d + w;
            s1*= 10;
        }
        s /= 10;
    }
    return w;
}

  实验截图