【SeedCoder 2015年热身】写在最前面的话

本文介绍了2015年SeedCoder比赛形式的变化,决赛采用onlinejudge系统进行,使得评分更加客观。文章以判断整数是否为质数为例,详细解释了如何使用示例代码,并提供了编程规范建议和示例模板。读者可以了解如何在Visual Studio 2013环境下编写代码,使用input.txt和output.txt文件进行输入输出操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          2015年SeedCoder比赛形式与往年不太一样,决赛采用online judge放题和计分,这样使评分更加客观。

         考虑到大多数同学不太熟悉oj 系统,有需要的同学可以参考一下关于浙江大学onlinejudge 的介绍,网址http://acm.zju.edu.cn/onlinejudge/faq.do

 

下面以判断一个整数是否为质数为例,给大家讲解一下怎样使用示例代码。

【问题】

判断一个整数n是否为质数。

【输入】

输入由一系列的整数构成,每一个整数以Tab键隔开

【输出】

如果n为质数,则输出为true,否则为false;结果以Tab键隔开,每隔5个值换行。

【示例输入】

5             14          

【示例输出】

true        false


【示例代码】

//--------------------------------------【程序说明】-------------------------------------------
//		程序说明:是否为质数
//		程序描述:
//		IDE版本:Visual Studio 2013
//		作者:Arthur Lee
//------------------------------------------------------------------------------------------------  

#include <fstream>//包含输入文件流ifstream,输出文件流ofstream
#include <ctime>//包含clock()函数
#include <cmath>

using namespace std;//

#define TIMER
//函数声明
bool IsPrime(int n);

int main(){
#ifdef TIMER
	clock_t start = clock();//单位为ms。
#endif // TIMER

	ifstream fin("in.txt");
	if (fin.fail())
		return 1;
	ofstream fout("out.txt");

	int test;
	while (!fin.eof())//文件未读完时一直执行
	{
		fin >> test;
		if (IsPrime(test))
			fout << test << "\t" << "is a Prime" << "\n";
		else
			fout << test << "\t" << "is not a Prime" << "\n";
	}

#ifdef TIMER
	clock_t end = clock();
	double duration = (double)(end - start);
	fout << "runtime : " << duration << "ms" << endl;
#endif // TIMER
	fout.close();
	return 0;
}

//函数实现
//n为质数时,返回true
bool IsPrime(int n){
	//这里未对n<=0 做判断处理
	if (n == 1)
		return false;
	
	int i = 2;
	for (; i <= (int)sqrt(n); ++i)
	{
		if (n%i == 0)
			break;
	}

	if (i <= (int)sqrt(n))
		return false;
	else
		return true;
}


这里有几点需要提醒一下大家:

1.     示例代码没有完全按照题目要求格式输出,你们可以对输出格式进行修改以达到题目的要求。

2.     热身练习题没有oj系统提供输入和输出检测。因此我们只能在源文件的根目录新建in.txt输入样例,和新建out.txt输出结果,再对结果进行判断。

3.     示例代码中包含了TIMER宏,这主要是为了之后方便比较不同算法的性能,不需要的话可以直接注释#defineTIMER,不会对逻辑产生任何影响。

4.    编程规范问题,请大家按照示例样例的格式,进行书写代码必须包含文件注释,其中程序说明栏写上题目,编程平台栏写上开发环境,作者写上组员姓名。

5.     另外,示例代码有些风格问题,可能还存在一些小错误,时间可能非最优,还请大家海量。如果你有更好的解决方案,可以联系我(arthur_lee_92@hotmail.com)。更重要的希望这些热身题能对你们有些帮助,能产生一些价值。


接下来简要介绍一下如何使用提供的示例:

1.     打开Visual Studio 2013, [File]   →   [New]   →    [Project]    →   [Visual C++ Empty Project],在弹出对话框内写上项目名字。(小组名或姓名+题目)



2.     [Project]   →   [Add New Item],在弹出对话框中选择Visual C++ cpp文件。重复以上操作,添加in.txt和out.txt文件。



3.     将示例代码复制到Source.cpp文件中,输入示例复制到in.txt中(或按照题目要求自定义输入),按下F5。out.txt便会生成输出,可以点击查看。


最后的最后附上一份示例模板,你们可以直接在上面修改,避免重复劳动。

示例模板:

//--------------------------------------【程序说明】-------------------------------------------
//		程序说明:
//		程序描述:
//		IDE版本:Visual Studio 2013
//		作者:[成员名字,或小组名字]
//------------------------------------------------------------------------------------------------  

//【1】头文件
#include <fstream>
#include <ctime>

using namespace std;
#define TIMER
//【2】函数声明


//【3】定义枚举体,在几种方法中切换
enum Method
{
};
//【4】变量声明


int main(){
#ifdef TIMER
	clock_t start = clock();
#endif // TIMER
	ifstream fin("in.txt");
	if (fin.fail())
		return 1;
	ofstream fout("out.txt");
	while (!fin.eof())
	{

	}
	
#ifdef TIMER
	clock_t end = clock();
	double duration = (double)(end - start);
	fout << "runtime : " << duration << "ms" << endl;
#endif // TIMER
	fout.close();
           return 0;
}

//【5】函数实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值