當前位置:首頁 » 編程語言 » c語言編小游戲

c語言編小游戲

發布時間: 2025-09-17 23:33:46

c語言能寫出什麼樣有意思的小程序

  1. C語言是一門通用計算機編程語言,應用廣泛。

  2. C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

  3. C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

  4. 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。

程序源代碼:

main()

{int i,j,k;printf( );for(i=1;i<5;i++)/*以下為三重循環*/for(j=1;j<5;j++)

for (k=1;k<5;k++),{f (i!=ki!=jj!=k) /*確保i、j、k三位互不相同*/printf(%d,%d,%d ,i,j,k); }}

題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提 成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

程序源代碼:

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf(%ld,i);

bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf(bonus=%d,bonus);

}

6.題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後 的結果滿足如下條件,即是結果。

程序源代碼:

#include math.h

main()

{

long int i,x,y,z;

for (i=1;i<100000;i++)

{ x=sqrt(i+100); /*x為加上100後開方後的結果*/

y=sqrt(i+268); /*y為再加上168後開方後的結果*/

if(x*x==i+100y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/

printf( %ld ,i);

}

}

7.題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。

程序源代碼:

main()

{

int day,month,year,sum,leap;

printf( please input year,month,day );

scanf(%d,%d,%d,year,month,day);

switch(month)/*先計算某月以前月份的總天數*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

defaultrintf(data error);break;

}

sum=sum+day; /*再加上某天的天數*/

if(year%400==0||(year%4==0year%100!=0))/*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1month>2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(It is the %dth day.,sum); }

8.題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

程序源代碼:

main()

{

int x,y,z,t;

scanf(%d%d%d,x,y,z);

if (x>y)

/*交換x,y的值*/

if(x>z)

/*交換x,z的值*/

if(y>z)

/*交換z,y的值*/

printf(small to big: %d %d %d ,x,y,z);

}

9.題目:用*號輸出字母C的圖案。

程序分析:可先用<|>*<|>號在紙上寫出字母C,再分行輸出。

程序源代碼:

#include stdio.h

main()

{

printf(Hello C-world! );

printf( **** );

printf( * );

printf( * );

printf( **** );

}

10.題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!

程序分析:字元共有256個。不同字元,圖形不一樣。

程序源代碼:

#include stdio.h

main()

{

char a=176,b=219;

printf(%c%c%c%c%c ,b,a,a,a,b);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,a,a,b,a,a);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,b,a,a,a,b); }

11.題目:輸出9*9口訣。

程序分析:分行與列考慮,共9行9列,i控制行,j控制列。

程序源代碼:

#include stdio.h

main()

{

int i,j,result;

printf( );

for (i=1;i<10;i++)

{ for(j=1;j<10;j++)

{

result=i*j;

printf(%d*%d=%-3d,i,j,result);/*-3d表示左對齊,佔3位*/

}

printf( );/*每一行後換行*/

}

}

12.題目:要求輸出國際象棋棋盤。

程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

程序源代碼:

#include stdio.h

main()

{

int i,j;

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

{

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

if((i+j)%2==0)

printf(%c%c,219,219);

else

printf( );

printf( );

}

}

13.題目:列印樓梯,同時在樓梯上方列印兩個笑臉。

程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。

程序源代碼:

#include stdio.h

main()

{

int i,j;

printf( );/*輸出兩個笑臉*/

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf(%c%c,219,219);

printf( );

}

② 用C語言編寫的小游戲代碼是什麼

「猜數字小游戲」,每個數字後按空格,最後按回車確認

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int a[4],b[4];

int count=0; //計算猜測次數

void csh( ); //初始化

void start( ); //開始游戲

int main( )

{ csh( );

start( );

}

void csh( ) //初始化

{ printf(" 猜 數 字 小 游 戲 ");

printf(「 猜四個數字,如數字與順序都正確記為A,數字正確位置不對記為B. 」);

}

void start( ) //開始游戲

{int m,n; //m是完全猜對的個數,n是順序不對的個數

while(1)

{srand((unsigned)time(NULL)); //初始化隨機數發生器srand( )

while(1) { for(int i=0;i<4;i++) a[i]=rand( )%10; //rand( )函數每次隨機產生一個0-9的數

if( (a[3]!=a[2]&&a[3]!=a[1]&&a[3]!=a[0])&&

(a[2]!=a[1]&&a[2]!=a[0])&&a[1]!=a[0] ) break; } //4個隨機數各自不相等

printf(" 請依次輸入4個一位整數: ");

while(1)

{for(int i=0;i<4;i++) scanf(「%d」,&b[i]);

printf(" 你輸入的是:%d %d %d %d ",b[0],b[1],b[2],b[3]);

m=0;n=0;

for(int i=0;i<4;i++)

{for(int j=0;j<4;j++)

{ if(b[i]==a[j]&&i==j)m=m+1; if(b[i]==a[j]&&i!=j)n=n+1; }

}

count=count+1;

printf(" %dA %dB 你試了%d次 ",m,n,count);

if(m==4)break;

if(count==8){ count=0; break; }

}

printf(" ");

if(m==4)printf(" 你猜對了(^-^)! 就是:%d %d %d %d ",a[0],a[1],a[2],a[3]);

else printf(" 你輸了(T-T)!哈哈!應該是:%d %d %d %d ",a[0],a[1],a[2],a[3]);

int z;

printf(" (要繼續嗎?1或0) ");

scanf(「%d」,&z);

if(z==0) break;

}

}

③ C語言開發:如何用130行代碼,寫出"超火"微信小游戲—羊了個羊

近日,一款名為「羊了個羊」的微信小游戲在網路上迅速走紅。其獨特之處在於簡單的玩法與不尋常的關卡設計,這款游戲類似於三消類游戲《合成大西瓜》與《召喚神龍》的後續作品,以微游戲形式成為新王者。

游戲規則簡單:玩家需要通過點擊三個相同的圖案進行消除,未湊齊三個的圖案則暫時存放在底部的七個待選欄位中。當待選欄位滿時,游戲即告失敗。第一關旨在作為玩法教程,而當玩家進入第二關後,難度明顯提升。官方指出,「羊了個羊」是一款極難的闖關消除小游戲,其通關率極低,不足0.1%。

對於編程愛好者,我們或許能藉助所學知識自行開發一款類似的《羊了個羊(仿製版)》。為此,以下是所需的准備工作:

開發工具:建議使用VS2022/2019,同時安裝易X圖形庫插件。VScode用戶需額外配置開發環境。

素材准備:請在文章末尾查看獲取方式。

下面是源代碼概覽,代碼未私藏,歡迎嘗試編譯。

如遇問題,隨時聯系我獲取幫助。

此外,為了幫助初學者高效學習C語言/C++,分享以下資源:

視頻分享:整理多年學習的源碼、項目實戰視頻、項目筆記與基礎入門教程,群內交流提問編程問題。

歡迎轉行與學習編程的夥伴加入粉絲群,利用資源加速成長。把握時光,抓住成長機會。

加入【粉絲群】,與夥伴們一起學習C語言/C++/數據結構與演算法,共同進步。

④ 如何使用C語言編寫簡單小游戲

C語言是計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的.那麼,我們能不能通過編一些小游戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦 ,枯燥的事,它變得象電腦游戲一樣充滿好奇,富有樂趣。

例如2048這款游戲:

方法/步驟:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#include<windows.h>

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

  • //主函數

    int main()

    {

    int i,j;

    int n[SIZE][SIZE];

    char c=' ';

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

    {

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

    {

    n[i][j]=0;

    }

    }

    printf( "*********************** "

    " 2048(%dX%d) "

    " control:W/A/S/D "

    "press any key to begin "

    "*********************** ",SIZE,SIZE);

    getch();

    system("cls");

    //n[0][1]=2048;

    //n[0][3]=2048;

    while(1)

    {

    if(isempty(n))

    getn(n);

    putn(n);

    if(!isempty(n)&&isfull(n))

    break;

    sleep(200);

    c=getch();

    while(c!='w'&&c!='a'&&c!='s'&&c!='d')

    c=getch();

    math(n,c);

    system("cls");

    }

    printf(" Game Over! ",score);

    return 0;

    }

  • //函數

    void putn(int n[][SIZE])

    {

    int i,j;

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

    {

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

    printf("| ");

    printf("| ");

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

    {

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

    printf("| ");

    else

    printf("|%4d ",n[i][j]);

    }

    printf("| ");

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

    printf("|_____");

    printf("| ");

    }

    printf("score: %d",score);

    }

    void getn(int n[][SIZE])

    {

    int a,b;

    a=rand()%SIZE;

    b=rand()%SIZE;

    while(n[a][b]!=0)

    {

    a=rand()%SIZE;

    b=rand()%SIZE;

    }

    n[a][b]=2;

    }

    int isempty(int n[][SIZE])

    {

    int i,j,count=0;

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

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

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

    count++;

    return count;

    }

    int isfull(int n[][SIZE])

    {

    int i,j,count=0;

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

    {

    for(j=1;j<SIZE-1;j++)

    {

    if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

    count++;

    }

    }

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

    {

    for(i=1;i<SIZE-1;i++)

    {

    if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

    count++;

    }

    }

    return count>0?0:1;

    }

    void math(int n[][SIZE],char c)

    {

    switch(c)

    {

    case 'w':tow(n);break;

    case 'a':toa(n);break;

    case 's':tos(n);break;

    case 'd':tod(n);break;

    default :;

    }

    }

    void tow(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

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

    {

    for(a=0;a<SIZE;a++)

    {

    for(i=0;i<SIZE-1;i++)

    {

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

    {

    n[i][j]=n[i+1][j];

    n[i+1][j]=0;

    }

    }

    }

    }

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

    {

    for(a=0,i=0;i<SIZE;i++)

    {

    if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i+1][j])

    {

    m[a++]=n[i][j]+n[i+1][j];

    score+=m[a-1];

    n[i][j]=0,n[i+1][j]=0;

    }

    }

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

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void toa(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

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

    {

    for(a=0;a<SIZE;a++)

    {

    for(j=0;j<SIZE-1;j++)

    {

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

    {

    n[i][j]=n[i][j+1];

    n[i][j+1]=0;

    }

    }

    }

    }

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

    {

    for(a=0,j=0;j<SIZE;j++)

    {

    if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a++]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j+1])

    {

    m[a++]=n[i][j]+n[i][j+1];

    score+=m[a-1];

    n[i][j]=0,n[i][j+1]=0;

    }

    }

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

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

    void tos(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(i=SIZE-1;i>0;i--)

    {

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

    {

    n[i][j]=n[i-1][j];

    n[i-1][j]=0;

    }

    }

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    for(a=SIZE-1,i=SIZE-1;i>=0;i--)

    {

    if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i-1][j])

    {

    m[a--]=n[i][j]+n[i-1][j];

    score+=m[a+1];

    n[i][j]=0,n[i-1][j]=0;

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    n[i][j]=m[i];

    m[i]=0;

    }

    }

    }

    void tod(int n[][SIZE])

    {

    int i,j,a;

    int m[SIZE];

    for(a=0;a<SIZE;a++)

    m[a]=0;

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1;a>=0;a--)

    {

    for(j=SIZE-1;j>0;j--)

    {

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

    {

    n[i][j]=n[i][j-1];

    n[i][j-1]=0;

    }

    }

    }

    }

    for(i=SIZE-1;i>=0;i--)

    {

    for(a=SIZE-1,j=SIZE-1;j>=0;j--)

    {

    if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

    {

    m[a--]=n[i][j];

    n[i][j]=0;

    }

    else if(n[i][j]==n[i][j-1])

    {

    m[a--]=n[i][j]+n[i][j-1];

    score+=m[a+1];

    n[i][j]=0,n[i][j-1]=0;

    }

    }

    for(j=SIZE-1;j>=0;j--)

    {

    n[i][j]=m[j];

    m[j]=0;

    }

    }

    }

⑤ 求個用VC++C語言編寫的小游戲

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{

int random();
int mopai(int shan);
int yourchusha(int shan);
int i,xingcan=0,temp,choice;
int yoursha=0,yourshan=0;
int itssha=0,itsshan=0;
int yourhp=4,itshp=4;

printf("三國殺簡易版:\n");
printf("開始游戲:\n");
srand( (unsigned)time( NULL ) );
for(i=1;i<=4;i++)
{
random();//random() 方法可返回介於 0 ~ 1 之間的一個隨機數。
if(!random())
yourshan+=1;
else yoursha+=1;
}
for(i=1;i<=4;i++)
{
random();
if(!random())
itsshan+=1;
else itssha+=1;
}
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);

while(yourhp&&itshp)
{
printf("\n你的行動開始:\n");
printf("\n摸牌階段:\n");
temp=mopai(xingcan);
yourshan+=temp;
yoursha+=(2-temp);
xingcan=0;
printf("你的手牌:殺%d張,閃%d張\n",yoursha,yourshan);
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);

printf("\n出牌階段:\n");
printf("請選擇:\n");
printf("1.出殺 2.棄牌\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("輸入錯誤,請重新輸入\n");
else break;
}
if(choice==1)
{
if(yoursha)
{
yoursha-=1;
if(yourchusha(itsshan))
itsshan-=1;
else
{
itshp-=1;
}
}
else printf("你沒有殺,請棄牌\n");
}
if(!itshp)
break;
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);

printf("棄牌階段:\n");
while(yoursha+yourshan-yourhp>0)
{
printf("你需要棄掉%d張卡牌,請逐張棄牌:\n",yoursha+yourshan-yourhp);
printf("1.棄一張殺 2.棄一張閃\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("輸入錯誤,請重新輸入\n");
else break;
}
switch(choice)
{
case 1:
{
if(yoursha)
yoursha-=1;
else printf("你沒有殺,請重新選擇\n");
break;
}
case 2:
{
if(yourshan)
yourshan-=1;
else printf("你沒有閃,請重新選擇\n");
break;
}
}
}
printf("你的行動結束。\n");
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);

printf("計算機的行動開始:\n");
printf("摸牌階段:\n");
temp=mopai(xingcan);
itsshan+=temp;
itssha+=(2-temp);
xingcan=0;
printf("計算機手牌數:%d張\n",itssha+itsshan);
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);

printf("出牌階段:\n");
if(itssha)
{
itssha-=1;
printf("殺\n");
printf("計算機對你出了一張殺,請出一張閃\n");
printf("1.確定 2.取消\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2){
printf("輸入錯誤,請重新輸入\n");
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
}
else break;
}
switch(choice)
{
case 1:
{
if(yourshan)
{
yourshan-=1;
printf("閃\n");
break;
}
else printf("你沒有閃\n");
}
case 2:
{
yourhp-=1;
printf("計算機對你造成一點傷害\n");
}
}
}
if(!yourhp)
break;
printf("計算機手牌數:%d張\n",itssha+itsshan);

printf("棄牌階段:\n");
if(itssha+itsshan-itshp>0)
{
if(itshp>itsshan)
{
printf("計算機棄殺%d張\n",itssha+itsshan-itshp);
itssha-=(itssha+itsshan-itshp);
}
else
{
printf("計算機棄殺%d張,閃%d張\n",itssha,itsshan-itshp);
itssha=0;
itsshan=itshp;
}
}
printf("計算機的行動結束。\n");
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機手牌數:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
}

if(!yourhp)
printf("很遺憾,計算機擊敗了你\n");
else printf("恭喜你,你擊敗了計算機\n");
printf("游戲結束,歡迎下次再來!\n");
printf("\n按任意鍵退出。");
getch();
return 0;
}
int random()
{
return rand()%3;
}

int mopai(int shan)
{
int i;
srand( (unsigned)time( NULL ) );
for(i=1;i<=2;i++)
{
random();
if(!random())
shan+=1;
}
return shan;
}

int yourchusha(int shan)
{
printf("殺 ");
if(shan)
{
printf("閃\n");
return 1;
}
else
{
printf("您對計算機造成一點傷害\n");
return 0;
}
}

⑥ 教你如何使用C語言編寫簡單小游戲

編寫程序,實現如下表所示的5-魔方陣。
17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方陣
問題分析
所謂「n-魔方陣」,指的是使用1〜n2共n2個自然數排列成一個n×n的方陣,其中n為奇數;該方陣的每行、每列及對角線元素之和都相等,並為一個只與n有關的常數,該常數為n×(n2+1)/2。
例如5-魔方陣,其第一行、第一列及主對角線上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主對角線上元素之和:17+5+13+21+9=65

n×(n2+1)/2=5×(52+1)/2=65
可以驗證,5-魔方陣中其餘各行、各列及副對角線上的元素之和也都為65。
假定陣列的行列下標都從0開始,則魔方陣的生成方法為:在第0行中間置1,對從2開始的其餘n2-1個數依次按下列規則存放:
(1)
假定當前數的下標為(i,j),則下一個數的放置位置為當前位置的右上方,即下標為(i-1,j+1)的位置。
(2)
如果當前數在第0行,即i-1小於0,則將下一個數放在最後一行的下一列上,即下標為(n-1,j+1)的位置。
(3)
如果當前數在最後一列上,即j+1大於n-1,則將下一個數放在上一行的第一列上,即下標為(i-1,0)的位置。
(4)
如果當前數是n的倍數,則將下一個數直接放在當前位置的正下方,即下標為(i+1,j)的位置。
演算法設計
在設計演算法時釆用了下面一些方法:
定義array()函數,array()函數的根據輸入的n值,生成並顯示一個魔方陣,當發現n不是奇數時,就加1使之成為奇數。
使用動態內存分配與釋放函數malloc()與free(),在程序執行過程中動態分配與釋放內存,這樣做的好處是使代碼具有通用性,同時提高內存的使用率。
在分配內存時還要注意,由於一個整型數要佔用兩個內存,因此,如果魔方陣中要存放的數有max個,則分配內存時要分配2*max個單元,從而有malloc(max+max)。在malloc()函數中使用max+max而不是2*max是考慮了程序運行的性能。
顯然應該使用二維數組來表示魔方陣,但雖然數組是二維形式的,而由於內存是一維線性的,因此在存取數組元素時,要將雙下標轉換為單個索引編號。在程序中直接定義了指針變數來指向數組空間,即使用malloc()函數分配的內存。

熱點內容
手把手win7搭建web伺服器 發布:2025-09-18 01:25:53 瀏覽:725
硬碟緩存128m 發布:2025-09-18 01:15:13 瀏覽:752
蘋果手機設備密碼是指什麼 發布:2025-09-18 01:02:26 瀏覽:466
asp門戶網站源碼 發布:2025-09-18 00:54:00 瀏覽:448
java資料庫例子 發布:2025-09-18 00:53:58 瀏覽:219
sh腳本輸出 發布:2025-09-18 00:48:10 瀏覽:257
我的世界伺服器箱里的東西沒了 發布:2025-09-18 00:39:20 瀏覽:934
java數字轉大寫 發布:2025-09-18 00:25:58 瀏覽:312
網路編程百度雲 發布:2025-09-18 00:19:52 瀏覽:125
安卓手機供電在哪裡 發布:2025-09-18 00:08:38 瀏覽:394