C語言程序的基本語句能完成功能的體會 杜鑫達

 

通過一學期對C語言的學習,我感覺學習C語言是有一定難度卻又是非常有趣的科目。也是很有幫助的,特別是對將要面對的計算機二級考試。 這段時間的學習我知道了C語言的基本特點有以下幾點:

 1.語言簡潔,使用靈活方便。

 2.運算符豐富,表達能力強。 

 3.數計類型豐富。 

 4.目標程序質量高,具有面向硬件系統的特點。

 5.具有結構化的控制語句和模塊化的程序結構。

 6.具有編譯預處理功能。 

 7.程序設計自由度大,可移植性好。


 這段時間學習使我掌握了:

 一、 我學習了C語言的數據類型、常量與符號常量、變量、C語言的運算符和表達式、賦值運算符和賦值表達式、自增自減運算符以及逗號表達式等。 


二、 這章介紹了結構化程序的三種基本結構、C語句概述、數據輸出包括字符輸出函數putchar()和格式輸出函數printf()、數據輸入包括字符輸入函數getchar()和格式輸入函數scanf(),還有一些簡單的C語程序設計舉列等。 


前幾天一直在看C++語法,所以對一些比較實際的例子總感到比較抽象,但是那也是一個必需階段,可能大家和我的學習方式不一樣,但從剛接觸程序到現在來看,發現這樣學習語言的方法挺不錯的。 

經過第一階段對語法的學習,我覺得實例階段應該是一個過渡階段吧,通過前一階段對語法的學習之後,可能有很多概念我們都比較模糊,或者說很多東西太抽象了,這就爲我們第二個階段的學習做好了實例化的準備,可以這樣說吧,第一個階段就我們爲我們的學習一樣東西而構建的一個類,裏面講了我們應該在這裏面要做什麼?第二階,也就是本階段,我們就應該去把前一段的東西具體化(實例化先前創建的類),那怎麼個具體化呢,呵呵!說白了,去練習一些小例子,從網上下載的電子書上有很多這方面的例子的,如果有自己去書店買書的話,裏面也應該提供了不少,裏面的例子,我是每次都打了一遍,也許有的人不會親自去用手打一遍,什麼copy等,當然這樣也行,但我個人認爲,對於初學者來說,最好還是自己動手打一遍比較好,畢竟這些東西對我們來說,都比較陌生,如果每個字都自己打完的話,有些代碼你不想記住也難了,在這裏,我們得弄懂練習的每一個例子,如果能把一些例子稍稍修改,弄懂裏面精髓的東西,讓自己知道爲什麼這樣做,那麼是最好不過的了,我平時練習時,這一步是少不了的,都習慣了,所以也就成了條件反射,想不這樣都不行。最後,我們就應該匯一下總,把前面做過的例子裏所用的技術理一下,再做一個比較大的例子,儘量把到目前爲止所懂的知識全部應用到裏面去,只是儘量,當然有些東西是不能集成到一起的,也是是代碼之間的排斥性。 

這是個人的一點學習心得,希望能更好的運用到學習中去。C語言是一門很有用的、對於我們的就業很實際的語言,學習好C語言是一項必須而實際的任務。我們必須要好好掌握。



#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=2,density=50,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])

{

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 發射子彈\n 設置:請按Esc\n 開始遊戲:任意鍵\n                               by yan_xu");

if(getch()==27)setting();

}

飛機遊戲中就用到了我們許多學到的知識 像if語句  switch語句 case語句 等等

而飛機遊戲的結構很簡單先設置函數  再設置變量  之後再設置輸入變量 最後輸出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章