天天看點

第一節課作業150206309

C語言作為計算機程式設計語言,具有功能強、語句表達簡練、控制和資料結構豐富靈活、程式時空開銷小的特點。她具有諸如Pascal、FORTRAN、COBOL等通用程式設計語言的特點,又具有彙編語言中的為、位址、寄存器等概念,擁有其他許多進階語言所沒有的低層操作能力;它既适用于編寫系統軟體,又可用來編寫應用軟體。C語言的這些特點與其發展過程是密不可分的。

  這一篇部落格大概包含兩點,C語言的基本語句,俄羅斯方塊(C語言)中的語句使用以及它的大概的一個結構分析。

一、C語言的基本語句

  通過将近一學期C語言的學習,我們已經大緻學習到了一些C語言程式的基本語句。這些語句,有的是每一次的程式設計必不可缺少的語句,有的是構成複雜語句的基本,下面我将列舉幾個語句:

  1、printf語句    

    printf函數在C語言當中是輸出函數,其基本格式為printf(“ ”);在“”中間輸入自己想要輸入的内容,這是C語言程式中唯一可是使用中文的語句。

  2、scanf語句    

   scanf函數是輸入函數,若是你想要從鍵盤輸入一些内容給你的程式,那麼scanf函數是不可缺少的一句。若你定義的變量是符号變量,那麼你也可以選擇用getchar函數來輸入你想輸入的内容。

  3、循環控制語句

     循環控制結構(又稱重複結構)是程式中的另一個基本結構。在實際問題中,經常需要進行大量的重複處理,循環結構可以使我們隻寫很少的語句,而讓計算機反複執行,進而完成大量類同的計算。

  4、while語句

     while語句是當型循環控制語句,一般形式為:while <表達式>語句;

   語句部分稱為循環體,當需要執行多條語句時,應使用複合語句。 while語句其特點是先判定,後執行,若條件不成立,有可能一次也不執行。

5、do... while 語句

    在C語句中,直到型循環的語句是do . . . while ,它的一般形式為:  do 語句while <表達式>。

  其中語句通常為複合語句,稱為循環體。其基本特點是:先執行後判定,是以,循環體至少被執行一次。但需要注重的是,do. . .while與标準的直到型循環有一個極為重要的差別,直到型循環是當條件為真時結束循環,而do. . .while語句恰恰相反,當條件為真時循環,一旦條件為假,立即結束循環,請注重do. . .while語句的這一特點。

6、for 語句

    for語句是循環控制結構中使用最廣泛的一種循環控制語句,非凡适合已知循環次數的情況。它的一般形式為:    for (<表達式1 >;<表達式2 > ;<表達式3>) 語句。

     for語句很好地展現了正确表達循環結構應注重的三個問題: 1) 控制變量的初始化。2) 循環的條件。3) 循環控制變量的更新。

表達式1:一般為指派表達式,給控制變量賦初值。表達式2:關系表達式或邏輯表達式,循環控制條件;表達式3:一般為指派表達式,給控制變量增量或減量。語句:循環體,當有多條語句時,必須使用複合語句。

  首先計算表達式1,然後計算表達式2,若表達式2為真,則執行循環體;否則,退出for循環,執行for循環後的語句。假如執行了循環體,則循環體每執行一次,都計算表達式3,然後重新計算表達式2,依此循環,直至表達式2的值為假,退出循環。

7、數組

  在今天看到的三個C語言程式當中,數組被大量的應用,我想數組可能是完成一個進階C語言的程式的一個基礎。數組的特點是,一對一的對應輸入與輸出。

  以上羅列出的七條語句是衆多C語言語句中的基本以及最常用的幾條語句,若是想要完成一個巨大的程式,那麼我們需要掌握函數的調用以及函數的輸出。

   通過c語言編寫一個射擊類的打飛機小遊戲,可以通過鍵盤來進行遊戲,操作方法是“a”“d”“w”或者“←”“↑”“→”來控制,擊中敵機可獲得積分,被敵機撞中死亡一次,每次遊戲有3次生還機會,遊戲結束後可選擇是否重新開始遊戲。

二、飛機遊戲(或其他軟體)的結構的分析。

         1)該程式采用函數組成子產品化結構

         2)main函數中,首先調用menu()函數産生菜單

         3)然後通過不停接收使用者的按鍵,分别判斷是什麼操作

         4)然後設定飛機和×××移動

         5)顯示

三、#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

#define N 35

void print(int [][N]);//輸出函數

void movebul(int [][N]);//×××移動函數

void movepla(int [][N]);//敵機移動函數

void setting(void);//設定函數

void menu(void);//菜單函數

int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機初始位、界面寬度、敵機速度、敵機密度、得分、死亡

main(void)

{

    menu();

int i=0,j=0;

    scr[21][pl]=1;

    scr[0][5]=3;

    while(1)

    {

 if(kbhit())

 switch(getch())//控制左右移動和進入菜單

      {

     case 'a':case 'A':

      if(pl>0)

     scr[21][pl]=0,scr[21][--pl]=1;

  break;

          case 'd':case 'D':

      if(pl<width-2)

     scr[21][pl]=0,scr[21][++pl]=1;

               break;

          case 'w':case 'W':

      scr[20][pl]=2;

      break;

 case 27 :

     setting();

              break;

      }

 if(++j%density==0)//控制生産敵機的速度

    j=0;srand(time(NULL));

         scr[0][rand()%width]=3;

      if(++i%speed==0)//控制敵機移動速度,相對于×××移動速度

         movepla(scr);

      movebul(scr);

      print(scr);

      if(i==30000)

    i=0;//以免i 越界

   }

}

void print(int a[][N])

   system("cls");

   int i,j;

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

   {

     a[i][width-1]=4;

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

  if(a[i][j]==0)

     printf(" ");

       if(a[i][j]==1)

          printf("\5");//輸出我機的符号

       if(a[i][j]==2)

     printf(".");//×××

       if(a[i][j]==3)

     printf("\3"); //輸出敵機符号

       if(a[i][j]==4)

     printf("|");

       if(i==0&&j==width-1)

     printf("得分:%d",score);//右上角顯示得分

       if(i==1&&j==width-1)

     printf("死亡:%d",death);

       if(i==2&&j==width-1)

     printf("設定:Esc");

       if(i==3&&j==width-1)

     printf("Copyright:王攀");

     }

     printf("\n");

  }

void movebul(int a[][N])

    int i,j;

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

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

        {

          if(i==0&&a[i][j]==2)

    a[i][j]=0;

     if(a[i][j]==2)

          {

             if(a[i-1][j]==3)

   score+=10,printf("\7");

             a[i][j]=0,a[i-1][j]=2;

          }

        }

void movepla(int a[][N])

    for(i=21;i>=0;i--)//從最後一行往上是為了避免把敵機直接沖出數組。

           if(i==21&&a[i][j]==3)

     a[i][j]=0;//底行指派0 以免越界。

           if(a[i][j]==3)

     a[i][j]=0,a[i+1][j]=3;

    if(a[20][pl]==3&&a[21][pl]==1)

 death++;

void setting(void)

     int sw=0,i,j;

     system("cls");

     do{sw=0;printf("\n 遊戲界面的大小:1.大2.小>> ");

     switch(getche())

     {

         case '1':

   width=34;

break;

         case '2':

   width=24;

         default:

    printf("\n 錯誤,請重新選擇...\n");

         sw=1;

    while(sw);

    do

      sw=0;

      printf("\n 請選擇敵機密度:1.大2.中3.小>> ");

      switch(getche())

          case '0':

    density=10;

             break;

          case '1':

    density=20;

case '2':

    density=30;

case '3':

    density=40;

  }while(sw);

  do

  {

     sw=0;

     printf("\n 敵機的飛行速度:1.快2.中3.慢>> ");

       case '1':

 speed=2;

          break;

       case '2':

    speed=3;

         break;

       case '3':

    speed=4;

       default:

       sw=1;

    }

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

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

       scr[i][j]=0;

   scr[21][pl=9]=1;

   printf("\n 按任意鍵儲存...");

   getch();

void menu(void)

   printf("說明:按A D 控制我機左右飛行,W 發射×××\n 設定:請按Esc\n 開始遊戲:任意鍵\n                               by yan_xu");

   if(getch()==27)

   setting();

繼續閱讀