溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言程序設計感想

發(fā)布時間:2020-07-10 19:56:40 來源:網絡 閱讀:436 作者:zhuzeng000 欄目:網絡安全

C語言課程設計和現代計算機技術的實際應用相結合是我們在本階段學完理論課程之后對自己該方面的能力的一次很好的檢驗從開始的算法思路到運行調試后的美觀的圖形界面以及另人興奮的可用程序都是一個很好的學習和鍛煉的過程。使我們鞏固了原有的理論知識培養(yǎng)了我們靈活運用和組合集成所學過知識及技能來分析、解決實際問題的能力。使我們體會到自身知識和能力能在實際中的應用和發(fā)揮。不但可以激發(fā)創(chuàng)新意識還可以開發(fā)創(chuàng)造能力、培養(yǎng)溝通能力。這次實習時間雖然僅有一個星期但確實使我受益非淺。通過實習我豐富了計算機操作經驗更加深了對C語言的了解熟悉了其環(huán)境更

   我學習了C語言的數據類型、常量與符號常量、變量、C語言的運算符和表達式、賦值運算符和賦值表達式、自增自減運算符以及逗號表達式等。 覺得實例階段應該是一個過渡階段吧,通過前一階段對語法的學習之后,可能有很多概念我們都比較模糊,或者說很多東西太抽象了,這就為我們第二個階段的學習做好了實例化的準備,可以這樣說吧,第一個階段就我們?yōu)槲覀兊膶W習一樣東西而構建的一個類,里面講了我們應該在這里面要做什么?第二階,也就是本階段,我們就應該去把前一段的東西具體化(實例化先前創(chuàng)建的類),那怎么個具體化呢,說白了,去練習一些小例子,從網上下載的電子書上有很多這方面的例子的,如果有自己去書店買書的話,里面也應該提供了不少,里面的例子,我是每次都打了一遍,也許有的人不會親自去用手打一遍,什么copy等,當然這樣也行,但我個人認為,對于初學者來說,最好還是自己動手打一遍比較好,畢竟這些東西對我們來說,都比較陌生,如果每個字都自己打完的話,有些代碼你不想記住也難了,在這里,我們得弄懂練習的每一個例子,如果能把一些例子稍稍修改,弄懂里面精髓的東西,讓自己知道為什么這樣做,那么是最好不過的了,我平時練習時,這一步是少不了的,都習慣了,所以也就成了條件反射,想不這樣都不行。最后,我們就應該匯一下總,把前面做過的例子里所用的技術理一下,再做一個比較大的例子,盡量把到目前為止所懂的知識全部應用到里面去,只是盡量,當然有些東西是不能集成到一起的,也是是代碼之間的排斥性。

二、飛機游戲(或其他軟件)中上學期學習的基本C語言語句是怎么使用的?

        之前學習了好多類似于什么printf,scanf,if,else函數等等,總結了一下大概有以下幾個使用方式:

        1、 表達式語句,空語句,復合語句。
        2、 數據的輸入與輸出,輸入輸出函數的調用。
        3、 復合語句。
        4、 GOTO語句和語句標號的使用。
三、飛機游戲(或其他軟件)的結構的分析。

   按照老師要求對代碼進行了簡單的修改

  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);//菜單函數
void oper(void);//操作函數
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機初始位、界面寬度、敵機速度、敵機密度、得分、死亡
main(void)
{
    menu();
    oper();
}
void oper()
{
    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])
{
    int i,j;
    for(i=21;i>=0;i--)//從最后一行往上是為了避免把敵機直接沖出數組。
        for(j=0;j<width;j++)
        {
           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;
   break;
         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;
             break;
   case '2':
       density=30;
             break;
   case '3':
       density=40;
    break;
         default:
       printf("\n 錯誤,請重新選擇...\n");
         sw=1;
     }
  }while(sw);
  do
  {
     sw=0;
     printf("\n 敵機的飛行速度:1.快2.中3.慢>> ");
     switch(getche())
     {
       case '1':
    speed=2;
          break;
       case '2':
      speed=3;
         break;
       case '3':
      speed=4;
         break;
       default:
      printf("\n 錯誤,請重新選擇...\n");
       sw=1;
    }
  }while(sw);
  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 發(fā)射×××\n 設置:請按Esc\n 開始游戲:任意鍵\n                               by zhang-xun");
   if(getch()==27)
   setting();
}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI