要求:分析下列程序是否正确,如有错,错在第几行?应如何改正?如正确,运行结果如何?上机调试之。
第1题
1 void func ( float a , float b )
2 main()
3 { float x , y ;
4 float z ;
5 scanf(“%f , % f”,&x ,&y);
6 z = func ( x , y ) ;
7 printf ( “ z = % f \n” , z ) ;
8 }
9 void func ( float a , float b )
10 { float c ;
11 c = a * a + b * b ;
12 return c ;
13 }
2.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第12位学生的年龄。
main()
1 { int age( int n) ;
2 int n =12;
3 printf (“ Age is %d\n” , age (n);
4 };
5 int age(int n);
6 { int c;
7 c = age (n-1)+2 ;
8 return ( c ) ;
9 }
ç®åæ¥è¯´ï¼æ两ç§æ¹å¼ï¼ä¸ç§æ¯æºç debugï¼å³åææºç æ¥æ¾åºbugä½ç½®ï¼ä¸è¬ä½¿ç¨printf()æå°åºç¨åºæ§è¡æ¯ä¸æ¥çä¿¡æ¯ï¼ä¸ç§æ¯å¯æ§è¡æ件debugï¼éè¦ä½¿ç¨è°è¯å¨æ¥è¿è¡ã
1ãæºç debug
类似äºä¸é¢çæºç ï¼ä¸»è¦éè¿ç¨åºæ§è¡æ¶è¾åºçä¿¡æ¯ï¼æ¥å®ä½bugåºç°çä½ç½®ï¼ç¶ååä¿®æ¹æºç ã
#include <stdio.h>2ãå¯æ§è¡æ件è°è¯ï¼windowså¹³å°å¸¸ç¨çå°±æ¯vs/vcèªå¸¦çè°è¯ï¼å¦å¤ä¸ä¸ªå°±æ¯å¾®è½¯èªå®¶å¼åçè°è¯å¨windbgãLinuxå¹³å°ä»¥gdb为常ç¨ã
IDEèªå¸¦çè°è¯å¨ä»¥VC6.0为ä¾ï¼ç¼åå®ä»£ç åï¼æå¿«æªé®çF11ï¼å³å¯è¿å ¥è°è¯ï¼æ¤æ¶å³é®ï¼éæ©âgo to disassembly"å³å¯æ¥çå°ç¨åºçåæ±ç¼ä»£ç ãä¸è¬è¿ç§æ åµï¼ä¸»è¦æ¯ä¸ºäºå¯¹Cè¯è¨è¿è¡åæ±ç¼å¦ä¹ ã
Windbgçåè½é常å¤ï¼å¯ä»¥è¿è¡æºç è°è¯ãå¯ä»¥è°è¯å¯æ§è¡æ件ãè¿å¯ä»¥è¿è¡å æ ¸è°è¯ï¼ä¹å¯ä»¥è°è¯dumpæ件ï¼ç¨çå¤äºï¼èªç¶çæï¼è¦è°è¯å¯æ§è¡æ件ï¼åªéè¦ç¹å»âFile"å¨å¼¹åºç对è¯æ¡ä¸éæ©âOpen Executeable"ï¼ç¶åæ¾å°èªå·±è¦è°è¯çç¨åºå³å¯ã
Linux常ç¨çæ¯Gdbè°è¯å¨ï¼å¼å¾æ³¨æçæ¯ï¼è¦ä½¿ç¨gdbè°è¯ï¼å¨ä½¿ç¨gccæè g++ç¼è¯C/c++æ件æ¶ï¼éè¦æ·»å -gåæ°æå¯ä»¥çæ符å·è¡¨ãä¸å¾æ¯ç¨gdbåæC++ä¸åéåå¸çä¸å¼ æªå¾ï¼å¤§ä½ä¸çä¸ä¸é¿ä»ä¹æ ·ï¼ç¨çå¤äºèªç¶çæï¼ä¸éè¦å¯ä»¥å»å¦ä¹ ã