1、浮点运算可能存在误差,在进行浮点数的比较时,应考虑到浮点误差。浮点数不应用来做等号的比较。
2、当需要统计某种事物的个数时,可以用一个变量来充当计数器。
3、不要忘记测试,一个看上去正确的程序可能会隐含着错误。
4、在观察无法找出错误时,可以用“输出中间结果”的方法来查错。
5、求阶乘之和:S=1!+2!+3!……+n!;
代码:
#include <stdio.h>
int main(void)
{
int i, j, n, S = 0;
scanf("%d", &n);
for(i = 1;i <= n;i++) {
int factorial = 1;
for(j = 1;j <= i;j++) {
factorial *= j;
}
S += factorial;
}
printf("%d\n", S % 1000000);
return 0;
}
这段代码有很明显的不足之处,当n较大时,程序就容易溢出,这里可以根据我们的数学知识改进一下,
提示:要计算只包含加法、减法、和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。
这样,溢出的问题就轻松解决了。
6、往往在程序竞赛中程序运行的时间也有严格的要求,如果程序效率太低,跑的太慢,则会造成超时,因为我们可以使用一个方法来检测一下自己的程序的效率如何,要用到下面的这个函数:clock();使用这个函数要包含头文件:time.h;使用方法如下:
printf("time used = %.2lf\n", (double)clock()/CLOCK_PER_SEC);这个语句的意思是,或得程序运行的时间,并以秒的单位输出。这样我们就可以大概的了解一下自己程序的效率了。