cty-ymwx

导航

实验3

实验1

实验代码

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

 回答问题:随机在第line行第col列生成“hi,April"十次。

 

 

 

实验二

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;
	
	p = p * n;
	system("pause");
	return p;
}

 增加后运行截图

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

 运行截图

回答问题:static后的那行代码运行时只读一遍,在计算p2时static后的数值不再进入运算,不会更新数值i和m的值。

 

 

 

实验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.0;
if(n!=1)
    return 2.0*(func(n-1)+1.0)-1;
}

运行截图

 

 

 

 

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

 运行截图

 

 

 

实验5

5.1运行代码

#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);   
	}
	system("pause");
	return 0;
}

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

 运行截图

 

5.2运行代码

#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);   
	}
	system("pause");
	return 0;
}

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

 运行截图

 

 

 

 

实验7

运行代码

#include <stdio.h>
#include<math.h>
int is_prime(int n);
int main()
{
    int m,j,k;
	int count=1;
	printf("%d = %d + %d\n",4,2,2);
	for(m=6;m<20;m=m+2)
	{
        k=m/2;
		for(j=3;j<=k;j=j+2)
			if(is_prime(j)&&is_prime(m-j))
			{printf("%d = %d + %d\n",m,j,m-j);
			count++;
		break;}
	}
	printf("\n");
	system("pause");
	return 0;
}
    
int is_prime(int n)
{int i,k;
    if(n==1)
        return 0;
        k=(int)sqrt(n);
       for(i=2;i<=k;i++)
        if(n%i==0)
        return 0;
		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 j, count = 0;
    long n=0;
    while (s != 0)
    {
        j = s % 10;
        s = s / 10;
        if (j % 2 != 0)
        {
            n += j * pow(10, count);
            count++;
        }
    }
    return n;

}

 运行截图

 

posted on 2023-03-31 22:23  遗梦万象  阅读(15)  评论(0编辑  收藏  举报