c语言复杂代码
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;}