2018年苏州大学计算机研究生复试机试编程题c语言

没有具体的题目,大概是这样的,20000个数存储于二进制文件中,读取出来之后求其中的最大子集,其中两两互相不为倍数,不为约数,最大公约数为1,然后输出到指定文件中。

看得出来,该校常见的题目是,c语言对于文件内容输入输出,辅以字符、数字的处理,常见统计、素数等的操作。

以下是代码

1.首先生成20000个数,据说各个数小于500,且挖去了三个数。

#include
#include
#include
int main()
{
	int* data;
	FILE* fr;
	data=(int*)malloc(sizeof(int)*20000);
	srand(time(NULL));
	for(int i=0;i<20000;i++)
	{
		data[i]=rand()%500+1;
		if(data[i]==3||data[i]==5||data[i]==7)
		{
			i=i-1;
		} 
	}

	
	fr=fopen("input.dat","wb");
	fwrite(data,sizeof(int),20000,fr);
	free(data);
	fclose(fr);
	
	return 0;
} 

 

 

2.对文件进行读取、处理,写入

#include
#include
#include
#include
#define N 20000
int result[N];
void maopao(int* a,int b)
{
	int temp;
	for(int i=0;ia[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
}
int is_prime(int n)
{
	int i ;
	if(n < 2)
	{
		return 0;
	}
	for(i = 2; i * i <= n; i++)
	{
		if(n % i == 0)
		{
			return 0;		}
	}
	return 1;
}
int gcd(int a,int b)
{
	if(a%b==0)
		return b;
	else
		return gcd(b,a%b);
}
int  shaixuan(int* data,int n,int* result)
{
	int result_count=0;
	for(int i=0;i

主要写了几个函数:筛选数字,判断最小公倍数,判断素数以及冒泡

3.以下是结果

 

2018年苏州大学计算机研究生复试机试编程题c语言_第1张图片

 

txt文件中

你可能感兴趣的:(C//C++)