不知不觉,学习C语言也快一年了。虽然有C语言课,但是老师完全让我们自己看书,在自学的过程中,和周围同学交流中,以及后来在CSDN,BCCN,百度知道看帖回帖中,也看到许多C语言新人常遇到的问题与常犯的错误。为了让新人们少走弯路少碰壁,我便打算写下此文。当然,由于我自己的水平也有限,其中可能自己也不知不觉犯了错误,望高手们果断斧正。 5 ?1 ?- D/ ]: O ~, G
下面的程序,基本是摘自在CSDN,BCCN,百度知道的提问帖,以及我身边的人和我自己写的程序,限于篇幅,对于问题影响不大的部分我已经删去或改写,一些与相应问题无关的错误也一并进行了修改。对于完整的修正后的程序都在code::blocks 10.05(编译器gcc,调试器gdb,平台windows 7旗舰版)上运行过。 & Q% B( P' A; Y7 t5 q' _
1、程序画面一闪而过
; U& z, H0 a0 t0 b! i/ u) m0 _) y. L #include & r- T& q1 S+ L) Z4 V, ]
int main(void)
$ W, R% U8 C2 e8 t! E: ], p# O7 m { 6 _2 B- P$ [. l! H- e# z c* ^( S
int iSignal; /*定义变量表示信号灯的状态*/ - }- K6 ~9 s2 t8 y+ i2 ^
printf(“the Red Light is 0,the Green Light is 1\n”); /*输出提示信息*/
1 N2 o( T2 u# V: v8 p) g) L scanf(“%d”,&iSignal); /*输入iSignal变量*/ 7 I% a- z, _2 `0 `0 N; b6 ?
if(iSignal==1) /*使用if语句进行判断*/ 6 X4 J: [# B) S( f( K: T. G0 C8 G
{
' E9 X0 U F& |: O printf(“the Light is green,cars can run\n”); /*判断结果为真时输出*/ % I' g1 A H. L: T' g7 \+ c
} / L1 ^/ O9 l$ P- l+ S$ ^. g
if(iSignal==0) /*使用if语句进行判断*/
& l9 E0 D+ W. R1 @5 v1 f6 c, ? {
" ]& j( z1 K2 I' c9 P8 ^) B) t printf(“the Light is red,cars can’t run\n”); /*判断结果为真时输出*/
+ h- T& Z0 p0 n! E } & V8 }& X0 V8 ^+ J
return 0; ) Y5 W3 K* g, W( O: |( Z
}
K6 s2 o" [) z% u2 U' ~( M 解析:在XP以上的系统用win-tc,dev-cpp等IDE编译运行此程序时,无论输入什么数字,结果都是一闪而过,因为程序执行完语句后就直接退出了。 ' f2 t* n* o9 K8 X
解决方案:这里有几个办法(1)
, `1 z+ F d4 G3 h 在程序开头加上#include
7 }9 p: f* x8 X+ K4 \/ e 然后在程序末尾加上system(“pause”);
- e0 w' ]/ `* [ 此方法仅适用于MS-DOS,windows,不适用于*nix等系统(2) , q' _) Q7 V; t& K: p! Q% d
在需要暂停的地方加入一个或两个getchar(); % T& P2 ^# ~6 V" ?. `
这种方法,实质上并不是暂停程序,而是让程序等待用户输入若干个回车。但是效果和暂停是相同的。(3) : V. @$ ]" {* @: n' T
在程序开头加上#include ) N) w: _8 T1 _
在需要暂停的地方加入一个getch();,原理和上一种差不多。在win-tc里用得比较多。
! B2 D' x$ U5 d# }2 y) ?% h) u8 x 2、if,for,while的判断后直接跟; 5 v0 Q: P; g2 Z' t1 \' h: ~
例如:
( g/ M( |# M2 b+ D5 Q- U% c0 X #include 2 H! W" X0 r/ B
int main(void) |