应对我院C++上机考试/作业的一些小技巧
来源:互联网 发布:软件测试教学视频 编辑:程序博客网 时间:2024/06/07 03:12
这是一篇完全没有排版的文章。
由于作者完全不懂如何排版,所以看起来会有点丑。
0.利用重定向输入输出来更快速的解决测试用例的问题
想必大家都知道用文件来读写的话可以解决测试用例太难输入的问题,我这里推荐的是使用freopen,这个函数的详细介绍见http://en.cppreference.com/w/cpp/io/c/freopen
来举个例子
/**ID: Wan ZhongTASK: prefaceLANG: C++**/#include <iostream>#include <string>#include <cstdio>using namespace std;string s = "IVXLCDM";int count[7];int base[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};string str[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};void deal(int n);void show();int main() {freopen("preface.in", "r", stdin);freopen("preface.out", "w", stdout);int n;cin >> n;for(int i = 1; i <= n; i++) {deal(i);}show();}void show() {for(int i = 0; i < s.length(); i++) {if(count[i]) {cout << s[i] << " " << count[i] << endl;} else {break;}}}void deal(int n) {string roman = "";int i = 0;while(n != 0) {if(n >= base[i]) {n -= base[i];roman += str[i];} else {i++;}}for(int j = 0; j < roman.length(); j++) {for(int k = 0; k < s.length(); k++) {if(roman[j] == s[k]) {count[k]++;break;}}}}
这是我写的一段代码,请先不要吐槽为什么写那么丑,把关注点放在main函数的前2行,你会发现跟Java比或者跟C++其他文件读写方式想比,如果需要把代码提交上去跑测试用例,你势必是要把文件读写改成标准输入输出的,用freopen的好处在于你只需要把这两行注释掉就能直接提交。当然我知道很多人会忘记在提交前注释掉这行,我也没有办法啊。。。你看着全都WA了心里还没有点数?
1.在平时作业时也可以用重定向获取所有的测试用例以方便自己判断助教是不是把测试用例写错了。至少在我们这一届的时候,助教是经常会出一些奇怪的错误,你可以把测试用例利用重定向保存到本地,然后跟同学对答案。。。
2.在有些时候,你可能会遇到int整数溢出的情况,这时候你应该使用的是一个个把int换成long long 而不是使用#define int long long这种操作,因为你会把int main给换掉
3.说到#define,我需要给一些视力不好的同学一些建议,你可以在代码一开始就写一行
#define mian main以防止自己出现编译无论如何都通过不了的情况。。。
4.有的时候需要输出一个数组,在最后一个元素后面换行,而不需要输出空格,我个人曾经比较喜欢的写法是这样的:
cout << a[0];for(int i = 1; i < n; i++) { cout << " " << a[i];}cout << endl;
后来吃了亏,因为数组是空的。。。
然后有种写法是这样的:
bool first = true;for(int i = 0; i < n; i++) { if(first){ first = false; cout << a[i]; } else { cout << " " << a[i]; }}cout << endl;这个显然会好一些,不过还是有点烦,你其实可以这样:
for(int i = 0; i < n; i++) { printf("%d%c", a[i], " \n"[i == n]);}
虽然这个还是应付不了数组为空的情况,但是一般情况够用了。。。如果真有可能出现数组为空的情况,建议具体情况具体分析,因为有的时候如果数组是空的,题目有可能要求什么都不输出,也有可能要求输出一个换行。
----------------------------------------------------2017.8.11------------------------------------如有遗漏以后再补------------------------------------------------------------------------------------------------------
阅读全文
0 0
- 应对我院C++上机考试/作业的一些小技巧
- 应对编程困难的JAVA小技巧
- C++Builder的一些小技巧
- Linux C程序设计的一些小技巧
- C语言的一些小技巧 小知识
- c++下标运算符的理解和带上机总结一些小技巧
- 简单应对U盘病毒的小技巧
- HTML小技巧的一些小技巧
- HTML小技巧的一些小技巧
- HTML小技巧的一些小技巧
- HTML小技巧的一些小技巧
- 这些天学到的一些C语言小技巧
- gdb 调试c/c++的一些小技巧
- 关于c的printf一些小问题技巧
- gdb 调试c/c++的一些小技巧
- JasperReports的一些小技巧
- 整人的一些小技巧!
- VC的一些小技巧
- [PlantSimulation]Transporter运输工具的详细用法(三)
- merge conflicts in Git
- Andy's First Dictionary
- Shader 渐变纹理贴图参考代码
- shared_ptr基于引用计数智能指针实现
- 应对我院C++上机考试/作业的一些小技巧
- 进程 fork exec,wait/waitpid
- yum删除与回滚
- Datagridview解决列中间有空值时的排序出错问题
- 并查集详解
- laravel关闭浏览器释放session
- MPI介绍与实践——理论介绍
- XR20M1170IG16TR IIC转RS232调试不通的问题
- 掌贝打印SDK说明