當前位置:首頁 » 編程語言 » c語言復雜代碼

c語言復雜代碼

發布時間: 2022-06-11 15:38:36

1. c語言中所有的代碼及其代表的意思,有誰知道

這個問題問的太。。。。了,給你找了個操作符(operator)用於操作數據。操作符進行計算、檢查等式、進行賦值、操作變數和進行其它更奇怪的工作。C++中有許多操作符,這里不想列出全部,只列出最常用的操作符,如下表所示。表1.2常用C++操作符操作符說明舉例
算術運算符
+ 加 x=y+z;
- 減 x=y-z;
* 乘 x=y*z;
/ 除 x=y/z;
賦值運算符
= 賦值 x=10;
+= 賦值與和 x+=10;(等於x=x+10;)
-= 賦值與減 x-=10;
*= 賦值與乘 x*=10;
\= 賦值與除 x\=10;
&= 賦值位與 x&=0x02;
|= 賦值位或 x|=0x02;
邏輯操作符
&& 邏輯與 if(x && 0xFF) {...}
|| 邏輯或 if(x || 0xFF) {...}
等式操作符
== 等於 if(x == 10) {...}
!= 不等於 if(x != 10) {...}
< 小於 if(x < 10) {...}
> 大於 if(x > 10) {...}
<= 小於或等於 if(x <= 10) {...}
>= 大於或等於 if(x >= 10) {...}
一元操作符
* 間接操作符 int x=*y;
& 地址操作符 int* x=&y;
~ 位非 x &=~0x02;
! 邏輯非 if(!valid) {...}
++ 遞增操作符 x++(等於x=x+1;)
-- 遞減操作符 x--;
類和結構操作符
:: 范圍解析 MyClass :: SomeFunction();
-> 間接成員 MyClass-> SomeFunction();
· 直接成員 MyClass . SomeFunction();
可以看出,這個清單長了些,沒法一下子記住。使用C++時,你會慢慢熟悉這些操作符的。必須指出,遞增操作符既可用作前遞增(++x),也可用作後遞增(x++)。前遞增操作符告訴編譯器先遞增再使用變數,而後遞增操作符則讓編譯器先使用變數值再遞增。例如下列代碼:
int x = 10;
cout << "x = " << x++ << end1;
cout << "x = " << x << end1;
cout << "x = " x << end1;
cout << "x = " << ++x << end1;
輸出結果如下:
x=10
x=11
x=12
x=12
遞減操作符也是這樣,這里不想將這些內容講得太深,但讀者可以耐心閱讀下去,正如彭茲對奧古斯特所說,「奧古,耐心點,羅馬不是一天建成的」。說明 在C++中操作符可以過載(overload)。編程人員可以通過過載標准操作符讓它在特定類中進行特定運行。例如,可以在一個類中過載遞增操作符,讓它將變數遞增10而不是遞增1。操作符過載是個高級C++技術,本書不準備詳細介紹。你也許會發現,有些操作符使用了相同的符號。符號的意義隨情境的不同而不同。例如,星號(*)可以作為乘號、聲明指針或取消指針引用。這初看起來有點亂,事實上,C++編程老手有時也覺得有點亂。多實踐,你會慢慢適應的。本書有許多例子介紹這些操作符。讀者不必死記每個操作符的作用,而可以在學習中通過程序和碼段去理解其作用。 C++中的函數
函數是與主程序分開的碼段。這些碼段在程序中需要進行特定動作時調用(執行)。例如,函數可能取兩個值並對其進行復雜的數學運算。然後返回結果,函數可能取一個字串進行分析,然後返回分析字串的一部分。新術語 函數(function)是與主程序分開的碼段,進行預定的一個服務。函數是各種編程語言的重要部分,C++也不例外。最簡單的函數不帶參數,返回void(表示不返回任何東西),其它函數可能帶一個或幾個參數並可能返回一個值。函數名規則與變數名相同。圖1.5顯示了函數的構成部分。新術語 參數(parameter)是傳遞給函數的值,用於改變操作或指示操作程度。
返回類型 函數名 參數表
↓ ↓ ↓
int SomeFunction(int x, int y){
函數體→int z = (x * y); return z; ↑返回語句
}
圖1.5函數的構成部分使用函數前,要先進行聲明。函數聲明或原型(prototype)告訴編譯器函數所取的參數個數、每個參數的數據類型和函數返回值的數據類型。清單1.4列示了這個概念。新術語 原型(prototype)是函數外觀的聲明或其定義的說明。
清單1.4Muttiply.cpp
1: #include <iostream.h>
2: #include <conio.h>
3: #pragma hdrstop
4:
5: int multiply(int,int)
6: void showResult(int);
7:
8:int main(int argc,char **argv);
9:{
10: int x,y,result;
11: cout << end1 << "Enter the first value:";
12: cin >> x;
13: cout << "Enter the second value: ";
14: cin >> y;
15: result=multiply(x,y);
16: showResult(result);
17: cout << end1 << end1 << "Press any key to continue...";
18: getch();
19: return 0
20: }
21:
22: int multiply(int x,int y)
23: {
24:return x * y;
25: }
26:
27: void showResult(int res)
28: {
29:cout << "The result is: " << res <<end1;
30: }
這個程序的11到14行用標准輸入流cin向用戶取兩個數字,第15行調用multiply()函數將兩個數相乘,第16行調用showResult()函數顯示相乘的結果。注意主程序前面第5和第6行multiply()和showResult()函數的原型聲明。原型中只列出了返回類型、函數名和函數參數的數據類型。這是函數聲明的最基本要求。函數原型中還可以包含用於建檔函數功能的變數名。例如,multiply()函數的函數聲明可以寫成如下:int multiply(int firstNumber,int secondNumber);這里函數multiply()的作用很明顯,但代碼既可通過說明也可通過代碼本身建檔。注意清單1.4中函數multiply()的定義(22到25行)在主函數定義碼段(8到20行)之外。函數定義中包含實際的函數體。這里的函數體是最基本的,因為函數只是將函數的兩個參數相乘並返回結果。清單1.4中函數multiply()可以用多種方法調用,可以傳遞變數、直接數或其它函數調用的結果:
result = multiply(2,5);//passing literal values
result = multiply(x,y); //passing variables
showResult(multiply(x,y));
//return value used as a
//parameter for another function
multiply(x,y);//return value ignored
注意 最後一例中沒有使用返回值。本例中調用函數multiply()而不用返回值沒什麼道理,但C++編程中經常忽略返回值。有許多函數是先進行特定動作再返回一個數值,表示函數調用的狀態。有時返回值與程序無關,可以忽略不計。如果將返回值忽略,則只是放棄這個值,而不會有別的危害。例如,前面的樣本程序中忽略了getch()函數的返回值(返回所按鍵的ASCII值)。函數可以調用其它函數,甚至可以調用自己,這種調用稱為遞歸(recursion)。這在C++編程中是個較復雜的問題,這里先不介紹。新術語 遞歸(recursion)就是函數調用自己的過程。

2. c語言復雜函數

void (*signal(
int signum,void(*handler)(int)
))(int);
signal為函數指針
參數signum是整形數
參數handler是一個有整型參數,返回void的函數指針
signal所指的函數
返回一個函數指針
返回的函數參數為int型,返回值為void

3. 如何把一個復雜的C語言源代碼分成幾個文件,然後在dev c++上進行多文件編譯

假設我們要更改的源代碼如下:

即「No such file or directory」就是沒有文件或者路徑。說明你的路徑寫錯了,在編程時務必要注意一下。

4. c語言代碼是什麼

C語言源代碼,就是依據C語言規則所寫出的程序代碼,常見的存儲文件擴展名為.c文件和.h文件,分別對應C源文件(source file)和C頭文件(header file)。

C語言是一門編程語言,簡單點說,就是由人類書寫按照一定規范書寫的字元,通過一定手段(編譯鏈接)轉換後,可以讓電腦或者其它電子晶元"讀懂",並按照其要求工作的語言。

在所有的編程語言中,C語言是相對古老而原始的,同時也是在同類語言中更接近硬體,最為高效的編程語言。

C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟體。

當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。

C語言擁有經過了漫長發展歷史的完整的理論體系,在編程語言中具有舉足輕重的地位。

5. 電腦編程C語言把代碼復雜化

C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。因此,它的應用范圍廣泛。 C語言對操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它解釋型高級語言,有一些大型應用軟體也是用C語言編寫的。 C語言具有繪圖能力強,可移植性,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫。它是數值計算的高級語言。 常用的C語言IDE(集成開發環境)有Microsoft Visual C ,Borland C ,Watcom C ,Borland C ,Borland C Builder,Borland C 3.1 for DOS,Watcom C 11.0 for DOS,GNU DJGPP C ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C等等......

6. 有一道很復雜的C語言代碼想請教大佬,不會勿點

//隨便分享一個C語言代碼吧!
#include<stdio.h>
#include<conio.h>
#include<pthread.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define print(a) switch(a)\
{\
case 0:\
printf("⬜");\
break;\
case 2:\
printf("🚧");\
break;\
case 1:\
printf("🍞");\
break;\
case 3:\
printf("💩");\
break;\
default:\
if(a-4)\
{\
if(a-snake-4<0)\
{\
printf("🎾");\
}\
else\
{\
if(shit)\
{\
if(rand()%shit)\
{\
printf("⬜");\
a=-1;\
}\
else\
{\
printf("💩");\
a=2;\
}\
}\
else\
{\
printf("⬜");\
a=-1;\
}\
}\
}\
else printf("🎃");\
a=a+1;\
break;\
}
//#define high 12
//#define wide 17

int shit=100,score=0,i=0,r=0,l=2,snake=2,snake1=-2,direction=4;
float speed=5;
int tick,p,q,x,y;
int contrl=0,food=2,bug=0;
int map[1024][1024];
int high=12,wide=17;
int growLong=1,growScore=1;
int Print()
{
while(1)
{
snake1=-snake;
switch(direction)
{
case 1:
if(map[y-1][x]>1) contrl=1;
else y=y-1;
break;
case 2:
if(map[y+1][x]>1) contrl=1;
else y=y+1;
break;
case 3:
if(map[y][x-1]>1) contrl=1;
else x=x-1;
break;
case 4:
if(map[y][x+1]>1) contrl=1;
else x=x+1;
break;
}
if(map[y][x]-1);
else
{
snake=snake+growLong;
score=score+growScore;
A:
p=rand()%(high-2)+1;
q=rand()%(wide-2)+1;
if(map[p][q]) goto A;
else map[p][q]=1;
}
map[y][x]=4;
if(contrl) return 0;
clrscr();
for(i=0; i<high; i++)
{
for(r=0; r<wide; r++)
{
print(map[i][r])
}
printf("\n");
}
printf("當前分數:%d\n",score);
usleep(1000000/speed);
}
}

int Speed()
{
clrscr();
printf("單位:格/秒,默認:5,當前:%g\n請輸入速度:",speed);
scanf("%f",&speed);
return main();
}

int Food()
{
clrscr();
printf("單位:個,默認:2,當前:%d\n請輸入食物數量:",food);
scanf("%d",&food);
return main();
}

int High()
{
clrscr();
printf("單位:格,默認:12,當前:%d\n請輸入高度:",high);
scanf("%d",&high);
return main();
}

int Wide()
{
clrscr();
printf("單位:格,默認:17,當前:%d\n請輸入寬度:",wide);
scanf("%d",&wide);
return main();
}

int Shit()
{
clrscr();
printf("單位:^-1/步,默認:100,當前:%d\n若為0,則不拉屎\n請輸入拉屎概率:",shit);
scanf("%d",&shit);
return main();
}

int L()
{
clrscr();
printf("單位:格,默認:2,當前:%d\n請輸入初始長度:",l);
scanf("%d",&l);
return main();
}

int GrowLong()
{
clrscr();
printf("單位:長度/個食物,默認:1,當前:%d\n請輸入單個食物增加長度:",growLong);
scanf("%d",&growLong);
return main();
}

int GrowScore()
{
clrscr();
printf("單位:分數/個食物,默認:1,當前:%d\n請輸入單個食物分數:",growScore);
scanf("%d",&growScore);
return main();
}

int BugContrl()
{
clrscr();
printf("0:關閉外掛,其他:開啟外掛\n默認:0,當前:%d\n請輸入外掛控制數:",bug);
scanf("%d",&bug);
return main();
}

int Bug()
{
while(1)
{
if(map[1][15]-4);
else direction=3;
if(map[1][1]-4);
else direction=2;
if(map[2][1]-4);
else direction=4;
if(map[2][14]-4);
else direction=2;
if(map[3][14]-4);
else direction=3;
if(map[3][1]-4);
else direction=2;
if(map[4][1]-4);
else direction=4;
if(map[4][14]-4);
else direction=2;
if(map[5][14]-4);
else direction=3;
if(map[5][1]-4);
else direction=2;
if(map[6][1]-4);
else direction=4;
if(map[6][14]-4);
else direction=2;
if(map[7][14]-4);
else direction=3;
if(map[7][1]-4);
else direction=2;
if(map[8][1]-4);
else direction=4;
if(map[8][14]-4);
else direction=2;
if(map[9][14]-4);
else direction=3;
if(map[9][1]-4);
else direction=2;
if(map[10][1]-4);
else direction=4;
if(map[10][15]-4);
else direction=1;
}
}

int main()
{
C:
clrscr();
printf("按對應鍵開始\n");
printf("0:開始游戲\n");
printf("1:設置速度\n");
printf("2:設置食物數量\n");
printf("3:設置高度\n");
printf("4:設置寬度\n");
printf("5:設置拉屎概率\n");
printf("6:設置初始長度\n");
printf("7:設置單個食物增加長度\n");
printf("8:設置單個食物分數\n");
printf("9:設置外掛\n");
tick=getch();
switch(tick)
{
case 48:
break;
case 49:
return Speed();
case 50:
return Food();
case 51:
return High();
case 52:
return Wide();
case 53:
return Shit();
case 54:
return L();
case 55:
return GrowLong();
case 56:
return GrowScore();
case 57:
return BugContrl();
default:
goto C;
}
srand(time(0));
for(i=0; i<high; i++)
{
for(r=0; r<wide; r++)
{
map[i][r]=0;
}
}
for(i=0; i<food; i++)
{
B:
p=rand()%(high-2)+1;
q=rand()%(wide-2)+1;
if(map[p][q]) goto B;
else map[p][q]=1;
}
x=wide/2;
y=high/2;
for(i=0; i<high; i++) map[i][0]=2;
for(i=0; i<high; i++) map[i][wide-1]=2;
for(r=0; r<wide; r++) map[0][r]=2;
for(r=0; r<wide; r++) map[high-1][r]=2;
contrl=0;score=0;snake=l;direction=4;
pthread_t print;
pthread_create(&print,NULL,Print,NULL);
if(bug)
{
pthread_t bug;
pthread_create(&bug,NULL,Bug,NULL);
}
while(contrl-1)
{
A:
tick=getch();
switch(tick)
{
case 50:
if(direction-2) direction=1;
else goto A;
break;
case 52:
if(direction-4) direction=3;
else goto A;
break;
case 54:
if(direction-3) direction=4;
else goto A;
break;
case 56:
if(direction-1) direction=2;
else goto A;
break;
}
usleep(1000000/speed);
}
printf("按任意鍵回到主菜單");
getch();
goto C;
}

7. 較復雜的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 pos;

pos.X = x; pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

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}; //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;

}

8. 有一道很復雜的C語言代碼想請教大佬

圖不清楚,第一個x幾次方的絕對值?

9. 發給我c語言程序源代碼,稍微復雜的,或者小游戲的,越多越好

漢諾塔::

#define NULL 0

typedef int ElementType;

typedef struct
{ ElementType *pbuffer;
int max;
int top;
}Stack;

Stack *InitStack(int n);

int Push(Stack *sp,ElementType *pdata);

int Pop(Stack *sp,ElementType *pdata);

int DestroyStack(Stack *sp);

int IsEmpty(Stack *sp);

int IsFull(Stack *sp);

int TravereStack(Stack *sp,int (*pfn)(ElementType *pdata,int ,int ),int x,int y);

#include <malloc.h>
#include <stdio.h>
#include <string.h>

Stack *InitStack(int n)
{
Stack *sp = NULL;
sp = (Stack *)malloc(sizeof(Stack));
if(!sp)
{
return sp;
}

sp->pbuffer = (ElementType *)malloc(sizeof(ElementType)*n);
if(!sp->pbuffer)
{
free(sp);
sp=NULL;
return sp;
}
sp->max = n;
sp->top = -1;
return sp;
}

int Push(Stack *sp,ElementType *pdata)
{
if(IsFull(sp))
{
return 0;
}

sp->top++;
//sp->pbuffer[sp->top] = *pdata;
memcpy(sp->pbuffer + sp->top,pdata,sizeof(ElementType));
return 1;
}

int Pop(Stack *sp,ElementType *pdata)
{
if(IsEmpty(sp))
{
return 0;
}

*pdata = sp->pbuffer[sp->top];
sp->top--;
return 1;
}

int DestroyStack(Stack *sp)
{
if(sp)
{
free(sp->pbuffer);
free(sp);
return 1;
}
return 0;
}

int IsEmpty(Stack *sp)
{
return sp->top == -1;
}

int IsFull(Stack *sp)
{
return sp->top == sp->max;
}

int TravereStack(Stack *sp,int (*pfn)(ElementType *pdata,int x,int y),int x,int y)
{
int i =0;
for(i=0;i<sp->top+1;i++)
{
pfn(sp->pbuffer+i,x,y);
y--;
}
printf("\n");
return 1;
}

#include <stdio.h>
#include <malloc.h>
#include <windows.h>
#include <conio.h>

int step = 0;

typedef struct
{
Stack * sp[3];
int x[3];
int y;
int total;
}Hannuota;

void gotoxy(int x,int y)
{
COORD C;
C.X = x;
C.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C);
}

void FreeThreeStack(Hannuota *han)
{
int i =0;
for(;i<3;i++)
{
if(han->sp[i])
{
free(han->sp[i]);
han->sp[i] =0;
}
}
}

int DestroyHannuota(Hannuota *han)
{
if(han)
{
FreeThreeStack(han);
free(han);
return 1;
}
return 0;
}

Hannuota * InitHannuota(int n)
{
int i =0;
Hannuota * han = NULL;
han = (Hannuota *)malloc(sizeof(Hannuota));
if(!han)
{
return han;
}
han->total = n;
han->y = 10;

for(i=0;i<3;i++)
{
han->sp[i] = 0;
han->x[i] = 10*i+10;
}

for(i=0;i<3;i++)
{
han->sp[i] = InitStack(han->total);

if(!han->sp[i])
{
DestroyHannuota(han);
return han;
}
}

return han;
}

int ShowElement(ElementType *pdata,int x,int y)
{
gotoxy(x,y);
printf("%d",*pdata);
return 1;
}

int ShowFace(Hannuota * ph)
{
int i ;
gotoxy(8,3);
printf("Hanio Game Ver 0.1");
for(i=0 ; i<3 ;i++)
{
gotoxy(ph->x[i] - 2 , ph->y + 1);
printf("-----");
gotoxy(ph->x[i] , ph->y + 2);
printf("%c",0x41 + i);
}
return 1;
}

int ShowHannuota(Hannuota *han)
{
int i =0;
//clrscr();
system("CLS");
ShowFace(han);
for(;i<3;i++)
{
TravereStack(han->sp[i],ShowElement,han->x[i],han->y);
}
gotoxy(8,14);
printf("Step is No. %d ",step++);
getch();
return 1;
}

int ChangeData(Hannuota *han,int a,int b)
{
ElementType data;
Pop(han->sp[a],&data);
Push(han->sp[b],&data);
ShowHannuota(han);
//getchar();
return 1;
}

void Mov(Hannuota *han,int num,int a,int b,int c)
{
if(num<1)
{
return;
}

Mov(han,num-1,a,c,b);
ChangeData(han,a,c);
Mov(han,num-1,b,a,c);
}

int GameStart(Hannuota *han)
{
int i = han->total;

for(;i>0;i--)
{
Push(han->sp[0],&i);
}

ShowHannuota(han);
Mov(han,han->total,0,1,2);
return 1;
}

int main()
{
Hannuota *han = InitHannuota(3);
if(!han)
{
return 0;
}

GameStart(han);
DestroyHannuota(han);
return 1;
}

10. 復雜C語言----「hello world」。

輸出Hello, World
混亂C語言的源代碼(加密源代碼,嘿嘿)
下面的所有程序都可以在GCC下編譯通過,只有最後一個需要動用C++的編譯器g++才能編程通過。

hello1.c

#define _________ }
#define ________ putchar
#define _______ main
#define _(a) ________(a);
#define ______ _______(){
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
#define _____ __ ___ ____ _________
#include <stdio.h>
_____

hello2.c

#include <stdio.h>
main(){
int x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
x=*(--z);while(y[x]!=NULL)putchar(y[x++]);
}
hello3.c

#include <stdio.h>
#define __(a) goto a;
#define ___(a) putchar(a);
#define _(a,b) ___(a) __(b);
main()
{ _:__(t)a:_('r',g)b:_('$',p)
c:_('l',f)d:_(' ',s)e:_('a',s)
f:_('o',q)g:_('l',h)h:_('d',n)
i:_('e',w)j:_('e',x)k:_('\n',z)
l:_('H',l)m:_('X',i)n:_('!',k)
o:_('z',q)p:_('q',b)q:_(',',d)
r:_('i',l)s:_('w',v)t:_('H',j)
u:_('a',a)v:_('o',a)w:_(')',k)
x:_('l',c)y:_('\t',g)z:___(0x0)}
hello4.c

int n[]={0x48, <br> 0x65,0x6C,0x6C, <br> 0x6F,0x2C,0x20, <br> 0x77,0x6F,0x72, <br> 0x6C,0x64,0x21, <br> 0x0A,0x00},*m=n;
main(n){putchar <br> (*m)!='\0'?main <br> (m++):exit(n++);}
hello5.c

main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<< <br> 1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1 <br> <<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<( <br> 1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1 <br> <<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1 <br> <<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1 <br> <<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1 <br> <<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1 <br> )))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1 <br> <<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<( <br> 1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1 <br> )<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1))) <br> -((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1) <br> <<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<< <br> 1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<< <br> 1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1 <br> <<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1 <br> )<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1 <br> <<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< ( <br> 1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1) <br> <<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))), <br> (((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1 <br> <<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>> <br> 1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1 <br> >>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<( <br> 1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i
<(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
))) + (1<<1)); i++) printf("%c",n[i]); }
hello6.cpp

下面的程序只能由C++的編譯器編譯(比如:g++)

#include <stdio.h>
#define _(_) putchar(_);
int main(void){int i = 0;_( <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++i)_(++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++i)_(++++++++++++++ <br> i)_(--++i)_(++++++i)_(------ <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ----------------i)_(-------- <br> ----------------i)_(++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++++ <br> ++++++++++++++++++++++++++i) <br> _(----------------i)_(++++++ <br> i)_(------------i)_(-------- <br> --------i)_(---------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ---------------------------- <br> ------i)_(------------------ <br> ---------------------------- <br> i)return i;}

熱點內容
centos使用python 發布:2024-05-18 23:39:48 瀏覽:866
幻影天龍腳本 發布:2024-05-18 23:38:17 瀏覽:711
編程的py 發布:2024-05-18 23:36:22 瀏覽:73
安卓系統怎麼改序列號 發布:2024-05-18 23:28:16 瀏覽:782
c語言中實數 發布:2024-05-18 23:21:03 瀏覽:894
伺服器搭建題目 發布:2024-05-18 23:01:29 瀏覽:27
下載武裝突襲後怎麼進伺服器 發布:2024-05-18 22:56:17 瀏覽:825
c語言字元串大寫變小寫 發布:2024-05-18 22:56:16 瀏覽:438
重啟刪除的文件夾 發布:2024-05-18 22:34:11 瀏覽:638
視頻軟體源碼 發布:2024-05-18 22:22:24 瀏覽:429