本文转载自:http://www.cnblogs.com/lifeathappiness/p/3530344.html
3.1预定义,重定向输入
上边的代码中已经显示出来了。把测试文本保存下来,运行时便直接得到结果了,ACCEPTED的情况下\(^o^)/~
#ifdef ONLINE_JUDGE #else freopen("E:\\in.txt","r",stdin); #endif
这段代码,个人一般放在文件包含后面,但是如果使用的VC6.0,netbeans,应当把它放到main()函数中,不然会出错,它们的提示错误还不同。
不过目前在HDOJ放在前面不出现错误。
3.2预定义,断言
断言用处大,用的妙。
#ifdef ONLINE_JUDGE //判断是不是OJ系统,非OJ系统调试可另起名字 #define ASSERT_LEVEL 1 #else #define ASSERT_LEVEL 0 #endif #if (ASSERT_LEVEL>=1) #define ASSERT(exp) _assert(#exp, __FILE__, __LINE__) #else #define ASSERT(exp) 0 #endif double foo(int n) //计算阶乘 { ASSERT(n>=0); return n*foo(n-1); } #include <stdio.h> int main(void) { int n=10; printf("%d\n", foo(n)); return 0; } 以上为一个错误递归算阶乘的程序示例,运行一下你就知道断言的威力了。 那个foo函数应当改为: double foo(int n) //计算阶乘 { ASSERT(n>=0); if(n==0)return 1; return n*foo(n-1); }
今天该整理其他了:暂时休息。