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();