华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場 | 考試論壇  
全國  |             |          |          |          |          |         
  當(dāng)前位置:計算機(jī)等級 > 二級考試 > C語言程序設(shè)計 > C語言輔導(dǎo) > 文章內(nèi)容
  

計算機(jī)二級C語言考點解析:循環(huán)語句和循環(huán)函數(shù)

中華IT學(xué)院   【 】  [ 2017年9月5日 ]

  (三)、goto語句

  goto語句是一種無條件轉(zhuǎn)移語句,與BASIC中的goto語句相似。goto語句的使用格式為:

  goto 標(biāo)號;

  其中標(biāo)號是Turbo C 2.0中一個有效的標(biāo)識符,這個標(biāo)識符加上一個:一起出現(xiàn)在函數(shù)內(nèi)某處,執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號處并執(zhí)行其后的語句。標(biāo)號既然是一個標(biāo)識符,也就要滿足標(biāo)識符的命名規(guī)則。另外標(biāo)號必須與goto語句同處于一個函數(shù)中,但可以不在一個循環(huán)層中。通常goto語句與if條件語句連用,當(dāng)滿足某一條件時,程序跳到標(biāo)號處運(yùn)行。goto語句通常不用,主要因為它將使程序?qū)哟尾磺,且不易讀,但在多層嵌套退出時,用goto語句則比較合理。

  main()

  {

  int sn=0,i;

  for(i=1;i<=100;i++)

  {

  if(i==51) goto loop; /*如果i等于51,則跳出循環(huán)*/

  sn+=i; /*1+2+……+50*/

  }

  loop: ;

  printf(%d\n,sn);

  }

  可以看出,這兒的goto語句和break作用很類似。

  這兒的loop: ;

  printf(%d\n,sn);

  也可以寫成loop: printf(%d\n,sn);

  main()

  {

  int sn=0,i;

  for(i=1;i<=100;i++)

  {

  if(i==51) goto loop; /*如果i等于51,則跳出本次循環(huán)*/

  sn+=i; /*1+2+……+50+52+……+100*/

  loop: ;

  }

  printf(%d\n,sn);

  }

  可以看出這兒的loop語句和continue的作用類似。

  但是某些情況下又必須使用goto語句,否則會讓程序大大臃腫。如:

  main()

  {

  int i,j,k;

  printf(i j k\n);

  for(i=0;i<2;i++)

  for(j=0;j<3;j++)

  for(k=0;k<3;k++)

  {

  if(k==2) goto loop;

  printf(%d %d %d\n,i,j,k);

  }

  loop: ;

  }

  輸出結(jié)果為:

  i j k

  0 0 0

  0 0 1

  如果不使用goto語句,而使用break,continue語句,應(yīng)該這樣

  main()

  {

  int i,j,k;

  printf(i j\n);

  for(i=0;i<2;i++)

  {

  for(j=0;j<3;j++)

  {

  for(k=0;k<3;k++)

  {

  if(k==2) break;

  printf(%d %d %d\n,i,j,k);

  }

  if(k==2) break;

  }

  if(k==2) break;

  }

  }

  輸出結(jié)果為:

  i j k

  0 0 0

  0 0 1

  所以在同時跳出多層循環(huán)時,應(yīng)該使用goto語句。記住,所有的goto語句其實都是可以用break,continue代替的。

  下面舉幾個例子:

  1.求兩個整數(shù)的最大公約數(shù)。例如10和15的最大公約數(shù)是5。

  分析:最大公約數(shù)一定小于等于最小的那個數(shù)一半,同時能被兩數(shù)整除。

  main()

  {

  int num1,num2,i,min;

  scanf(%d%d,&num1,&num2);

  min=num1

  for(i=min/2;i>0;i--)

  if(num1%i==0&&num2%i==0) break;

  printf(最大公約數(shù)為%d\n,i);

  }

  2.求1!+2!+……+n!(n<10)

  main()

  {

  int n,i;

  long temp=1,sn=0; /*從9!以后,所得的值就超過了int范圍*/

  scanf(%d,&n);

  for(i=1;i<=n;i++)

  {

  temp*=i;

  sn+=temp; /*如果沒有這一步,求的就是n!*/

  }

  printf(%ld\n,sn);

  }

  那么想想,如果求1!+3!+5!+……+n!應(yīng)該怎么辦?

  3.判斷一個整數(shù)是不是素數(shù)(素數(shù)就是只能被本身和1整除的數(shù))。

  #include math.h

  main()

  {

  int num,i,flag=0;

  scanf(%d,&num);

  for(i=2;i

  {

  flag=0; /*標(biāo)志變量復(fù)位*/

  if(num%i==0)

  {

  flag=1;

  break;

  }

  }

  if(flag==0) printf(是素數(shù)\n);

  else printf(不是素數(shù)\n);

  }

  可以說,在所有的C語言書上,都有判斷素數(shù)的例題。它的編程思想是:把一個變量作為標(biāo)志變量,用來標(biāo)志是不是素數(shù);循環(huán)體是從2到sqrt(num),因為如果一個數(shù)不是素數(shù)的話,一定能分解成num=num1*num2,它們中的最小值一定小于sqrt(num),所以循環(huán)的時候只要到sqrt(num)就可以了。同時要注意變量復(fù)位的問題。

首頁 1 2 3 尾頁
分享到:
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營業(yè)執(zhí)照
宜君县| 西城区| 宜兰县| 胶南市| 闽侯县| 社旗县| 怀仁县| 巩义市| 台山市| 闵行区| 福海县| 光泽县| 花莲市| 青浦区| 合江县| 长兴县| 古丈县| 崇信县| 运城市| 桦川县| 闵行区| 镇安县| 延长县| 右玉县| 平泉县| 黄浦区| 沂南县| 洛宁县| 阳泉市| 卓尼县| 监利县| 安吉县| 五原县| 肥乡县| 巫溪县| 奉贤区| 天柱县| 朝阳县| 洪湖市| 苍梧县| 康定县|