北航上机试题2010(题目+代码)

https://apriljia.com/2018/07/16/%E5%8C%97%E8%88%AA%E4%B8%8A%E6%9C%BA%E8%AF%95%E9%A2%982010%EF%BC%88%E9%A2%98%E7%9B%AE%E4%BB%A3%E7%A0%81%EF%BC%89/

1.利用泰勒公式求cos(x)=1-x2/2!+x4/4!-……公式已给,重要的是注意细节,比如阶乘的存储最好用double型。


#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std;
double jiecheng(double x){
	double re=1;
	for(double i=x;i>1;i--)
		re*=i;
	return re;
}
int main(int argc, char* argv[])
{
	double x;
	double i,j;
	double mycos=1;
	scanf("%lf",&x);
	for(i=1;i<4;i++){
		mycos+=pow(-1,i)*pow(x,2*i)/jiecheng(2*i);
	}
	cout<<cos(x)<<endl<<mycos<<endl;
	return 0;
}


2.归并两个有序字符串,要求输出不能有重复字符(其实就是merge函数啦)
#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std;


int main(int argc, char* argv[])
{

	char str1[100],str2[100],str3[200];
	int i=0,j=0,k=0;
	
	gets(str1);
	gets(str2);

	for(i=0,j=0;i<strlen(str1)&&j<strlen(str2);){
		if(str1[i]>str2[j]){
			str3[k++]=str2[j++];
		}

		else if(str1[i]<str2[j]){
			str3[k++]=str1[i++];
		}
		else{
			str3[k++]=str1[i];
			i++;j++;
		}
	}
	while(i<strlen(str1)) str3[k++]=str1[i++];
	while(j<strlen(str2)) str3[k++]=str2[j++];
	str3[k]=0;
	cout<<str3;
	return 0;
}



3.两个整数数组(无序,可有重复元素),判断两个整数数组是否完全相同(重复元素的话,重复次数也要相同)

#include "stdafx.h"
#include <iostream>
#include <string>
#include "math.h"
#include "stdio.h"
#include "string.h"
#include "ctype.h"
#include <vector>
#include <queue>
#include <map>
#include <algorithm>

using namespace std;

void mysort(int *arr,int n){
	int min=0,i,j,tmp;
	for(i=1;i<n;i++){
		min=i-1;
		for(j=i;j<n;j++){
			if(arr[min]>arr[j]) min=j;
		}
		tmp=arr[min];
		arr[min]=arr[i-1];
		arr[i-1]=tmp;
	}

}
int main(int argc, char* argv[])
{

	int n,flag=0;;
	int i,j;
	int *arr1,*arr2;
	scanf("%d",&n);

	arr1=(int*)malloc(n*sizeof(int));
	arr2=(int*)malloc(n*sizeof(int));

	for(i=0;i<n;i++){
		scanf("%d",arr1+i);
	}

	for(i=0;i<n;i++){
		scanf("%d",arr2+i);
	}

	mysort(arr1,n);
	mysort(arr2,n);

	for(i=0;i<n;i++){
		if(arr1[i]!=arr2[i]) {
			flag=1;
			cout<<"no";
			break;
		}
	}
	if(!flag) cout<<"yes";


	return 0;
}

猜你喜欢

转载自blog.csdn.net/mingzhiqing/article/details/81063108
今日推荐