第一节课作业
1
C語言是在國內外廣泛使用的一種計算機語言。其語言功能豐富、表達能力強、使用靈活方便、既具有高級語言的優點,又具有低級語言的許多特點,適合編寫系統軟件。其功能強大,不僅用在計算機上廣泛用在電子,機械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,無一例外,哪一個不是C語言寫的?很多新型的語言如,C++,Java,C#,J#,perl...都是衍生自C語言。掌握了C語言,可以說你就掌握了很多門語言。
學習C程序這門課一年了,這是我們學的第一門專業課,在大學里C語言不但是計算機專業的必修課程而且也是非計算機專業學習計算機基礎的一門必修課程。所以作為我這個計算機專業的學生來說當然十分重要,老師在第一節課說過,C語言是計算機的基礎,大多數軟件都需要用C語言來編寫,通過一個年的學習,使我由初步掌握簡單的應試知識到完成高難度的深入編程,如我們在編寫一個較大的程序時應該把它分開成幾個小程序來看,這樣會容易得多。同時,我覺得C語言應該是操作和理論相結合的課程,在不斷地編寫中去思考,兩者是不可分割的。
在學習一年C語言的過程中我也在慢慢探索怎樣才能學好C語言,并總結了一點經驗:
要了解C語言就要從語法規為基礎來學習起,首先要是要了解它的結構,比如變量,首先要了解變量的定義方式(格式),其意義是什么(定義變量有什么用);其次就是要我要怎么去運用它(我要用什么型式去應用它)。在C語言的命令行中所有的語句都是有它自己的一定格式和形式出現在我們面前,所以我們在學習某種語句或命令時你首先要了解的就是它的規則是什么、有什么用、怎么實現等。這些都是語法基礎也是C語言的基礎如果把它們都了解很好了,那么你編起程序來就很得心應手了。比如說IFELSE和SWITCHCASE這兩種條件語句都是用來判斷執行功能的,那我要什么時侯用IF什么時侯用SWITCH呢?如果你很好地了解它們的結構和作用的話那么就知道:若它的條件分支是多個而且條件的值是整數或是一個字符值時就會選SWITCH而不會選IF。因為如果條件分支太多時要用IF語句,這樣一定會出現IF的嵌套,如果IF的嵌套越多時程序的開銷就會隨著增大,這樣對整個程序的運行效率就大在降底。而SWITCH就不同,它只要比較一次就可以找出條件的結果比起嵌套IF它的效率就大大的提高了很多。不過SWITCH也有它的約束條件,就是它的條件值一定要是一個整型數或是一個字符值,所以碰到它不能解決的問題時我們也會通常使用IF語句,畢竟IF語句它使用起來也比較方便用的范圍也比較廣。所以說了解語法規則是很重要的,如果沒有一個良好的語法基礎是很難編出一個好的程序!學習好基礎后我們就可以開始來編程了。
2
#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;??? //?? 通過if switch語句 區判斷從鍵盤上輸入什么 然后進行相應的處理?
?????????????? 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++)????? //? 1111通過循環 和判斷語句規劃整體的框架?
? {
??? 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.小>> ");//?? 111 通過?? do while語句和switch語句去執行開始界面?
???? 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();
}
轉載于:https://blog.51cto.com/11521004/1774452
總結
- 上一篇: 谈论XSS
- 下一篇: Spark集群搭建中的问题