吉大学硕复试-2017年

回忆版

1、已知π/4≈1-1/3+1/5-......,表达式为(-1)^(i-1)/(2i-1),求π的近似值,误差小于10^-5

#include<stdio.h>  
#include<math.h>  
#define N 100
int main(){
	double PIvalue();
	double PI = PIvalue();
	printf("π的值近似为:%f\n",PI);
    return 0;
}
double PIvalue(){
	double Pi = 0;
	int i=1;
	double item=1;
	while(fabs(item)>1e-5){//误差小于10^-5
		if(i%2!=0)
			Pi += item;
		else 
			Pi -= item;
		i++;
		item = 1 / (double)(2 * i - 1);
	}
	return Pi*4;
}

当把while循环条件改成>1e-7,即误差小于10^7,结果肥肠接近π值:

2、一个序列,有素数和非素数,要求排序,使所有素数位于非素数之前,相对位置不变。

注意:函数返回数组,要用到指针

#include<stdio.h>  
#include<stdbool.h>
#include <time.h>
#define N 15
int main(){
	int* sort(int A[]);
	bool isPrime(int x);
	int A[N],i;
	srand(time(NULL));//种子,若不添加,再次运行的随机数不变 
	for(i=0;i<N;i++){
		A[i] = rand()%10+1;//随机生成1-10的数
		printf("%d\t",A[i]); 
	}
	int *B=sort(A);
	printf("\n排序后为:\n");
	for(i=0;i<N;i++){//将新的顺序赋给数组A 
		A[i] = B[i];
		printf("%d\t",A[i]); 
	}
		
	
	
    return 0;
}
/*按题要求排序排序*/
int* sort(int A[]){
	int *B=(int *)malloc(sizeof(int)*N);;
	int i,j;
	int is_prime=0,not_prime=0;
	for(i=0;i<N;i++){
		if(isPrime(A[i])){
			for(j=not_prime;j>=is_prime;j--)
				B[j] = B[j-1];
			B[is_prime] = A[i];
			not_prime++;
			is_prime++;
		}else{
			B[not_prime] = A[i];
			not_prime++;
		}
	}
	return B;
}
/*判断x是否为素数,是返回true,不是返回false*/
bool isPrime(int x){
	int i;
	bool is_prime=true;
	for(i=2;i<=sqrt(x);i++)
		if(x%i == 0){
			is_prime = false;
			break;
		}
	return is_prime;
} 


 

3、编写完整的函数,输入正整数N和D,如果N/D为无限循环小数,输出时小数点后面的第一个循环节用括号括起来,不显示后面的循环;不为循环小数则正常显示。(25分)

 

例如:3/4=0.75;5/6=0.8(3);10/3=3.(3)

答案:

http://mp.blog.csdn.net/postedit/79463648

4、有N个正方形,边长对应斐波那契值,将这些正方形拼成一个长方形,求长和宽以及每个正方形左下角点坐标

思路:题目是这个意思:

 

 

左下角点坐标分别为:(坐标系建立不唯一,故点坐标不唯一,但长方形的长宽是唯一的)(a为边长长度,也是斐波那契数列:1,1,2,3,5,8,13,21,34....)

第1个正方形:a=1(0,1)长方形的长:1宽:1

第2个正方形:a=1(1,1)长方形的长:2宽:1

第3个正方形:a=2(0,3)长方形的长:3宽:2

第4个正方形:a=3(2,3)长方形的长:5宽:3

第5个正方形:a=5(0,8)长方形的长:8宽:5

第6个正方形:a=8(5,8)长方形的长:13宽:8

第7个正方形:a=13(0,21)长方形的长:21宽:13

第8个正方形:a=21(13,21)长方形的长:34宽:21

规律应该很容易看出来了,

长宽:各自构成了斐波那契数列,长是从第二位开始

 

点坐标:第i个正方形,若i是奇数,则x=0,y=长;若i是偶数,则x=上一个正方形构成的宽,y=上一个的长

由此,可以建立四位数组:Fibonacci[N][4],第一位存宽,其余均可有宽推出

#include<stdio.h>  
int main(){
	void fibonacci(int n);
	int n;
	printf("请输入正方形个数:"); 
	scanf("%d",&n);
	fibonacci(n);
    return 0;
}
void fibonacci(int n){
	int Fibonacci[n][4];//第一位宽,第二位长,第三位x,第四位y 
	int i;
	/**初始化**/ 
	Fibonacci[0][0] = 1;
	Fibonacci[1][0] = 1;
	Fibonacci[0][1] = 1;
	Fibonacci[1][1] = 2;
	Fibonacci[0][2] = 0;
	Fibonacci[1][2] = 1;
	Fibonacci[0][3] = 1;
	Fibonacci[1][3] = 1;
	/**依次按规律赋值**/
	for(i=2;i<n;i++){
		Fibonacci[i][0] = Fibonacci[i-1][0] + Fibonacci[i-2][0];
		Fibonacci[i][1] = Fibonacci[i-1][1] + Fibonacci[i-2][1];//长宽都是斐波那契数列,第i位等于第i-1,i-1位之和 
		if(i%2==0){
			Fibonacci[i][2] = 0;//x=0 
			Fibonacci[i][3] = Fibonacci[i][1];//y=长 
		}else{
			Fibonacci[i][2] = Fibonacci[i-1][0];//x=上一个宽 
			Fibonacci[i][3] = Fibonacci[i-1][1];//y=上一个长 
		}
	}
	printf("%d个正方形构成的长方形的长为:%d,宽为:%d,\n这些正方形左下角的坐标依次为:\n",n,Fibonacci[n-1][1],Fibonacci[n-1][0]);
	for(i = 0;i<n;i++){
		printf("第%d个正方形的左下角坐标为:(%d,%d)\n",i+1,Fibonacci[i][2],Fibonacci[i][3]);
	}
	
}

 

5、用四种颜色给地图着色,要求相邻块颜色不同,图用矩阵存储,求所有着色方案。

 

在另一篇中已写过了:http://blog.csdn.net/qq_21149391/article/details/79507153

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Manigoldo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值