色偷偷伊人-色偷偷综合-色无五月-色香蕉影院-色亚洲影院

淺析C語(yǔ)言程序的掛起錯(cuò)誤及解決策略

所屬欄目:軟件開發(fā)論文 發(fā)布日期:2010-09-15 09:29 熱度:

  摘要:在程序設(shè)計(jì)教學(xué)中,程序一旦掛起,學(xué)生便感覺無(wú)從下手。本文分析了程序掛起的常見錯(cuò)誤及相應(yīng)的解決辦法,以提高學(xué)習(xí)者的編程效率。
  關(guān)鍵詞:C程序設(shè)計(jì);程序掛起;解決策略
  中圖分類號(hào):文獻(xiàn)標(biāo)識(shí)碼:
  0引言
  “C語(yǔ)言程序設(shè)計(jì)”是計(jì)算機(jī)專業(yè)的一門重要的專業(yè)基礎(chǔ)課,一般院校都把它放在大一第一學(xué)期學(xué)習(xí),由于學(xué)生在中學(xué)階段幾乎沒有接觸過程序設(shè)計(jì)課程,再加上C語(yǔ)言涉及數(shù)據(jù)類型多、基本概念多、運(yùn)算符豐富、運(yùn)算規(guī)則繁多,學(xué)生在上機(jī)實(shí)驗(yàn)時(shí)經(jīng)常遇到編輯的程序調(diào)試運(yùn)行時(shí)出錯(cuò),甚至掛起,不再運(yùn)行。鑒于此,本文在討論說明C語(yǔ)言程序常見的掛起錯(cuò)誤基礎(chǔ)上,結(jié)合實(shí)例給出各種掛起錯(cuò)誤的解決策略。
  1程序的掛起錯(cuò)誤及解決策略
  1.1程序中有死循環(huán)
  死循環(huán)是程序進(jìn)行循環(huán)判斷的條件永遠(yuǎn)為真,或使程序退出循環(huán)的判斷條件永遠(yuǎn)為假造成的,這樣機(jī)器將無(wú)數(shù)次地執(zhí)行同一段程序代碼,出現(xiàn)死循環(huán),造成程序的掛起。例如下面一段程序:
  for(a=0;a<10;++a)
  {
  for(b=0;b<10;++a)
  {array[a][b]=0;
  }
  }
  在本段程序中,第二個(gè)循環(huán)本應(yīng)在變量b增加到10后結(jié)束,但在第二個(gè)循環(huán)的第三部分卻增加變量a的值,這樣變量b的值始終小于10,因此第二個(gè)for循環(huán)會(huì)一直進(jìn)行下去。
  再如:voidmain()
  {inta=7;
  while(a<10)
  {==a;
  a/=2;
  }
  }
  盡管每次循環(huán)中變量a的值要增加,但與此同事它又被減小了一半,因此變量a的值永遠(yuǎn)不會(huì)增加到10,While循環(huán)的條件始終為真,循環(huán)也永遠(yuǎn)不會(huì)結(jié)束。
  解決策略:程序出現(xiàn)死循環(huán),一種解決策略是重新閱讀程序,注意循環(huán)條件中循環(huán)控制變量是否使循環(huán)條件始終為真;另一種解決策略是調(diào)試程序時(shí)可以在每個(gè)循環(huán)體內(nèi)增加輸出語(yǔ)句,觀察變量值的變化,從而找出錯(cuò)誤。
  1.2程序運(yùn)行時(shí)間比期望的時(shí)間長(zhǎng)
  在有些情況下,程序并沒有被完全“鎖死”,但它的運(yùn)行時(shí)間比期望時(shí)間長(zhǎng)。
  intfib(inti)
  {if(i<3)
  return1;
  else
  returnfib(i-1)+fib(i-2);
  }
  表面看,上述程序是定義斐波那契數(shù)的一段程序代碼,程序簡(jiǎn)潔短小,看上去執(zhí)行時(shí)間不會(huì)太長(zhǎng)。但事實(shí)上計(jì)算時(shí)第一步是2個(gè)子問題,第二步是4個(gè)子問題,第三步是8個(gè)子問題,如此繼續(xù),結(jié)果是子問題的數(shù)目以步數(shù)為指數(shù)不斷增長(zhǎng)。要計(jì)算第40個(gè)斐波那契數(shù)的過程中,函數(shù)fib()將被調(diào)用2億多次。
  解決策略:在編程之初,仔細(xì)設(shè)計(jì)解決問題的算法,盡量避免出現(xiàn)假死鎖現(xiàn)象。
  1.3程序在等待正確的輸入
  有時(shí)程序停止運(yùn)行是因?yàn)樵诘却_的輸入信息。程序等待用戶輸入信息,而程序沒有輸出相應(yīng)的提示信息,用戶不知要輸入信息,或者輸入的信息不完全正確,程序看上去好像鎖住了。
  main()
  {
  FILE*in=fopen("num.dat","r");
  inttotal=0,n;
  while(fscanf(in,"%d",&n)!=EOF)
  {total+=n;}
  printf("thetotalis%dn",total);
  fclose(in);
  }
  如果文件num.dat中只包含整數(shù),程序能正常運(yùn)行,如果文件中包含整數(shù)以外的數(shù)據(jù),當(dāng)程序遇到一個(gè)不為整數(shù)的值時(shí),它不會(huì)讀入這個(gè)值,而是返回一個(gè)錯(cuò)誤代碼,而此時(shí)程序并未讀到文件尾,與EOF比較的值為假,這樣循環(huán)繼續(xù)進(jìn)行,n取某個(gè)未定義的值,程序再次讀文件,再次遇到剛才的錯(cuò)誤數(shù)據(jù),這樣程序就會(huì)無(wú)休止地執(zhí)行下去。
  解決策略:如果遇到程序中需要輸入數(shù)據(jù),就在相應(yīng)的輸入函數(shù)前,加入相應(yīng)的提示信息;如果遇到從文件中讀取數(shù)據(jù)的,盡量先去測(cè)試讀入的數(shù)據(jù)是否正確。
  還有許多其它原因會(huì)使程序掛起,但總的來(lái)說,它們都屬于上述三種類型中的一種。如果實(shí)在不能確定程序掛起的原因也可先檢查程序的總體結(jié)構(gòu),然后按照程序的執(zhí)行順序依次查看程序的各個(gè)部分能否正確運(yùn)行。如果各組成部分都能正確運(yùn)行,再檢查各部分是否帶回正確的數(shù)值。
  #include"stdio.h"
  #include"stdlib.h"
  intA(),B(int),C(int,int);
  
  /*函數(shù)A(),B(int),C(int,int)的定義均在其它模塊*/
  main()
  {
  intv1,v2,v3;
  v1=A();
  v2=B(v1);
  v3=C(v1,v2);
  printf("theresultis%dn",v3);
  return0;
  }
  
  在調(diào)試程序時(shí),先檢查函數(shù)A()是否把控制權(quán)返回給了主函數(shù),可以在調(diào)用函數(shù)A()的語(yǔ)句后面加上exit()命令,或者用注釋符號(hào)把對(duì)函數(shù)B(),C()的調(diào)用括起來(lái),然后重新編譯并運(yùn)行程序,如果程序運(yùn)行并退出,可以判斷是程序的其它部分掛起。用同樣的方法測(cè)試程序的每一部分,直到發(fā)現(xiàn)使程序掛起的部分;如果使程序掛起的函數(shù)本身正確,就需要檢查函數(shù)接受的所有值,像上例中在調(diào)用A()函數(shù)后,輸出變量v1的值,以確認(rèn)v1是否在函數(shù)B()所能接受的值的范圍內(nèi)。
  2結(jié)束語(yǔ)
  程序的調(diào)試應(yīng)該是一個(gè)有序的過程,需要很多的技巧,但只要掌握調(diào)試技巧,最終總能使程序正常運(yùn)行,得到正確的結(jié)果。
  參考文獻(xiàn):
  [1]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社.2005
  [2]張芳妮,呂波.C語(yǔ)言編程常見問題.北京:清華大學(xué)出版社.2001
  [3]何欽銘.C語(yǔ)言程序設(shè)計(jì).北京:高等教育出版社.2007

  搜論文知識(shí)網(wǎng)致力于為需要刊登論文的人士提供相關(guān)服務(wù),提供迅速快捷的論文發(fā)表、寫作指導(dǎo)等服務(wù)。具體發(fā)表流程為:客戶咨詢→確定合作,客戶支付定金→文章發(fā)送并發(fā)表→客戶接收錄用通知,支付余款→雜志出版并寄送客戶→客戶確認(rèn)收到。鳴網(wǎng)系學(xué)術(shù)網(wǎng)站,對(duì)所投稿件無(wú)稿酬支付,謝絕非學(xué)術(shù)類稿件的投遞!
 

文章標(biāo)題:淺析C語(yǔ)言程序的掛起錯(cuò)誤及解決策略

轉(zhuǎn)載請(qǐng)注明來(lái)自:http://m.anghan.cn/fblw/dianxin/ruanjiankaifa/4163.html

相關(guān)問題解答

SCI服務(wù)

搜論文知識(shí)網(wǎng) 冀ICP備15021333號(hào)-3

主站蜘蛛池模板: 国产农村精品一级毛片视频 | 国产日韩不卡免费精品视频 | 天天躁日日躁狠狠躁中文字幕老牛 | 国产成年网站v片在线观看 国产成版人视频网站免费下 | 色婷婷狠狠干 | 农村寡妇一级毛片免费看视频 | 亚洲视频精品在线观看 | 久久国产精品一区二区三区 | 一级毛片免费观看不卡的 | 永久免费aavv视频播放 | 小明明看看视频永久免费网 | 丁香综合在线 | 在线亚洲精品 | 日本人伦一区二区三区 | 欧美日韩专区国产精品 | 强开小嫩苞一区二区三区l 婷婷丁香色综合狠狠色 | 欧美一级毛片免费看 | 999精品视频在线观看 | 国产精品毛片在线大全 | 日韩毛片免费看 | 色婷婷狠狠久久综合五月 | 亚洲在线观看免费视频 | 黑人猛男大战俄罗斯白妞 | 2020国产成人精品免费视频 | 91精品欧美综合在线观看 | 宅男在线永久免费观看99 | 国产精品一库二库三库 | 国产特级毛片 | 成人看片黄在线观看 | 日本乱人伦片中文字幕三区 | 日韩精品无码一区二区三区 | 日本黄大片在线观看视频 | 国产成人精品久久免费动漫 | 99视频都是精品热在线播放 | 国产精品日本欧美一区二区 | 国产 欧美 日产中文 | 91麻豆国产极品在线观看洋子 | 小明看看在线 | 美女扒开胸露出奶乳免费 | 亚洲精品欧洲一区二区三区 | 色的视频在线观看免费播放 |