目录:
前言
一、输入
二、输出
三、重定向
四、初学者常见问题
五、帮助资料
前言:
工欲善其事,必先利其器,在本文之前,先介绍下我们的编码工具(IDE、代码编辑器)
-
开源新版本的Dev C++ 5.7.1:Orwell Dev-C++ (可以用于Windows XP、Win7和Win8)(c/c++、入门时使用)
- sublime text 3:下载:http://www.sublimetext.com/3
- sublime text 3详细教程:http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html#3036832 (几近完美的代码编辑器、强力推荐)
-
Microsoft Visual Studio 2013 Express的下载地址:面向 Windows 的 Microsoft Visual Studio Express 2013 预览版(C#、推荐)
- Eclipse:download.eclipse.org/(java、推荐)
- Geany的官网:http://www.geany.org (Windows需要另外安装MinGW)
- MinGW的官网:http://mingw.org (Dev C++自带MinGW,不需要另外下载安装MinGW)
一、输入
第一类:
输入不说明有多少个Input Block,以EOF为结束标志。
参见:HDOJ_1089
http://acm.hdu.edu.cn/showproblem.php?pid=1089
#include
int main()
{int a, b;while (scanf("%d %d", &a, &b) != EOF)printf("%d\n", a + b);
}
while(scanf("%d %d",&a, &b) != EOF)
{.... }
while( cin >> a >> b ) {.... }
第二类:
#include
int main()
{int n, i, a, b;scanf("%d", &n);for (i = 0; i
}
scanf("%d", &n) ;
for ( i = 0 ; i
{....
}
cin >> n;
for ( i = 0 ; i
{....
}
第三类:
#include
int main()
{int a, b;while (scanf("%d %d", &a, &b) && (a != 0 && b != 0))printf("%d\n", a + b);
}
while(scanf("%d",&n) && n!=0 ) {.... }
while( cin >> n && n != 0 ) {.... }
第四类:
第五类:
char buf[20]; gets(buf);
getline( cin , buf );
说明1 :
说明2 :
cin.getline的用法:
二、输出
第一类:
一个Input Block对应一个Output Block,Output Block之间没有空行。
第二类:
一个Input Block对应一个Output Block,每个Output Block之后都有空行。
#include
int main()
{ int a,b;while(scanf("%d %d",&a, &b) != EOF) printf("%d\n\n",a+b);
}
第三类:
一个Input Block对应一个Output Block,Output Block之间有空行。
#include
int main()
{int icase, n, i, j, a, sum;scanf("%d", &icase);for (i = 0; i
}
for (k = 0; k
{while (…){printf(" %d\n", result);} if (k != count - 1) printf("\n");
}
三、 重定向
a ) 方法一:修改源文件,指定重定向的输入、输出文件 (推荐)
#ifndef _OJ_
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
b) 方法二:在 IDE 中通过设置命令行,重定向输入、输出文件
四、初学者常见问题
1.编译错误
int num = 100;
char str[25];
sprintf(str, " %d" , num);
2.C语言处理“混合数据”的问题
……
scanf("%d\n", &icase);
for (i = 0; i
{scanf("%c%d%d", &opera, &num1, &num2);……
}
……
3.printf和cout混用的问题
#include
#include
int main()
{int j = 0;for (j = 0; j <5; j++){cout <<"j=";printf("%d\n", j);}return 0;
}
详情请参考:《探寻C++最快的读取文件的方案》 http://www.cnblogs.com/Code--Monkey/articles/4131722.html
4.纯字符串用puts()输出:
5.一般用C语言节约空间,要用C++库函数或STL时才用C++;
6.有时候int型不够用,可以用long long或__int64(两个下划线__)。
7.OJ判断是只看输出结果的,所以不要要多余的提示输出。
while(case--)
{scanf(...);......printf(...);
}
8.读到文件的结尾,程序自动结束:
读到一个0时,程序结束:
9.数组定义int a[10] = {0};可以对其全部元素赋值为0;
10.有很多数学题是有规律的,直接推公式或用递归、循环。
11.圆周率=cos(-1.0) 自然对数=exp(1.0)
12.如果要乘或除2^n,用位移运算速度快。a>>n;a< 13.定义数组时,数组大小最好比告诉的最大范围大一点。
字符数组大小必须比字符串最大长度大1。 处理字符数组时不要忘了在最后加&#39;\0&#39;或者0。 14.擅用三目运算符
int max(int a,int b)
{return a>b?a:b;
}
int gcd(int m,int n)
{return n?gcd(n,m%n):m;
}
int abs(int a)
{return a<0?-a:a;
}
15.将乘法转换成加法减少时间
log(a*b)=log(a)+log(b) 将乘法转换成除法防止溢出 a/(b*c)=a/b/c 16.排序要求不高时可以用C++的STL模板函数sort(),stable_sort()
int a[n]={...};
sort(a,a+n);
bool cmp(int m,int n)
{return m>n;
}
sort(a,a+n,cmp);
17.有的题数据范围小但是计算量大可以用打表法
先把结果算出来保存在数组里,要用时直接取出来。 18.浮点数比较时最好控制精度
#define eps 1e-6 fabs(a-b) 19.有些字符串与整型的转换函数是非标准的
可以使用sscanf()和sprintf()代替 sscanf(s,"%d",&n);//从字符串s中读入整数n sprintf(s,"%d",n);//将n转换为字符串s 五、帮助资料
1.程序提交后的提示
1) Accepted (AC) :程序已经通过
2) Wrong Answer (WA) : 运行结果不正确
3) Presentation Error (PE) :程序运行结果正确,但结果的格式不正确。
4) Runtime Error (RE) : 程序运行时出错。例如:用0作除数、数据溢出、下标越界。
5) Time Limit Exceeded (TLE) : 超时间限制。
6) Memory Limit Exceeded (MLE) : 超内存限制
7) Compilation Error (CE) : 编译错误 2.在线系统网址:
1) 北京大学:http://poj.org/ 题目丰富全面,但主要是英文题。
2) 百炼:http://poj.grids.cn/ 北京大学内部练习系统。“程序设计导引及在线实践”书本上的例题来自该系统。
3) 浙江大学:http://acm.zju.edu.cn/ “ACM 程序设计”等3本书上的例题来自该系统。
4) 杭州电子科技大学:http://acm.hdu.edu.cn/ 题目相对容易,有中文题、电子教案与代码。
5) 湖南大学:http://acm.hnu.cn:8080/online/ 题目较难。
6) 浙江工业大学:http://acm.zjut.edu.cn/ 题目相对容易,有中文题。
7) 南京航空航天大学:http://acm.nuaa.edu.cn/ 有中文题。
8) 湖南师范大学:http://acm.hunnu.edu.cn/ 有中文基础题。
9) 湖南工业大学:http://openoj.awaysoft.com/ 有中文题。
10) 南阳理工学院:http://acm.nyist.net/ 有很多中文题。
11) 浙江台州学院:http://acm.tzc.edu.cn/ 有很多中文题 3.关于输入输出的进一步问题,可以自己查阅相关手册或资料。 也可参考标准手册,以上输入输出方法都是 C/C++标准输入输出,在 manual 中都有详细介绍。
cin: http://www.cplusplus.com/reference/iostream/cin/
scanf: http://linux.die.net/man/3/printf
对比:http://www.cnblogs.com/Code--Monkey/articles/4131722.html
本文部分内容转载于:power721 http://blog.csdn.net/power721/article/details/4503056
13.定义数组时,数组大小最好比告诉的最大范围大一点。
14.擅用三目运算符
int max(int a,int b)
{return a>b?a:b;
}
int gcd(int m,int n)
{return n?gcd(n,m%n):m;
}
int abs(int a)
{return a<0?-a:a;
}
15.将乘法转换成加法减少时间
16.排序要求不高时可以用C++的STL模板函数sort(),stable_sort()
int a[n]={...};
sort(a,a+n);
bool cmp(int m,int n)
{return m>n;
}
sort(a,a+n,cmp);
17.有的题数据范围小但是计算量大可以用打表法
18.浮点数比较时最好控制精度
19.有些字符串与整型的转换函数是非标准的
五、帮助资料
1.程序提交后的提示
1) Accepted (AC) :程序已经通过2) Wrong Answer (WA) : 运行结果不正确
3) Presentation Error (PE) :程序运行结果正确,但结果的格式不正确。
4) Runtime Error (RE) : 程序运行时出错。例如:用0作除数、数据溢出、下标越界。
5) Time Limit Exceeded (TLE) : 超时间限制。
6) Memory Limit Exceeded (MLE) : 超内存限制
7) Compilation Error (CE) : 编译错误
2.在线系统网址:
1) 北京大学:http://poj.org/ 题目丰富全面,但主要是英文题。2) 百炼:http://poj.grids.cn/ 北京大学内部练习系统。“程序设计导引及在线实践”书本上的例题来自该系统。
3) 浙江大学:http://acm.zju.edu.cn/ “ACM 程序设计”等3本书上的例题来自该系统。
4) 杭州电子科技大学:http://acm.hdu.edu.cn/ 题目相对容易,有中文题、电子教案与代码。
5) 湖南大学:http://acm.hnu.cn:8080/online/ 题目较难。
6) 浙江工业大学:http://acm.zjut.edu.cn/ 题目相对容易,有中文题。
7) 南京航空航天大学:http://acm.nuaa.edu.cn/ 有中文题。
8) 湖南师范大学:http://acm.hunnu.edu.cn/ 有中文基础题。
9) 湖南工业大学:http://openoj.awaysoft.com/ 有中文题。
10) 南阳理工学院:http://acm.nyist.net/ 有很多中文题。
11) 浙江台州学院:http://acm.tzc.edu.cn/ 有很多中文题
3.关于输入输出的进一步问题,可以自己查阅相关手册或资料。 也可参考标准手册,以上输入输出方法都是 C/C++标准输入输出,在 manual 中都有详细介绍。
cin: http://www.cplusplus.com/reference/iostream/cin/
scanf: http://linux.die.net/man/3/printf
对比:http://www.cnblogs.com/Code--Monkey/articles/4131722.html
本文部分内容转载于:power721 http://blog.csdn.net/power721/article/details/4503056
转载于:https://www.cnblogs.com/swanGooseMan/p/4132132.html
-
为什么80%的码农都做不了架构师?二、配置SublimeText2如有需要配置Sublimetext2,需要点击Preferences-Sett ... [详细]转自:搜云库技术团队#摘要(Abstract)本文系统全面的介绍了SublimeText,旨在成为最优秀的SublimeTe ... [详细]本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]关于sublimetext3packagecontrol无法使用问题的解决,Go语言社区,Golang程序员人脉社 ... [详细]最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]在C#中,使用关键字abstract来定义抽象类和抽象方法。抽象类是一种不能被实例化的类,它只提供部分实现,但可以被其他类继承并创建实例。抽象类可以用于类、方法、属性、索引器和事件。在一个类声明中使用abstract表示该类倾向于作为其他类的基类成员被标识为抽象,或者被包含在一个抽象类中,必须由其派生类实现。本文介绍了C#中抽象类和抽象方法的基础知识,并提供了一个示例代码。 ... [详细]本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]Tags | 热门标签RankList | 热门文章
- 1[WPF] 圆角TextBox
- 2使用Frida框架进行Java函数的Hook:基于Frida框架的native函数Hook实现(1)
- 3一篇与众不同的 String、StringBuilder 和 StringBuffer 详解
- 4蜬字意思 在新华字典的读音解释笔画常用组词起名
- 5移动硬盘无法打开的解决方法,急需帮助!
- 6c++二叉树的层序遍历_C#实现二叉树四种遍历(顺序存储结构)
- 7PB调用EXCEL的操作不失为一种好的报表输出方式
- 8使用3DSMAX制作具有逼真质感的玻璃杯
- 9window计算的chk在linux下可以读,Linux系统命令从入门到完全忘记(四)
- 10iOS 两款你可能会用到的弹出框
- 11【洛谷4251】 [SCOI2015]小凸玩矩阵(二分答案,二分图匹配)
- 12BZOJ 1112 POI2008 砖块Klo
- 13IntelliJIDEA插件阿里巴巴Java开发手册(AlibabaJavaCodingGuidelines)
- 14php表单中文本框怎么用(表单中的文本框)
- 15在Ubuntu 18.04.3中的鱼壳conda源错误中