當前位置:首頁 » 編程語言 » c語言有意思的代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言有意思的代碼

發布時間: 2023-06-17 02:08:43

A. 有什麼好玩的c語言代碼

哈哈~ C語言再配上easyx插件,可以開發很多好玩的游戲哦^_^這篇博文網頁鏈接基於easyx實現的小藍鯨跑酷游戲,有詳細開發文檔和源碼,也可以在這個網站上面搜索看看,還有其他很多好玩的程序源碼和開發文檔,一個干貨滿滿的博客

B. 請給我一段包含大部分基本語句的C語言代碼要比較有意思的

C語言基本語句
一、 表達式語句:
1、分類:(1)賦值語句 (2)函數調用語句(3)空語句
(1)賦值語句是賦值表達式加一個分號組成。i=1; x=a+b;
(2)函數調用語句是函數調用表達式後跟一全分號組成。 printf("hello.world\n");
(3)空語句是只有一個分號而沒有表達式的語句。 其形式為: ;
二、控制語句
1、if(條件)else
2、for語句
3、while語句
4、do...while語句
5、break語句
6、continue語句
7、return語句
三、例
1、
main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b){ t=a;a=b;b=t;}
if(a>c){ t=a;a=c;c=t;}
if(b>c){ t=b;b=c;c=t;}
printf("%5.2f,%5.2f,%5.2f",a,b,c);
}

2、main()
{
int n;
for(n=100;n<200;n++)
{ if(n%3==0) continue;
printf("%d\n",n);
}
}
3、main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{sum=sum+i;}
printf("sum=%d\n",sum);
} main()
{
int i,sum=0;
i=1;
while(i<=100)
{ sum+=i;
i++;
}
printf("sum=%d",sum);
}

一、 表達式語句:
1、分類:(1)賦值語句 (2)函數調用語句(3)空語句
(1)賦值語句是賦值表達式加一個分號組成。i=1; x=a+b;
(2)函數調用語句是函數調用表達式後跟一全分號組成。 printf("hello.world\n");
(3)空語句是只有一個分號而沒有表達式的語句。 其形式為: ;
二、控制語句
1、if(條件)else
2、for語句
3、while語句
4、do...while語句
5、break語句
6、continue語句
7、return語句
三、例
1、
main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b){ t=a;a=b;b=t;}
if(a>c){ t=a;a=c;c=t;}
if(b>c){ t=b;b=c;c=t;}
printf("%5.2f,%5.2f,%5.2f",a,b,c);
}

2、main()
{
int n;
for(n=100;n<200;n++)
{ if(n%3==0) continue;
printf("%d\n",n);
}
}
3、main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{sum=sum+i;}
printf("sum=%d\n",sum);
} main()
{
int i,sum=0;
i=1;
while(i<=100)
{ sum+=i;
i++;
}
printf("sum=%d",sum);
}

C. 誰有c語言一些運行起來結果很好玩的程序的代碼..

/*太大了估計你不想要,給你一個掃雷程序,turbo
C下才能編譯成功
空格:打標記
回車:掃雷
方向鍵:改變方向
*/
#include<stdio.h>
#include<conio.h>
#include<time.h>
void
adjust(int*,int*);
int
a[23][23],c[22][22],mm,nn;
int
roundmine(int,int);
void
spread();
main()
{
int
i,j,b[22][22],minenum,mine;
int
x,y,yy,s;
char
g,h,z;
int*x1;
int*y1;
time_t
t;
again:srand((unsigned)
time(&t));
textcolor(LIGHTGREEN);
for(i=2;i<=21;i++)
for(j=2;j<=21;j++)
{
gotoxy(i,j);
putch(219);
b[i][j]=1;
c[i][j]=1;
}
minenum=0;
for(i=1;i<=22;i++)
for(j=1;j<=22;j++)
{
a[i][j]=0;
if(i>1&&i<22&j>1&&j<22)
{if((s=rand()%10)>0)
a[i][j]=0;
else
if(s==0)
a[i][j]=1;
}
if(a[i][j])
minenum++;
}
gotoxy(50,2);
puts("dirction");
gotoxy(50,3);
puts("SPACE:mark");
gotoxy(50,4);
puts("ENTER:dig");
gotoxy(50,8);
printf("mine
num:%4d",minenum);
gotoxy(50,5);
printf("ESC:exit");
gotoxy(30,15);
puts("
");
gotoxy(30,20);
puts("
");
mine=minenum;
gotoxy(2,2);
x=2;y=2;
while(mine)
{
h=getch();
if(h=='H')
gotoxy(x,--y);
else
if(h=='P')
gotoxy(x,++y);
else
if(h=='K')
gotoxy(--x,y);
else
if(h=='M')
gotoxy(++x,y);
x1=&x;y1=&y;
adjust(x1,y1);
if(h=='
')
{
if(c[wherex()][wherey()])
if(b[wherex()][wherey()])
{
textcolor(LIGHTRED);
putch(16);
mine--;
gotoxy(59,8);
printf("%4d",mine);
gotoxy(x,y);
b[wherex()][wherey()]=0;
}
else
{
textcolor(LIGHTGREEN);
putch(219);
mine++;
gotoxy(59,8);
printf("%4d",mine);
gotoxy(x,y);
b[wherex()][wherey()]=1;
}
}
if(h=='\015')
{
mm=wherex();nn=wherey();
c[wherex()][wherey()]=0;
if(a[wherex()][wherey()])
{
for(i=2;i<=21;i++)
for(j=2;j<=21;j++)
{gotoxy(i,j);
if(a[i][j])
{textcolor(LIGHTRED);
putch(017);
}
}
break;
}
else
{spread();gotoxy(mm,nn);}
}
if(h=='\033')
exit(0);
}
yy=1;
for(i=2;i<=21;i++)
for(j=2;j<=21;j++)
if
(a[i][j]==1&&b[i][j]==1)
{gotoxy(30,15);
cprintf("You
lose!!");
yy=0;
}
if(yy)
{gotoxy(30,15);
cprintf("You
win!!");
}
gotoxy(30,20);
cprintf("Once
again(y/n)?");
z=getch();
if(z=='y')
goto
again;
}
void
adjust(int*
x,int*
y)
{
if(*x<2)
gotoxy(*x+=20,*y);
else
if(*x>21)
gotoxy(*x-=20,*y);
else
if(*y<2)
gotoxy(*x,*y+=20);
else
if(*y>21)
gotoxy(*x,*y-=20);
}
int
roundmine(int
x,int
y)
{
int
i,j,r=0;
for(i=x-1;i<=x+1;i++)
for(j=y-1;j<=y+1;j++)
if(a[i][j])
r++;
return
r;
}
void
spread()
{
int
r,i,j,x,y;
x=wherex();
y=wherey();
r=roundmine(x,y);
if(r)
{printf("%d",r);c[x][y]=0;}
else
if(r==0&&x>1&&x<22&&y>1&&y<22)
{
putchar('
');c[x][y]=0;
for(i=x-1;i<=x+1;i++)
for(j=y-1;j<=y+1;j++)
if(x>1&&x<22&&y>1&&y<22&&c[i][j])
{gotoxy(i,j);
spread();
}
}
}

D. c語言小游戲代碼

「貪吃蛇」C代碼,在dev C++試驗通過(用4個方向鍵控制)

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <time.h>

#include <Windows.h>

#define W 78 //游戲框的寬,x軸

#define H 26 //游戲框的高,y軸

int dir=3; //方向變數,初值3表示向「左」

int Flag=0; //吃了食物的標志(1是0否)

int score=0; //玩家得分

struct food{ int x; //食物的x坐標

int y; //食物的y坐標

}fod; //結構體fod有2個成員

struct snake{ int len; //蛇身長

int speed; //移動速度

int x[100]; //蛇身某節x坐標

int y[100]; //蛇身某節y坐標

}snk; //結構體snk有4個成員

void gtxy( int x,int y) //控制游標移動的函數

{ COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void gtxy( int x,int y); //以下聲明要用到的幾個自編函數

void csh( ); //初始化界面

void keymove( ); //按鍵操作移動蛇

void putFod( ); //投放食物

int Over( ); //游戲結束(1是0否)

void Color(int a); //設定顯示顏色的函數

int main( ) //主函數

{ csh( );

while(1)

{ Sleep(snk.speed);

keymove( );

putFod( );

if(Over( ))

{ system(「cls」);

gtxy(W/2+1,H/2); printf(「游戲結束!T__T」);

gtxy(W/2+1,H/2+2); printf(「玩家總分:%d分」,score);

getch( );

break;

}

}

return 0;

}

void csh( ) //初始化界面

{ int i;

gtxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=W;i=i+2) //橫坐標要為偶數,因為這個要列印的字元佔2個位置

{Color(2); //設定列印顏色為綠色

gtxy(i,0); printf("■"); //列印上邊框

gtxy(i,H); printf("■"); //列印下邊框

}

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

{ gtxy(0,i); printf("■"); //列印左邊框

gtxy(W,i); printf("■"); //列印右邊框

}

while(1)

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

fod.x=rand()%(W-4)+2; //隨機函數rand( )產生一個從0到比」(W-4)」小1的數再加2

fod.y=rand()%(H-2)+1; //隨機函數rand( )產生一個從0到比」(H-2)」小1的數再加1

if (fod.x%2==0) break; //fod.x是食物的橫坐標,要是2的倍數(為偶數)

}

Color(12); //設定列印顏色為淡紅

gtxy(fod.x,fod.y); printf("●"); //到食物坐標處列印初試食物

snk.len=3; //蛇身長初值為3節

snk.speed=350; //刷新蛇的時間,即移動速度初值為350毫秒

snk.x[0]=W/2+1; //蛇頭橫坐標要為偶數(因為W/2=39)

snk.y[0]=H/2; //蛇頭縱坐標

Color(9); //設定列印顏色為淡藍

gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭

for(i=1;i<snk.len;i++)

{ snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1];

gtxy(snk.x[i],snk.y[i]); printf("■"); //列印蛇身

}

Color(7, 0); //恢復默認的白字黑底

return;

}

void keymove( ) //按鍵操作移動蛇

{ int key;

if( kbhit( ) ) //如有按鍵輸入才執行下面操作

{ key=getch( );

if (key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值

{ key=getch( );

if(key==72&&dir!=2)dir=1; //72表示按下了向上方向鍵

if(key==80&&dir!=1)dir=2; //80為向下

if(key==75&&dir!=4)dir=3; //75為向左

if(key==77&&dir!=3)dir=4; //77為向右

}

if (key==32)

{ while(1) if((key=getch( ))==32) break; } //32為空格鍵,這兒用來暫停

}

if (Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾

{ gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(" "); }

int i;

for (i = snk.len - 1; i > 0; i--) //從蛇尾起每節存儲前一節坐標值(蛇頭除外)

{ snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; }

switch (dir) //判斷蛇頭該往哪個方向移動,並獲取最新坐標值

{ case 1: snk.y[0]--; break; //dir=1要向上移動

case 2: snk.y[0]++; break; //dir=2要向下移動

case 3: snk.x[0]-=2; break; //dir=3要向左移動

case 4: snk.x[0]+=2; break; //dir=4要向右移動

}

Color(9);

gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭

if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物則執行以下操作

{ printf("7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是響鈴

else Flag = 0; //沒吃到食物Flag的值為0

if(snk.speed<150) snk.speed= snk.speed+5; //作弊碼,不讓速度無限加快

}

void putFod( ) //投放食物

{ if (Flag == 1) //如吃到食物才執行以下操作,生成另一個食物

{ while (1)

{ int i,n= 1;

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

fod.x = rand( ) % (W - 4) + 2; //產生在游戲框范圍內的一個x坐標值

fod.y = rand( ) % (H - 2) + 1; //產生在游戲框范圍內的一個y坐標值

for (i = 0; i < snk.len; i++) //隨機生成的食物不能在蛇的身體上

{ if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} }

if (n && fod.x % 2 == 0) break; //n不為0且橫坐標為偶數,則食物坐標取值成功

}

Color(12); //設定字元為紅色

gtxy(fod.x, fod.y); printf("●"); //游標到取得的坐標處列印食物

}

return;

}

int Over( ) //判斷游戲是否結束的函數

{ int i;

Color(7);

gtxy(2,H+1); printf(「暫停鍵:space.」); //以下列印一些其它信息

gtxy(2,H+2); printf(「游戲得分:%d」,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇頭觸碰左右邊界

if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇頭觸碰上下邊界

for (i = 1; i < snk.len; i++)

{ if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; } //蛇頭觸碰自身

return 0; //沒碰到邊界及自身時就返回0

}

void Color(int a) //設定顏色的函數

{ SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a ); }

E. c語言必背代碼有哪些

1、/*輸出9*9口訣。共9行9列,i控制行,j控制列。*/

#include "stdio.h"

main()

{int i,j,result;

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(" ");/*每一行後換行*/

}

}

5、/*下面程序的功能是將一個4×4的數組進行逆時針旋轉90度後輸出,要求原始數組的數據隨機輸入,新數組以4行4列的方式輸出,

請在空白處完善程序。*/

main()

{ int a[4][4],b[4][4],i,j; /*a存放原始數組數據,b存放旋轉後數組數據*/

printf("input 16 numbers: ");

/*輸入一組數據存放到數組a中,然後旋轉存放到b數組中*/

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

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

{ scanf("%d",&a[i][j]);

b[3-j][i]=a[i][j];

}

printf("array b: ");

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

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

printf("%6d",b[i][j]);

printf(" ");

}

}

6、/*編程列印直角楊輝三角形*/

main()

{int i,j,a[6][6];

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

{a[i][i]=1;a[i][0]=1;}

for(i=2;i<=5;i++)

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

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

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

{for(j=0;j<=i;j++)

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

printf(" ");}

}

7、/*通過鍵盤輸入3名學生4門課程的成績,

分別求每個學生的平均成績和每門課程的平均成績。

要求所有成績均放入一個4行5列的數組中,輸入時同一人數據間用空格,不同人用回車

其中最後一列和最後一行分別放每個學生的平均成績、每門課程的平均成績及班級總平均分。*/

#include <stdio.h>

#include <stdlib.h>

main()

{ float a[4][5],sum1,sum2;

int i,j;

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

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

scanf("%f",&a[i][j]);

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

{ sum1=0;

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

sum1+=a[i][j];

a[i][4]=sum1/4;

}

F. c語言必背100代碼有哪些

/*輸出9*9口訣。共9行9列,i控制行,j控制列。*/

#include "stdio.h"

main()

{int i,j,result;

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(" ");/*每一行後換行*/

}

}

(6)c語言有意思的代碼擴展閱讀:

C語言的字元串其實就是以''字元結尾的char型數組,使用字元型並不需要引用庫,但是使用字元串就需要C標准庫裡面的一些用於對字元串進行操作的函數。它們不同於字元數組。使用這些函數需要引用頭文件<string.h>。

文件輸入/輸出

在C語言中,輸入和輸出是經由標准庫中的一組函數來實現的。在ANSI C中,這些函數被定義在頭文件<stdio.h>;中。

標准輸入/輸出

有三個標准輸入/輸出是標准I/O庫預先定義的:

stdin標准輸入

stdout標准輸出

stderr輸入輸出錯誤

G. 求幾個比較有趣,簡單的C語言源代碼 小白自己敲著練一下手感

最簡單的模擬計時器:

#include<stdio.h>

#include<conio.h>

#include<windows.h>

int m=0,s=0,ms=0; //m是分 s是秒 ms是毫秒

//以下是5個自編函數

void csh( ); //初始化界面

void yinc(int x,int y); //隱藏游標的函數(y值設為0就會隱藏)

void jishi( ); //計時器運行(每100毫秒變化一次)

void Color (short x, short y); //設定顏色的函數(y設為0就是黑底)

void gtxy (int x, int y); //控制游標位置的函數

int main( ) //主函數

{ csh( );

getch( );

while(1)

{ jishi( );

Sleep(100); //間隔100毫秒

if( kbhit( ) )break; //有鍵按下就退出循環

}

return 0;

}

void csh( ) //初始化界面

{Color(14,0); //設定淡黃字配黑底

printf(「 計時器」);

Color(10,0); //設定淡綠字配黑底

printf(" ┌───────────┐");

printf(" │ │");

printf(" └───────────┘");

gtxy(10,4); //游標到屏幕第10列4行處輸出

Color(7,0); //恢復白字黑底

printf(" 00:00:00 ");

yinc(1,0 ); //隱藏游標(yinc代表隱藏)

return;

}

void jishi( ) //計時器運行

{ms+=1;

if(ms==10){s+=1;ms=0;}

if(s==60){m+=1;s=0;}

gtxy(10,4);

Color(9,0); //設定淡藍字配黑底

if(m>9) printf(" %d:",m);

else printf(" 0%d:",m);

Color(14,0); //設定淡黃字配黑底

if(s>9) printf("%d:",s);

else printf("0%d:",s);

Color(12,0); //設定淡紅字配黑底

printf("0%d",ms);

}

void gtxy (int x, int y) //控制游標位置的函數

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (short ForeColor= 7, short BackGroundColor= 0) //設定顏色的函數

{ HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE );

SetConsoleTextAttribute ( handle, ForeColor + BackGroundColor * 0x10 );

}

void yinc(int x,int y) //隱藏游標的設置(gb代表游標)

{ CONSOLE_CURSOR_INFO gb={x,y}; //x為1-100,y為0就隱藏游標

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);

}

H. 求一些惡搞程序的C語言源代碼

一個打飛機的游戲,DEVc++編譯通過:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#include <time.h>

#define zlx 10 //增量坐標(x)讓游戲框不靠邊

#define zly 3 //增量坐標(y)讓游戲框不靠邊

#define W 26 //游戲框的寬度

#define H 24 //游戲框的高度

int jiem[22][22]={0}, wj=10; //界面數組, 我機位置(初值為10)

int speed=4,density=30, score=0,death=0; //敵機速度, 敵機密度, 玩家成績,死亡次數

int m=0,n=0; // m,n是控制敵機的變數

void gtxy (int x, int y) //控制游標位置的函數

{ COORD zb; //zb代指坐標

zb.X = x; zb.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), zb );

}

voidColor(inta) //設定顏色的函數(a應為1-15)

{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }

void yinc(int x=1,int y=0) //隱藏游標的函數

{ CONSOLE_CURSOR_INFO gb={x,y}; //gb代指游標, y設為0即隱藏

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);

}

void csh( ) //初始化函數

{ int i;

Color(7);

gtxy(zlx,zly); printf("╔"); gtxy(zlx+W-2,zly); printf("╗"); //左上角和右上角的框角

gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下邊兩框角

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //列印上橫框

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //列印下橫框

for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //列印左豎框

for(i=1;i<H-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); } //列印右豎框

Color(14); gtxy(19,2); printf("殲滅敵機"); Color(10);

gtxy(37,5); printf("設置:Esc ");

gtxy(37,7); printf("發射:↑ ");

gtxy(37,9); printf("控制:← → ");

gtxy(37,11);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

yinc(1,0);

}

void qcjm( ) //清除界面函數

{ int i,j;

for(i=0;i<H-2;i++)

for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i); printf(" ");}

}

void feiji( ) //飛機移動函數

{ int i,j;

for(i=21;i>=0;i--) //從底行往上是為了避免敵機直接沖出數組

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

{if(i==21&&jiem[i][j]==3)jiem[i][j]=0; //底行賦值0 以免越界

if(jiem[i][j]==3)jiem[i][j]=0, jiem[i+1][j]=3;

}

if(jiem[20][wj]==3&&jiem[21][wj]==1) death++;

}

void zidan( ) //子彈移動函數

{ int i,j;

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

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

{ if(i==0&&jiem[i][j]==2) jiem[i][j]=0;

if(jiem[i][j]==2) {if(jiem[i-1][j]==3) score+=100,printf("7");

jiem[i][j]=0,jiem[i-1][j]=2; }

}

}

void print( ) //輸出界面函數

{int i,j;

qcjm( );

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

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

{ gtxy(12+j,4+i);

if(jiem[i][j]==3) {Color(13);printf("□");}

if(jiem[i][j]==2) {Color(10);printf(".");}

if(jiem[i][j]==1) {Color(10);printf("■");}

}

gtxy(37,11); Color(10); printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

}

void setting( ) //游戲設置函數

{ qcjm( );

gtxy(12,4);printf("選擇敵機速度:");

gtxy(12,5);printf(" 1.快 2.中 3.慢>>");

switch(getche( ))

{case '1': speed=2; break;

case '2': speed=4; break;

case '3': speed=5; break;

default: gtxy(12,6);printf(" 錯誤!默認值");

}

gtxy(12,7);printf("選擇敵機密度:");

gtxy(12,8);printf(" 1.大 2.中 3.小>>");

switch(getche( ))

{case '1': density=20; break;

case '2': density=30;break;

case '3': density=40; break;

default: gtxy(12,9); printf(" 錯誤!默認值");

}

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

for(int j=0;j<22;j++) jiem[i][j]=0;

jiem[21][wj=10]=1; jiem[0][5]=3;

gtxy(12,10); printf(" 按任意鍵保存...");

getch( );

qcjm( );

}

void run( ) //游戲運行函數

{ jiem[21][wj]=1; //值為1代表我機(2則為子彈)

jiem[0][5]=3; //值為3代表敵機

SetConsoleTitle("殲滅敵機"); //設置窗口標題

while(1)

{if (kbhit( )) //如有鍵按下,控制我機左右移動、發射或進行設定

{ int key;

if((key=getch( ))==224) key=getch( );

switch(key)

{case 75: if(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;

case 77: if(wj<20)jiem[21][wj]=0,jiem[21][++wj]=1;break;

case 72: jiem[20][wj]=2; break;

case 27: setting( );

}

}

if(++n%density==0) //控制產生敵機的速度

{ n=0;srand((unsigned)time(NULL));

jiem[0][rand( )%20+1]=3;

}

if(++m%speed==0) { feiji( ); m=0; } //控制敵機移動速度(相對子彈而言)

zidan( ); //子彈移動

print( ); //輸出界面

Sleep(120); //延時120毫秒

}

}

int main( )

{ csh( );

run( );

return 0;

}

I. 求助啊,誰有有趣的c語言小程序,並且要有源代碼!!

一個貪吃蛇C源代碼,本人稍加優化,練手應當不錯。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <Windows.h>

#define WIDTH 78 //地圖的寬,x軸
#define HEIGHT 26 //地圖的高,y軸
int dire=3; //方向變數,初值為向「左」
int Flag=0; //判斷是否吃了食物的標志
int score=0; //玩家得分

struct foods{ int x;
int y;
}food; //結構體food有2個成員
struct snakes{int len;
int speed;
int x[100];
int y[100];
}snake; //結構體snake有4個成員

void gotoxy( int x,int y) //獲得句柄,才能控制游標移動
{ COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void gotoxy( int x,int y); //以下聲明要用到的幾個自編函數
void csh( );
void keyDown( );
void Move( );
void putFood( );
int pdOver( );

int main( ) //主函數
{ csh( );
while(1)
{ keyDown( );
Move( );
putFood( );
if(pdOver( ))
{system(「cls」);
gotoxy(WIDTH/2+1,HEIGHT/2);
printf(「游戲結束!T__T」);
gotoxy(WIDTH/2+1,HEIGHT/2+1);
printf(「玩家總分:%d分」,score);
getch( );
break; }
Sleep(snake.speed);
}
return 0;
}

void csh( ) //初始化界面
{ int i;
gotoxy(0,0);
CONSOLE_CURSOR_INFO cursor_info={1,0}; //游標值設為0就隱藏了
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=WIDTH;i=i+2) //橫坐標要為偶數,因為這里要列印的字元佔2個位置
{ gotoxy(i,0); //列印上邊框
printf("■");
gotoxy(i,HEIGHT); //列印下邊框
printf("■");
}
for(i=1;i<HEIGHT;i++)
{ gotoxy(0,i); //列印左邊框
printf("■");
gotoxy(WIDTH,i); //列印右邊框
printf("■");
}
while(1)
{ srand((unsigned int)time(NULL)); //設定種子為當前時間
food.x=rand()%(WIDTH-4)+2;
food.y=rand()%(HEIGHT-2)+1;
if(food.x%2==0)break;
}
gotoxy(food.x,food.y); //到食物坐標處列印初試食物
printf("●");

snake.len=3; //蛇身長
snake.speed=350; //刷新蛇的時間,即是移動速度
snake.x[0]=WIDTH/2+1; //蛇頭橫坐標為偶數
snake.y[0]=HEIGHT/2; //蛇頭縱坐標
gotoxy(snake.x[0], snake.y[0]); //列印蛇頭
printf("■");

for(i=1;i<snake.len;i++)
{ snake.x[i]=snake.x[i-1]+2;
snake.y[i]=snake.y[i-1];
gotoxy(snake.x[i],snake.y[i]); //列印蛇身
printf("■");
}
return;
}

void keyDown( ) //按鍵操作
{ int key;
if(kbhit( )) //如有按鍵輸入才執行下面操作
{ key=getch( );
if(key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值
{ key=getch( );
if(key==72&&dire!=2)dire=1; //72為向上
if(key==80&&dire!=1)dire=2; //80為向下
if(key==75&&dire!=4)dire=3; //75為向左
if(key==77&&dire!=3)dire=4; //77為向右
}
if(key==13)
{ while(1) if((key=getch( ))==13) break; } //13為回車鍵,這兒用來暫停
}
}

void Move( ) //蛇移動一節
{ if(Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾
{ gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);
printf(" ");
}
int i;
for (i = snake.len - 1; i > 0; i--) //從蛇尾起每節存儲前一節坐標值(蛇頭除外)
{ snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
switch (dire) //以下判斷蛇頭該往哪個方向移動,並獲取最新坐標值
{ case 1: snake.y[0]--; break;
case 2: snake.y[0]++; break;
case 3: snake.x[0]-=2; break;
case 4: snake.x[0]+=2; break;
}
gotoxy(snake.x[0], snake.y[0]); //列印蛇頭
printf("■");
if (snake.x[0] == food.x && snake.y[0] == food.y) //如吃到食物執行以下操作
{ snake.len++; score += 50; snake.speed -= 5; Flag = 1;}
else Flag = 0;
if(snake.speed<160) snake.speed= snake.speed+5; //作弊碼,不讓速度無限加快
}

void putFood( ) //投放食物
{ if(Flag == 1) //如吃到食物才執行以下操作,生成另一個食物
{ while (1)
{ int i,n= 1;
srand((unsigned int)time(NULL)); //設定當前時間,接下產生食物坐標值
food.x = rand( ) % (WIDTH - 4) + 2;
food.y = rand( ) % (HEIGHT - 2) + 1;
for (i = 0; i < snake.len; i++) //隨機生成的食物不能在蛇的身體上
{ if (food.x == snake.x[i] &&food.y == snake.y[i])
{ n= 0; break;}
}
if (n && food.x % 2 == 0) break; //n不為0且橫坐標為偶數,食物坐標取值成功
}
gotoxy(food.x, food.y); //游標到取得的坐標處列印食物
printf("●");
}
return;
}

int pdOver( ) //判斷游戲是否結束
{ int i;
gotoxy(2,HEIGHT+1); //以下列印一些其它信息
printf(「暫停鍵:Enter.」);
gotoxy(2,HEIGHT+2);
printf(「游戲得分:%d」,score);
if (snake.x[0] == 0 || snake.x[0] == WIDTH) return 1; //蛇頭觸碰左右邊界
if (snake.y[0] == 0 || snake.y[0] == HEIGHT) return 1; //蛇頭觸碰上下邊界
for (i = 1; i < snake.len; i++)
{ if (snake.x[0] == snake.x[i] && snake.y[0] == snake.y[i]) return 1; } //蛇頭觸碰自身
return 0;
}