目录:
前言
一、输入
二、输出
三、重定向
四、初学者常见问题
五、帮助资料
前言:
工欲善其事,必先利其器,在本文之前,先介绍下我们的编码工具(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
-
本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]Tags | 热门标签RankList | 热门文章
- 1蔡颖《APS走向实践》书解读之一:APS优化供应链从绩效指标开始
- 2腾讯微云手机版怎么上传文件
- 3DBA的宿命(困兽之斗)
- 4iPhone电源按钮失效后怎么关闭 iPhone关闭方法教程
- 5exposurex5授权码中文版win与mac全版本下载教程
- 6荧光标记 吲哚菁绿白蛋白半乳糖 ICGALBGalactose
- 7vista的最佳硬盘分区方法?
- 8操作系统:进程管理(概念)
- 9区块链对金融领域的“冲击”没有想象中大!
- 10win10 1909更新补丁KB4550945可选推送 修复大量漏洞
- 11用Photoshop绘制精致雷达扫描图标
- 12为什么网站有些图片在360浏览器下无法显示,而在火狐和本地都正常?
- 13Android反编译工具的使用Android Killer
- 14初学太极拳须知吴公仪
- 15喜讯 | 万里数据库通过ISO27001信息安全管理与ISO22301业务连续性管理双认证!