首頁(yè)考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實(shí)用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語(yǔ)
零起點(diǎn)日語(yǔ)
職稱英語(yǔ)
口譯筆譯
申碩英語(yǔ)
零起點(diǎn)韓語(yǔ)
商務(wù)英語(yǔ)
日語(yǔ)等級(jí)
GMAT考試
公共英語(yǔ)
職稱日語(yǔ)
新概念英語(yǔ)
專四專八
博思考試
零起點(diǎn)英語(yǔ)
托?荚
托業(yè)考試
零起點(diǎn)法語(yǔ)
雅思考試
成人英語(yǔ)三級(jí)
零起點(diǎn)德語(yǔ)
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問(wèn)
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營(yíng)養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國(guó)際商務(wù)
心理咨詢
營(yíng) 銷 師
司法考試
國(guó)際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問(wèn)
ACCA考試
注冊(cè)會(huì)計(jì)師
資產(chǎn)評(píng)估師
審計(jì)師考試
高級(jí)會(huì)計(jì)師
注冊(cè)稅務(wù)師
國(guó)際內(nèi)審師
理財(cái)規(guī)劃師
美國(guó)注冊(cè)會(huì)計(jì)師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊(cè)測(cè)繪師
質(zhì)量工程師
巖土工程師
造價(jià)員考試
注冊(cè)計(jì)量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
繽紛校園 實(shí)用文檔 英語(yǔ)學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項(xiàng)輔導(dǎo)
軟件水平考試交流互動(dòng)
軟件水平考試交流互動(dòng)
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員資料 > 正文

2012年軟考程序員輔導(dǎo):C語(yǔ)言新人常見問(wèn)題

  不知不覺,學(xué)習(xí)C語(yǔ)言也快一年了。雖然有C語(yǔ)言課,但是老師完全讓我們自己看書,在自學(xué)的過(guò)程中,和周圍同學(xué)交流中,以及后來(lái)在CSDN,BCCN,百度知道看帖回帖中,也看到許多C語(yǔ)言新人常遇到的問(wèn)題與常犯的錯(cuò)誤。為了讓新人們少走彎路少碰壁,我便打算寫下此文。當(dāng)然,由于我自己的水平也有限,其中可能自己也不知不覺犯了錯(cuò)誤,望高手們果斷斧正。

  下面的程序,基本是摘自在CSDN,BCCN,百度知道的提問(wèn)帖,以及我身邊的人和我自己寫的程序,限于篇幅,對(duì)于問(wèn)題影響不大的部分我已經(jīng)刪去或改寫,一些與相應(yīng)問(wèn)題無(wú)關(guān)的錯(cuò)誤也一并進(jìn)行了修改。對(duì)于完整的修正后的程序都在code::blocks 10.05(編譯器gcc,調(diào)試器gdb,平臺(tái)windows 7旗艦版)上運(yùn)行過(guò)。

  1、程序畫面一閃而過(guò)

  #include

  int main(void)

  {

  int iSignal; /*定義變量表示信號(hào)燈的狀態(tài)*/

  printf(“the Red Light is 0,the Green Light is 1\n”); /*輸出提示信息*/

  scanf(“%d”,&iSignal); /*輸入iSignal變量*/

  if(iSignal==1) /*使用if語(yǔ)句進(jìn)行判斷*/

  {

  printf(“the Light is green,cars can run\n”); /*判斷結(jié)果為真時(shí)輸出*/

  }

  if(iSignal==0) /*使用if語(yǔ)句進(jìn)行判斷*/

  {

  printf(“the Light is red,cars can’t run\n”); /*判斷結(jié)果為真時(shí)輸出*/

  }

  return 0;

  }

  解析:在XP以上的系統(tǒng)用win-tc,dev-cpp等IDE編譯運(yùn)行此程序時(shí),無(wú)論輸入什么數(shù)字,結(jié)果都是一閃而過(guò),因?yàn)槌绦驁?zhí)行完語(yǔ)句后就直接退出了。

  解決方案:這里有幾個(gè)辦法(1)

  在程序開頭加上#include

  然后在程序末尾加上system(“pause”);

  此方法僅適用于MS-DOS,windows,不適用于*nix等系統(tǒng)(2)

  在需要暫停的地方加入一個(gè)或兩個(gè)getchar();

  這種方法,實(shí)質(zhì)上并不是暫停程序,而是讓程序等待用戶輸入若干個(gè)回車。但是效果和暫停是相同的。(3)

  在程序開頭加上#include

  在需要暫停的地方加入一個(gè)getch();,原理和上一種差不多。在win-tc里用得比較多。

  2、if,for,while的判斷后直接跟;

  例如:

  #include

  int main(void)

  {

  int a;

  scanf(“%d”,&a);

  if (a == 123);////錯(cuò)誤,if(a == 123)后面不應(yīng)加上;,而應(yīng)該緊跟著

  ////{ printf();}代碼

  {

  printf(“ccc”);

  }

  else

  {

  printf(“ddd”);

  }

  getchar();

  return 0;

  }

  #include

  int main(void)

  {

  int n,i;

  printf(“please input a number>2:”);

  scanf(“%d”,&n);

  for(i=2;i   {

  if(n%i==0)

  break;

  }

  if(i   printf(“%d not a sushu\n”,n);

  else

  printf(“%d is a sushu\n”,n);

  return 0;

  }

  解析&解決方案:見注釋

  3、漏頭文件,main函數(shù)格式不規(guī)范。

  例如:

  main()

  {

  int a;

  scanf(“%d”,&a);

  printf(“input %d”, a);

  }

  解析:這段程序沒(méi)有帶上頭文件stdio.h。即漏寫了#include 。如果僅有scanf,printf函數(shù)的話,stdio.h是可以省略并可以正確運(yùn)行的,但是這是非常不好的習(xí)慣。而main()這種寫法,C89標(biāo)準(zhǔn)勉強(qiáng)充許這種形式,C99標(biāo)準(zhǔn)是不允許的。而void main(),至今仍未有任何標(biāo)準(zhǔn)考慮接受它。但是有些編譯器的確允許。當(dāng)然,這種寫法廣為流行,應(yīng)該和老譚的書關(guān)系非常大。

  解決方案:用到的頭文件應(yīng)該用include包含進(jìn)去。main()函數(shù)應(yīng)該寫成int main(void)這種形式,在main()函數(shù)尾部加上return 0;即

  #include

  int main(void)

  {

  int a;

  scanf(“%d”,&a);

  printf(“input %d”, a);

  return 0;

  }

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。