国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言初學者入門講座 第八講 轉移語句

2019-11-17 05:42:06
字體:
來源:轉載
供稿:網友

  程序中的語句通??偸前错樞蚍较?, 或按語句功能所定義的方向執行的。假如需要改變程序的正常流向, 可以使用本小節介紹的轉移語句。在C語言中提供了4種轉移語句:

  goto,break, continue和return。

  其中的return語句只能出現在被調函數中, 用于返回主調函數,我們將在函數一章中具體介紹。 本小節介紹前三種轉移語句。

  1.goto語句

  goto語句也稱為無條件轉移語句,其一般格式如下: goto 語句標號; 其中語句標號是按標識符規定書寫的符號, 放在某一語句行的
前面,標號后加冒號(:)。語句標號起標識語句的作用,與goto 語句配合使用。

  如: label: i++;
    loop: while(x<7);

  C語言不限制程序中使用標號的次數,但各標號不得重名。goto語句的語義是改變程序流向, 轉去執行語句標號所標識的語句。

  goto語句通常與條件語句配合使用??捎脕韺崿F條件轉移, 構成循環,跳出循環體等功能。

  但是,在結構化程序設計中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難。

  統計從鍵盤輸入一行字符的個數。

#include"stdio.h"
void main(){
 int n=0;
 PRintf("input a string/n");
 loop: if(getchar()!='/n')
 {
  n++;
  goto loop;
 }
 printf("%d",n);
} int n=0;
printf("input a string/n");
loop: if(getchar()!='/n')
{
 n++;
 goto loop;
}
printf("%d",n);  

  本例用if語句和goto語句構成循環結構。當輸入字符不為'/n'時即執行n++進行計數,然后轉移至if語句循環執行。直至輸入字符為'/n'才停止循環。

  break語句

  break語句只能用在switch 語句或循環語句中, 其作用是跳出switch語句或跳出本層循環,轉去執行后面的程序。由于break語句的轉移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為: break; 上面例題中分別在switch語句和for語句中使用了break 語句作為跳轉。使用break語句可以使循環語句有多個出口,在一些場合下使編程更加靈活、方便。

  continue語句

  continue語句只能用在循環體中,其一般格式是:

continue;

  其語義是:結束本次循環,即不再執行循環體中continue 語句之后的語句,轉入下一次循環條件的判定與執行。應注重的是, 本語句只結束本層本次的循環,并不跳出循環。

void main(){
 int n;
 for(n=7;n<=100;n++)
 {
  if (n%7!=0)
   continue;
  printf("%d ",n);
 }
}

  輸出100以內能被7整除的數。

int n;
for(n=7;n<=100;n++)
{
 if (n%7!=0)
  continue;
 printf("%d ",n);
}

  本例中,對7~100的每一個數進行測試,如該數不能被7整除,即模運算不為0,則由continus語句轉去下一次循環。只有模運算為0時,才能執行后面的printf語句,輸出能被7整除的數。

#include"stdio.h"
void main(){
 char a,b;
 printf("input a string:/n");
 b=getchar();
 while((a=getchar())!='/n'){
  if(a==b){
   printf("same character/n");
   break;
  }b=a;
 }
}

  檢查輸入的一行中有無相鄰兩字符相同。

char a,b;
printf("input a string:/n");
b=getchar();
while((a=getchar())!='/n'){
 if(a==b){
  printf("same character/n");
  break;
 }b=a;
}

  本例程序中,把第一個讀入的字符送入b。然后進入循環,把下一字符讀入a,比較a,b是否相等,若相等則輸出提示串并中止循環,若不相等則把a中的字符賦予b,輸入下一次循環。

  輸出100以內的素數。素數是只能被1 和本身整除的數??捎酶F舉法來判定一個數是否是素數。

void main(){
 int n,i;
 for(n=2;n<=100;n++){
  for(i=2;i<n;i++)
   if(n%i==0) break;
   if(i>=n) printf("/t%d",n);
  }
 } int n,i;
 for(n=2;n<=100;n++){
  for(i=2;i<n;i++)
   if(n%i==0) break;
   if(i>=n) printf("/t%d",n);
}

  本例程序中,第一層循環表示對1~100這100個數逐個判定是否是素數,共循環100次,在第二層循環中則對數n用2~n-1逐個去除,若某次除盡則跳出該層循環,說明不是素數。 假如在所有的數都是未除盡的情況下結束循環,則為素數,此時有i>=n, 故可經此判定后輸出素數。然后轉入下一次大循環。實際上,2以上的所有偶數均不是素數,因此可以使循環變量的步長值改為2,即每次增加2,此外只需對數n用2~n去除就可判定該數是否素數。這樣將大大減少循環次數,減少程序運行時間。

#include"math.h"
void main(){
 int n,i,k;
 for(n=2;n<=100;n+=2){
  k=sqrt(n);
  for(i=2;i<k;i++)
   if(n%i==0) break;
   if(i>=k) printf("/t%2d",n);
 }



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝感市| 宁津县| 民权县| 青田县| 石城县| 乐都县| 乌兰浩特市| 墨玉县| 呼和浩特市| 太白县| 泸州市| 衡阳市| 乐业县| 津市市| 厦门市| 永仁县| 万盛区| 安化县| 淳化县| 棋牌| 蕉岭县| 太原市| 洛宁县| 舟曲县| 临泽县| 新巴尔虎右旗| 白玉县| 建宁县| 汾阳市| 竹北市| 望谟县| 邵东县| 定兴县| 连州市| 获嘉县| 井陉县| 上林县| 攀枝花市| 攀枝花市| 松潘县| 绵竹市|