a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 161|回复: 2

[程序员] 2012年软件水平考试程序员辅导(二)

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
不知不觉,学习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)
回复

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:16 | 显示全部楼层

2012年软件水平考试程序员辅导(二)

   {
* d) D/ ?* s: A" j4 V8 V7 Q& w   int a;
" `$ ?, a) m2 O# Z, h2 {, R4 F   scanf(“%d”,&a); 0 h" l" s0 y7 t7 v5 t. M- }
   if (a == 123);////错误,if(a == 123)后面不应加上;,而应该紧跟着
7 |* |: a1 l8 B+ p   ////{ printf();}代码 8 Q$ c$ H/ @9 T7 [8 T' T' X2 c
   {
- _. A0 e0 [* |6 ]   printf(“ccc”);
& H7 V  X& V; D$ `+ q3 I8 \   }
  }& t) E. {2 K- Q+ g: A) d4 J8 y$ O/ ]- j   else
3 Z# {: r! E8 j: J8 L! r' D   {
4 W5 S' s- J' ^1 Y5 k; Z* `+ U  B   printf(“ddd”); ; Y; z* h5 S& Q7 d
   } * N0 e( h9 j: c4 {
   getchar();
5 R/ a6 u. H* I  i: ~   return 0; & d3 r4 L" p- C& L. _
   } ( I9 k/ ~( R2 o* D; c7 ]; D
   #include
: M# N) }$ R5 u. p4 x   int main(void) & m; C* D) Z6 i# s! s/ I
   { $ b8 b* ?& n7 Z6 a# u/ d- Q0 j
   int n,i; ! u( e! U% J% O
   printf(“please input a number>2:”);
( ^, e" s+ m$ }   scanf(“%d”,&n); ; T) r" y* E; i1 J" i; @: W
   for(i=2;i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:17 | 显示全部楼层

2012年软件水平考试程序员辅导(二)

   if(i
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-17 14:23 , Processed in 0.235825 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表