实验3

实验1

 

功能:在屏幕上随机位置打印 hi ,April~

// hi april~


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

# define N 80

void print_text(int line,int col,char test[]);
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; //25=(24-0+1)+0  0~24
		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);
}

  

 

实验2

 

#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;//n 就是   i 
    
 	return p;
 	
 }

  

实验2-2

 

#include<stdio.h>

int func(int a ,int b);

int main() {
	int k=4,m=1,p1,p2;
	
	p1 = func(k,m);
	p2 = func(k,m);
	
	printf("%d, %d\n",p1,p2);
	

}


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

   	
   	return m;
   	
   }

  

static: 1.赋值只赋一次

           2.使数值不会被外部函数使用

          3.使数据存储方式为静态存储

 

实验3-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){
	long long f=1;
	
	int i;
	for( i = 1;i<=n;i++)
	    f = 2*f;
	    
	f = f-1;

	return f;
}

  

实验4

 

#include <stdio.h>

int func(int m,int n);


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

  

实验5

 

#include<stdio.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",x,y,ans);
    
    }
return 0;
}
double mypow(int x,int y)
{     
    int i;
    double sum = 1.0;
    if(y == 0)
        sum = 1.0;
    else if(y>0)
    {
    for( i = y;i>0;i--)
      {
          sum = sum*x;
      } 
    }
    else
     for( i = y;i<0;i++)
     {
         sum = 1.0/x*sum;
     }
    return sum;

}

#include<stdio.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)
{     
	if(y == 0)
	    return 1;
    else if(y>0)
        return x*pow(x,y-1);
    else
        return 1.0 / x * mypow(x, y + 1);
}

  

实验6

#include<stdio.h>

void hanoi(int n,char a,char b,char c);
void moveplate(int n,char a,char c);
int i;//整个源文件都可以用 
int main(){
	char a = 'A',b = 'B',c = 'C';
	int n;
	while(scanf("%d",&n) != EOF)
	{
		i =0;
		hanoi(n,a,b,c);
		printf("一共移动了%d次\n",i);
	}
    
	return 0;
}


void hanoi(int n,char a,char b,char c){
	
	if(n == 1)
	   moveplate(1,a,c);
	
	else
	  {
	  hanoi(n-1,a,c,b);
	  moveplate(n,a,c);
	  hanoi(n-1,b,a,c);}
	
}


void moveplate(int n,char a,char c)
     {
     	
     	
     	printf("%d:%c ---> %c\n",n,a,c);
     	i++;
	 }

  

 

实验7

#include<stdio.h>

int is_prime(int i) ;

int main(){
	int n,j;
	for(n=4;n<=20;n++)
	    {
	    	if(n%2 == 0)
	    	{
	    	 
	    	 for(j=2;j<=(n-j);j++)
	    		{
	    		
					if(is_prime(j)&&is_prime(n-j) ==0)
					    continue;
	    			printf("%d = %d + %d\n",n,j,n-j);
	    		    break;
			}
	    		
			}
	    	
	}
	return 0;
}

int is_prime(int i){
    int count = 2;
    
    for(count=2;count<=i/2;count++)
       {
       	  if (i%count == 0)
       	       return 0;
       	       break;
	   }

    return 1;

}

  实验8

#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 number is:%ld\n\n", t);
		printf("Enter a number: ");
		
		
		
	}
	
	return 0;
}


long func(long s){
	int part,t=0; 
	do{
	
	part=s%10;
	s/=10;
	
	if(part%2)
	{
		t = t*10 +part;
	}
   }while(s!=0);
	int m,n=0;
	while(t!=0)
	{
		m=t%10;
		n = n*10+m;
		t=t/10;
		
	}
	
	return n;
}

  

 总结1,scanf(.........,&x)别少了&

       2. int x 为全局变量时可以,可以用于计算自定义函数运行次数

      3.

                                if(is_prime(j)&&is_prime(n-j) ==0)
					    continue;
	    			printf("%d = %d + %d\n",n,j,n-j);
	    		       break;

 

posted @ 2023-04-03 14:07  mamammmm  阅读(22)  评论(0编辑  收藏  举报