a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 160|回复: 2

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

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
不知不觉,学习C语言也快一年了。虽然有C语言课,但是老师完全让我们自己看书,在自学的过程中,和周围同学交流中,以及后来在CSDN,BCCN,百度知道看帖回帖中,也看到许多C语言新人常遇到的问题与常犯的错误。为了让新人们少走弯路少碰壁,我便打算写下此文。当然,由于我自己的水平也有限,其中可能自己也不知不觉犯了错误,望高手们果断斧正。
  M) L' t5 C, P% A8 N0 v9 c1 _  下面的程序,基本是摘自在CSDN,BCCN,百度知道的提问帖,以及我身边的人和我自己写的程序,限于篇幅,对于问题影响不大的部分我已经删去或改写,一些与相应问题无关的错误也一并进行了修改。对于完整的修正后的程序都在code::blocks 10.05(编译器gcc,调试器gdb,平台windows 7旗舰版)上运行过。
7 g) ?& j( t( n+ [4 O9 O( X% [   1、程序画面一闪而过 6 E7 v. e4 Y) Y' r+ O+ b* {
   #include
0 Z8 q6 F# P' F   int main(void) 6 c" L* W0 D8 Z7 M9 t, N7 [
   {
2 Y3 d3 `7 s; t% t   int iSignal; /*定义变量表示信号灯的状态*/ ; ~* Q2 o/ J7 }4 p# Q5 E8 C
   printf(“the Red Light is 0,the Green Light is 1\n”); /*输出提示信息*/
% C: P) t, q  [   scanf(“%d”,&iSignal); /*输入iSignal变量*/
$ U2 {+ c; c' f& U   if(iSignal==1) /*使用if语句进行判断*/
9 I& o* k( Q. M! z; u   { : ?* C+ n5 r4 @; }* I- q
   printf(“the Light is green,cars can run\n”); /*判断结果为真时输出*/ 3 v" F6 u0 y& @, O, T
   } 3 a8 Y1 D8 D8 u, J: w1 u% k
   if(iSignal==0) /*使用if语句进行判断*/
( O% o% T0 \+ C9 ^+ V/ z   {
! [5 @& V  a2 v1 ~$ H   printf(“the Light is red,cars can’t run\n”); /*判断结果为真时输出*/ * h; [9 ?$ h6 M
   }
) X7 t8 e7 w/ W( X0 h( A   return 0; 1 a4 o6 [4 w: i! H7 `# ]
   } . V( \$ a! _( _2 m+ g
  解析:在XP以上的系统用win-tc,dev-cpp等IDE编译运行此程序时,无论输入什么数字,结果都是一闪而过,因为程序执行完语句后就直接退出了。
2 w$ D* X# {$ \& F0 ^5 M4 P  解决方案:这里有几个办法(1) . \0 y( [8 \# B' p& `
  在程序开头加上#include
/ y9 G4 J+ j( ~& s' G, ]  T  然后在程序末尾加上system(“pause”);
7 w+ X2 v7 q' N+ b5 J  此方法仅适用于MS-DOS,windows,不适用于*nix等系统(2)
1 k' F% O) [8 P* b3 z) m  在需要暂停的地方加入一个或两个getchar(); ; J0 }$ _1 Q+ {
  这种方法,实质上并不是暂停程序,而是让程序等待用户输入若干个回车。但是效果和暂停是相同的。(3)
$ |$ t% t- }( v  在程序开头加上#include 1 o- j  f1 j' d" x4 {& ^
  在需要暂停的地方加入一个getch();,原理和上一种差不多。在win-tc里用得比较多。
; o$ L4 K3 l' r8 V& R   2、if,for,while的判断后直接跟; 6 v: \. o4 p1 r" f6 h! J3 Z% z, M
  例如: 7 z$ U) P9 J( n2 H- L
   #include 8 G0 V% ?! `. e: F# w2 b3 C5 @
   int main(void)
回复

使用道具 举报

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

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

   { * S& q/ S' t+ \8 K% p  |
   int a;
" ~- G' k( ?8 `   scanf(“%d”,&a); ) {5 l# d+ Z' L+ M" Z" `
   if (a == 123);////错误,if(a == 123)后面不应加上;,而应该紧跟着
. ]4 A2 C; d& T& r+ ~   ////{ printf();}代码
2 D" e, b- |) k: Q   {
2 r) x1 j. `  W$ q$ d   printf(“ccc”); % _/ h( K! M5 X& ~/ z
   } ( ]4 q. e) `1 ~: c' ~+ t
   else
1 ]/ g* V4 B0 N1 X   { 4 }5 d8 }, b+ z$ X
   printf(“ddd”);
, ]& o' X1 l; F# |   } . S9 A6 o% }  \3 G& [
   getchar();
- z: ?1 F. s0 q   return 0;
5 y' x0 x6 p  r, O9 p/ I8 I( D   }
; c7 d  r, w4 v- x   #include " x3 o: U+ D. v: t2 I
   int main(void)
$ p  M6 z& R# w4 Q% `   { 9 K' i. \8 s; I; U# G
   int n,i;
9 J! W1 d3 Z+ k; d& ]# p5 C8 w   printf(“please input a number>2:”); ( Q. z7 H; A8 B5 C' \) @
   scanf(“%d”,&n); ' L7 D- s6 g$ T# B. i
   for(i=2;i
回复 支持 反对

使用道具 举报

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

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

   if(i
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 08:57 , Processed in 0.609311 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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