假定你的程序编译通过(要当心警告),但运行错误,应该怎么处理呢?
一 你的脑子就是计算机,在脑子中运行并且检查你的程序。直接确定你的错误
二 如果第一步不行。尽可能准备充分的测试数据,让你程序的错误通过运行显现出来。
三 找到让程序出错的输入数据后,如何找到代码的错误之处?
1. 把你的脑子当计算机用,运行之
2. 使用printf在关键处输出其状态
3. 使用编译器提供的调试工具
3.1 codeblocks的调试
可以参见 http://blog.csdn.net/sxhelijian/article/details/15026159
要点 (1)debug菜单 or debug 工具栏
(2)设置断点(F5)
(3) 开始调试(F8)
(4) 用watches查看变量值(菜单debug/debug windows/watches)
(5)结束调试(shift+F8)
(6)单行执行(F7)
(7)运行到光标处(F4)
(8)进入/退出函数
示例一:
#include <stdio.h> int main(void) { int a, b; scanf("%d %d", a, b); printf("%d ", a + b); return 0; }
示例二
#include <stdio.h> int main(void) { int sum, n; int i; scanf("%d", &n); for(i = 1; i <= n; i++) sum += i; printf("%d ", sum); return 0; }
示例三:
#include <stdio.h> int main(void) { int sum = 0, n; int i; while(scanf("%d", &n) != EOF) { for(i = 1; i <= n; i++) sum += i; printf("%d ", sum); } return 0; }
示例:
1 #include<stdio.h> 2 int is_prime(int n) 3 { 4 int i; 5 6 for(i = 2; i * i < n; i++) 7 //for(i = 2; i * i <= n; i++) 8 if(n % i == 0) 9 return 0; 10 return 1; 11 } 12 13 void test(void) 14 { 15 int i; 16 for(i = 2; i <= 16; i++){ 17 printf("%d is %s a prime ", i, is_prime(i) ? "" :"not "); 18 } 19 } 20 21 int main(void) 22 { 23 test(); 24 return 0; 25 }