導航:首頁 > 編程語言 > 復雜c代碼

復雜c代碼

發布時間:2023-09-20 04:04:00

1. 求一個比較復雜的C語言程序

#include "stdio.h"
#include "ctype.h"
#include "malloc.h"
#include "stdlib.h"
#define M 100
#define ZERO 0
#define SUCC 1
#define DEFT 0
#define MIN -1
#define MAX 2001
typedef int valuetype;
typedef struct Bnode
{
valuetype data;
int layer ;
struct Bnode *Lson,*Rson;
}Bnode,*Bptr;

void writeT(Bptr root)
{
int first=0,last=1;
Bptr p,q[M];
if(root->data==MIN)p=root->Rson;
else p=root->Lson;
if(p==NULL)
{ printf(" 當前二叉樹為空,沒有結點。\n");return;}
printf(" 當前二叉樹的結點為:\n");
printf(" 層號 當前結點 左兒子 右兒子\n");
p->layer=1;
q[0]=p;
while(first!=last)
{
p=q[first++];
printf("%6d%10d ",p->layer,p->data);
if(p->Lson==NULL)printf("%12c",'\040');
else
{
printf("%12d",p->Lson->data);
p->Lson->layer=p->layer+1;
q[last++]=p->Lson;
}
if(p->Rson!=NULL)
{
printf("%12d",p->Rson->data);
p->Rson->layer=p->layer+1;
q[last++]=p->Rson;
}
printf("\n");
}
}

void inorder(Bptr p)
{
if(!p)return;
inorder(p->Lson);
printf("%5d",p->data);
inorder(p->Rson);
}

void sortT(Bptr root)
{
if(root->data==MIN) inorder(root->Rson);
else inorder(root->Rson);
printf("\n");
}

Bptr search (valuetype x,Bptr p)
{
while (p!=NULL)
{
if(x==p->data)return p;
if(x<p->data) p=p->Lson;
else p=p->Rson;
}
return NULL;
}

void searchT(Bptr root)
{
int x;
printf("請輸入要查找的結點值x>0,x=");
scanf("%d",&x);
if(search(x,root)==NULL)printf("數中沒有%d!\n",x);
else printf("%d 已經找到!\n",x);
}

void insert(valuetype x,Bptr &root)
{
Bptr f,p;
f=NULL;p=root;
while(p!=NULL)
{
if(x<p->data)f=p,p=p->Lson;
else f=p,p=p->Rson;
}
p=new Bnode;
p->data=x;p->Lson=p->Rson=NULL;
if(f==NULL)root=p;
else
if(x<=f->data)f->Lson=p;
else f->Rson=p;
}

void insertT(Bptr p)
{
int x;
printf("請輸入要插入的結點的值x>0,x=");
scanf("%d",&x);
insert(x,p);
printf("%d已經被插入了\n",x);
}

Bptr creatST()
{
Bptr root ;valuetype x;
root =NULL;
printf(" 構造初始檢索樹,請輸入元素序列,元素個數不得超過%d,要求:\n",M);
printf("序列以%d或%d開始,以0結束,元素值均為小於%d的正整數\n",MIN,MAX,MAX);
scanf("%d",&x);
while(x!=ZERO)
{
insert(x,root);
scanf("%d",&x);
}
return root;
}

int deleteST(valuetype x,Bptr root)
{
Bptr f,p,s,r;
for (p=root;;)
{
if(p==NULL)return DEFT;
if (x==p->data)break;
if(x<p->data)
{
f=p;p=p->Rson;
}
else
{
f=p;p=p->Rson;
}
}
if (p->Rson==NULL)
{
if(p==f->Lson)
f->Lson=p->Rson;
else
f->Rson=p->Lson;
free (p);
return SUCC;
}
s=p->Lson;
if (s->Rson==NULL)
{
p->data=s->data;
p->Lson=s->Lson;
free (s);
return SUCC;
}
r=s->Rson;
while (r->Rson!=NULL)
{
s=r;
r=r->Rson;
}
p->data=r->data;
s->Rson=r->Lson;
free (r);
return SUCC;
}

void deleteT(Bptr root)
{
int x;
printf("請輸入要刪除的結點值x>0,x=");
scanf("%d",&x);
if(deleteST(x,root))
printf("%d 已經被刪除!\n",x);
else
printf(" %d不在樹中,無法刪除!\n",x);
}

char getalpha()
{
char c;
while(1)
{
c=getchar();
if(isalpha(c))
return c;
}
}

void treeT(Bptr root)
{
char c;
printf(" 對檢索樹可以進行下列操作:\n");
while (1)
{
printf("請輸入操作碼:查找F/f 插入I/i 刪除D/d 顯示P/p 結點排序S/s 終止E/e\nC=");
c=getalpha();
switch(c)
{
case 'f':
case 'F': searchT(root);break;
case 'p':
case 'P': writeT(root);break;
case 'i':
case 'I': insertT(root);break;
case 'd':
case 'D': deleteT(root);break;
case 's':
case 'S': sortT(root);break;
case 'e':
case 'E': writeT(root);return;
default:printf("輸入的操作碼不正確,請重新輸入!\n");
continue;
}
}
}

void main()
{
Bptr root;
root=creatST();
treeT(root);
printf("程序結束,再見!\n");
}

2. 有一道很復雜的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;
}

3. 誰可以給我一個復雜點的C語言例子,要無錯的,我剛學編程,很好奇

這是我做的課程設計,雖然不是很復雜,但對初學者來說已經足夠做參考了。 #include #include sbit speaker=P2^3; sbit RS=P2^4; //P2.4 sbit RW=P2^5; //P2.5 sbit E=P2^6; //P2.6 sbit set=P3^4; //設置鍵 sbit enter=P3^5; //確認鍵 sbit add1=P3^6; //加1鍵 sbit sub1=P3^7; //減1鍵 bit k=0,f=0,alarmflag1,alarmflag2,xx;//k為0表示運行狀態,k為1表示設置狀態;f為0表示第一行顯示,f為1表示第二行顯示,alarmflag表示鬧鍾設置的標號,xx用來給speaker響 char sec,min,hour,week,day,month,year,n,m,hourn,minn,alarm; unsigned char count,key; unsigned char lcdd[]="0123456789"; bit naozhong; /*聲明調用函數*/ void dispd(); //日期顯示函數 void dispt(); //時間顯示函數 void disalarm(); unsigned char keys();//按鍵掃描函數 void lcd_w_cmd(unsigned char com); //寫命令字函數 void lcd_w_dat(unsigned char dat); //寫數據函數 unsigned char lcd_r_start(); //讀狀態函數 void int1(); //LCD初始化函數 void delay(unsigned char t); //可控延時函數 void delay1(); //軟體實現延時函數,5個機器周期 void main() { TMOD=0x01; //設置為定時器模式1 TH0=0x3c; //晶振12MHz,定時時間50ms TL0=0xb0; IE=0x82; //開全局中斷和定時中斷 TR0=1; //啟動定時器 sec=0; //秒 min=0; minn=0;//分 hour=0; hourn=0;//時 week=0; //星期 day=13; //日 month=6; //月 year=11; //年 count=0; //中斷次數清0 n=-3; //設置鍵按下次數,第一行日期 m=-3; //設置鍵按下次數,第二行時間 xx=1; P0=0xff; // 送全1到P0口 int1(); // 初始化LCD delay(255); while(1) { key=keys(); //讀取按鍵 switch(key) { case 0xef: //按下設置鍵 { TR0=0; k=1; if(f==0) { n=n+3; if(n==9) { n=0; m=0; f=1; } } else { m=m+3; if(alarm==0) { if(m==12) { m=0; n=0; f=0; } } else { if(m==6) m=0; } } if(f==0) { lcd_w_cmd(0x0d); lcd_w_cmd(0x86+n); } else { lcd_w_cmd(0x0d); if(alarm==0) lcd_w_cmd(0xc4+m); else lcd_w_cmd(0xc7+m); } } break; case 0xdf: //按下確認鍵 { k=0; TR0=1; n=-3; m=-3; f=0; if(alarm==1) { alarm=0; alarmflag1=1; lcd_w_cmd(0x01); } if(alarmflag2==1) { alarmflag1=0; alarmflag2=0; lcd_w_cmd(0x01); } } break; case 0xbf: //按下加1鍵 { if(k==1) { if(f==0) { if(n==0){year++;if(year==100) year=0;} else if(n==3) {month++;if(month==13) month=1;} else {day++;if(day==32) day=1;} dispd(); //調用第一行顯示函數 lcd_w_cmd(0x0d); //游標閃爍 lcd_w_cmd(0x86+n);//返回設置值顯示地址 } else { if(alarm==0) { if(m==0){hour++;if(hour==24) hour=0;} else if(m==3) {min++;if(min==60) min=0;} else if(m==6){sec++;if(sec==60) sec=0;} else {week++;if(week==7) week=0;} dispt(); //調用第二行顯示函數 lcd_w_cmd(0x0d); //游標閃爍 lcd_w_cmd(0xc4+m);//返回設置值顯示地址 } else { if(m==0){hourn++;if(hourn==24) hourn=0;} else if(m==3) {minn++;if(minn==60) minn=0;} disalarm(); //調用第二行顯示函數 lcd_w_cmd(0x0d); //游標閃爍 lcd_w_cmd(0xc7+m);//返回設置值顯示地址 } } } } break; case 0x7f: //按下減1鍵 { if(k==1) { if(f==0) { if(n==0){year--;if(year

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

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

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

5. 給我一個較復雜的C語言程序

好,給你一個有趣的程序,下面程序的作用是,輸入一個4位數,之後將這個數分解成4個數字,並將這4個數字組合成一個最大數和一個最小數,並將兩者相減,結果作為新的4位數,重復前面的步驟,最後的結果是什麼?自己測試一下。

#include <stdio.h>

void mysort(int *a, int size)
{
int i, j, k, t;

for (i = 0; i < size - 1; ++i)
{
k = i;

for (j = i; j < size; ++j)
{
if (a[k] > a[j])
k = j;
}

if (k != i)
{
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

void main()
{
int num, a[4], max, min;

do
{
scanf("%d", &num); /* 輸入最初的4位數 */
} while (num < 1000 || num > 9999);

while (num)
{
/* 將4位數分解成4個獨立的數字,並保存在a數組中 */
a[0] = num % 10;
num /= 10;
a[1] = num % 10;
num /= 10;
a[2] = num % 10;
num /= 10;
a[3] = num;

/* 排序數組元素 */
mysort(a, 4);

/* 從數組的4個元素中產生最大數字和最小數字 */
max = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];
min = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
/* 產生新的4位數 */
num = max - min;
printf("%d\n", num);

if (num == 6174)
break;
}

printf("The magic number is: %d\n", num);
}

閱讀全文

與復雜c代碼相關的資料

熱點內容
win10系統打開java 瀏覽:479
全日制編程什麼意思 瀏覽:447
筆記本創建區域網怎麼傳文件 瀏覽:871
怎樣查看id密碼 瀏覽:647
贛州極客晨星少兒編程怎麼樣 瀏覽:690
覺醒年代哪個app可以免費觀看 瀏覽:830
如何關閉win10觸摸屏幕 瀏覽:761
蘋果142不能傳文件 瀏覽:128
如何看歷史底部數據 瀏覽:230
怎麼在電腦上下軟體或安裝app 瀏覽:798
qq頭像電影截圖情侶 瀏覽:87
安卓的網路位置設置在哪 瀏覽:973
編程俠官網如何登錄 瀏覽:484
借貸王app怎麼樣 瀏覽:552
qq黑鑽手機怎麼開通 瀏覽:465
dnf85版本爆ss視頻 瀏覽:514
gitlog前一個版本 瀏覽:718
蘋果6手機屏幕周邊多出一圈黑色 瀏覽:131
phpword插件 瀏覽:264
win10重置並清理驅動器 瀏覽:893

友情鏈接