c語言數據牆,語c牆匯總

本文目錄一覽:

C語言問題怎麼給運行窗口弄個像牆一樣的東西

你好!!

有兩個辦法解決這個問題:

1、檢測你外框的邊界,來確定是不是能移動方塊

2、設定你方塊能移動的步數,超過步數,就不能移動方塊

給你一個推箱子的遊戲,你玩玩,參考一下吧

數據結構編程C語言版

void PrintMaze(MazeType maze)

{//將標記路徑信息的迷宮輸出到終端(包括外牆)

int i,j,n,k;

n = (34 – maze.c)/2;

for(k=0; kn; k++)//讓迷宮居中

printf(” “);

printf(” “);

for(i=0;i=maze.c+1;i++)//列印列數名

{

printf(“%2d”,i);

if(i==9) //對齊

printf(” “);

}

printf(“\n”);

for(i=0;i=maze.r+1;i++)

{

for(k=0; kn; k++)//讓迷宮居中

printf(” “);

printf(“%2d”,i); //列印行名

for(j=0;j=maze.c+1;j++)

{

switch(maze.adr[i][j])

{

case ‘ ‘:

printf(” “);//路

break;

case ‘#’:

printf(“■”); //牆

break;

case ‘*’:

printf(“. “);//路徑

break;

case ‘@’:

printf(“◇”);//走過兩次的地方

break;

case ‘e’:

printf(“E “);//結束位置

break;

case ‘s’:

printf(“S “);//開始位置

break;

case ‘!’:

printf(“♀”);//人

break;

default:

printf(“? “); //出錯

}

}

printf(“\n”);

}

}

Status NextPosPlay(MazeType maze, PostType curpos)

{

//指示並返回下一位置的坐標

char c; //接收用戶輸入的方向

printf(“\n請輸入’w'(上)、’s'(下)、’a'(左)、’d'(右)回到出發點和輸入’H/h’可以尋求電腦幫助”);

do{

c = getch();

}while(c!=’w’c!=’s’c!=’a’c!=’d’c!=’h’c!=’W’c!=’S’c!=’A’c!=’D’c!=’H’);

switch(c)

{

case ‘d’: //右

case ‘D’:

curpos.c += 1;

break;

case ‘s’: //下

case ‘S’:

curpos.r += 1;

break;

case ‘a’: //左

case ‘A’:

curpos.c -= 1;

break;

case ‘w’: //上

case ‘W’:

curpos.r -= 1;

break;

case ‘h’: //推出,讓電腦幫助

case ‘H’:

return FALSE;

}

return OK;

}

Status PlayMazePath(MazeType maze, PostType start, PostType end)

{

PostType curpos, w; //curpos為當前步,w為上一步;

SElemType e; //堆棧存儲類型

curpos = start; //設置”當前位置”為”入口位置”

Stack S; //存儲走過的最簡路徑

InitStack(S);

do

{

if(Pass(maze, curpos)) //如果可以通過

{

maze.adr[curpos.r][curpos.c] = ‘!’; //’!’表示人,設置當前步為人,方便動態顯示

system(“cls”); //清屏

PrintMaze(maze); //動態輸出迷宮路徑

maze.adr[curpos.r][curpos.c] = ‘ ‘; //還原

w = curpos;

e.seat = curpos;

Push(S, e);

DeleteSameElem(S); //刪除重複的步子

if(!NextPosPlay(maze, curpos)) //接收下一步

{

return FALSE; //退出 讓電腦幫助

}

}

else

{

curpos = w; //退回到上一步

if(!NextPosPlay(maze, curpos)) //接收下一步

{

return FALSE; //退出 讓電腦幫助

}

}

if(curpos.r == start.r curpos.c == start.c) //若當前為出口則讓電腦幫助

{

return FALSE; //退出

}

}while(curpos.r != end.r || curpos.c != end.c);//當前位置為結束位置時推出循環

maze.adr[curpos.r][curpos.c] = ‘!’; //設置當前步為人,方便動態顯示

system(“cls”);

while(!StackEmpty(S)) //把存儲的步子放入數組

{

Pop(S,e);

maze.adr[e.seat.r][e.seat.c] = ‘*’; //設置路徑, 『*』表示路徑

}

PrintMaze(maze); //輸出帶有路徑的迷宮

printf(“\n\t\t這是你走過的最短路徑”);

return OK;

}

void PlayMaze()

{

MazeType maze;

char c; //接收用戶輸入的選擇

PostType start, end; //開始和結束點

int n, flag=1,m; //n表示系統迷宮和隨機迷宮 m表示難度

system(“cls”);

printf(“\n\n\n ┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴\n”);

printf(” ┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬\n”);

printf(” ┬┴┬ 1:使用系統默認迷宮 ┬┴┬\n”);

printf(” ┴┬┴ 2:使用隨機產生迷宮 ┴┬┴\n”);

printf(” ┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬\n”);

printf(” ┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴\n\n”);

printf(“請選擇:”);

do{

scanf(“%d”, n);

}while(n!=1 n!=2); //選擇系統迷宮或隨機迷宮

if(n == 2) //選擇隨機迷宮

{

RandomInitMaze(maze); //調用隨機產生迷宮的函數

system(“cls”);

PrintMaze(maze);

InputBeginEnd(maze, start, end); //輸入開始和結束點

}

else //選擇自帶的迷宮

{

m = SetMaze(maze); //調用設置自帶迷宮的函數

if(m == 1) //初級

{

start.r = 1; start.c = 1;

end.r = 9; end.c = 10;

}

else if(m == 2) //中級

{

start.r = 1; start.c = 1;

end.r = 15; end.c = 15;

}

else if(m == 3) //高級

{

start.r = 1; start.c = 1;

end.r = 20; end.c = 26;

}

maze.adr[start.r][start.c] = ‘s’;

maze.adr[end.r][end.c] = ‘e’; //把開始結束點顯示給用戶

PrintMaze(maze);

printf(“\n\t’S’表示出發點,’E’表示終止點”);

printf(“\n\t請按任意鍵”);

getch();

}

while(flag){

if(!PlayMazePath(maze, start, end))//迷宮求解

{

printf(“\n請問你需要電腦幫你嗎?(y/n):\n”);

do{

c = getchar();

}while(c != ‘y’ c != ‘Y’ c != ‘n’ c != ‘N’); //接收用戶是否需要電腦幫助

if(c == ‘y’ || c == ‘Y’) //需要幫助

{

if(!MazePath(maze, start, end)) //電腦計算

printf(“\n\t\t沒有路徑!\n”);

flag = 0;

}

else //不需要幫助 自己繼續找路徑

{

flag = 1;

}

}

else //找到路徑

{

printf(“\n\t\t\tGood!你找到了路徑!\n”);

flag = 0;

}

}

}

c語言的數據類型包括哪些

C語言的數據類型包括:基本類型、構造類型、指針類型、空類型。

其中構造類型中包括共用體、數組、結構體三種類型。基本類型中還包括整型、浮點型、字元型和枚舉型四種類型。

1、基本類型,也就是C語言中的基礎類型,其中包括整數類型、字元型、浮點型、枚舉類型。

2、構造類型,就是使用基本類型的數據,或者使用已經構造好的數據類型,進行添加、設計構造出新的數據類型,使其設計的新構造類型滿足待解決問題所需要的數據類型。它並不像基本類型那樣簡單,而是由多種類型組合而成的新類型,其中每一組成部分稱為構造類型的成員。

構造類型也包括三種形式:數組類型、結構體類型和共用體類型。

3、指針類型,C語言的精華是指針,指針類型不同於其他類型的特殊性在於:指針的值表示的是某個內存地址。

4、空類型,關鍵字是void,其主要作用在於:對函數返回的限定;對函數參數的限定。也就是說,一般一個函數都具有一個返回值,將其值返回調用者,這個返回值是具有特定的類型,但是當函數不必返回一個值時,就可以使用空類型設定返回值的類型。

c語言

C語言是一門面向過程、抽象化的通用程序設計語言,主要用於底層開發。以簡易的方式編譯,並處理低級存儲器。C語言支持跨平台操作,一個標準的C語言程序可以在許多計算機平台上進行編譯。

數據結構演算法(c語言) 迷宮求解

注釋非常詳細,希望對你有所幫助。

#includestdio.h

#includestdlib.h

#define M 15

#define N 15

struct mark //定義迷宮內點的坐標類型

{

int x;

int y;

};

struct Element //”戀”棧元素,嘿嘿。。

{

int x,y; //x行,y列

int d; //d下一步的方向

};

typedef struct LStack //鏈棧

{

Element elem;

struct LStack *next;

}*PLStack;

/*************棧函數****************/

int InitStack(PLStack S)//構造空棧

{

S=NULL;

return 1;

}

int StackEmpty(PLStack S)//判斷棧是否為空

{

if(S==NULL)

return 1;

else

return 0;

}

int Push(PLStack S, Element e)//壓入新數據元素

{

PLStack p;

p=(PLStack)malloc(sizeof(LStack));

p-elem=e;

p-next=S;

S=p;

return 1;

}

int Pop(PLStack S,Element e) //棧頂元素出棧

{

PLStack p;

if(!StackEmpty(S))

{

e=S-elem;

p=S;

S=S-next;

free(p);

return 1;

}

else

return 0;

}

/***************求迷宮路徑函數***********************/

void MazePath(struct mark start,struct mark end,int maze[M][N],int diradd[4][2])

{

int i,j,d;int a,b;

Element elem,e;

PLStack S1, S2;

InitStack(S1);

InitStack(S2);

maze[start.x][start.y]=2; //入口點作上標記

elem.x=start.x;

elem.y=start.y;

elem.d=-1; //開始為-1

Push(S1,elem);

while(!StackEmpty(S1)) //棧不為空 有路徑可走

{

Pop(S1,elem);

i=elem.x;

j=elem.y;

d=elem.d+1; //下一個方向

while(d4) //試探東南西北各個方向

{

a=i+diradd[d][0];

b=j+diradd[d][1];

if(a==end.x b==end.y maze[a][b]==0) //如果到了出口

{

elem.x=i;

elem.y=j;

elem.d=d;

Push(S1,elem);

elem.x=a;

elem.y=b;

elem.d=886; //方向輸出為-1 判斷是否到了出口

Push(S1,elem);

printf(“\n0=東 1=南 2=西 3=北 886為則走出迷宮\n\n通路為:(行坐標,列坐標,方向)\n”);

while(S1) //逆置序列 並輸出迷宮路徑序列

{

Pop(S1,e);

Push(S2,e);

}

while(S2)

{

Pop(S2,e);

printf(“–(%d,%d,%d)”,e.x,e.y,e.d);

}

return; //跳出兩層循環,本來用break,但發現出錯,exit又會結束程序,選用return還是不錯滴

}

if(maze[a][b]==0) //找到可以前進的非出口的點

{

maze[a][b]=2; //標記走過此點

elem.x=i;

elem.y=j;

elem.d=d;

Push(S1,elem); //當前位置入棧

i=a; //下一點轉化為當前點

j=b;

d=-1;

}

d++;

}

}

printf(“沒有找到可以走出此迷宮的路徑\n”);

}

/*************建立迷宮*******************/

void initmaze(int maze[M][N])

{

int i,j;

int m,n; //迷宮行,列 [/M]

printf(“請輸入迷宮的行數 m=”);

scanf(“%d”,m);

printf(“請輸入迷宮的列數 n=”);

scanf(“%d”,n);

printf(“\n請輸入迷宮的各行各列:\n用空格隔開,0代表路,1代表牆\n”,m,n);

for(i=1;i=m;i++)

for(j=1;j=n;j++)

scanf(“%d”,maze[i][j]);

printf(“你建立的迷宮為(最外圈為牆)…\n”);

for(i=0;i=m+1;i++) //加一圈圍牆

{

maze[i][0]=1;

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

}

for(j=0;j=n+1;j++)

{

maze[0][j]=1;

maze[m+1][j]=1;

}

for(i=0;i=m+1;i++) //輸出迷宮

{

for(j=0;j=n+1;j++)

printf(“%d “,maze[i][j]);

printf(“\n”);

}

}

void main()

{

int sto[M][N];

struct mark start,end; //start,end入口和出口的坐標

int add[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//行增量和列增量 方向依次為東西南北 [/M]

initmaze(sto);//建立迷宮

printf(“輸入入口的橫坐標,縱坐標[逗號隔開]\n”);

scanf(“%d,%d”,start.x,start.y);

printf(“輸入出口的橫坐標,縱坐標[逗號隔開]\n”);

scanf(“%d,%d”,end.x,end.y);

MazePath(start,end,sto,add); //find path

system(“PAUSE”);

}

測試數據,演算法複雜度你就自己來寫吧,如果你連這都不自己做,那你一定是在應付作業。勸你還是自己運行測試一下吧,免得答辯時老師問你,什麼都不知道,那你就悲劇了。祝你好運!!

wall 2在c語言中是什麼意思

wall2在c語言中是牆2的意思。

w的意思是關閉編譯時的警告,也就是編譯後不顯示任何warning,因為有時在編譯之後編譯器會顯示一些例如數據轉換之類的警告,這些警告是我們平時可以忽略的。W選項類似-Wall,會顯示警告,但是只顯示編譯器認為會出現錯誤的警告。在編譯一些項目的時候可以-W和-Wall選項一起使用。

C語言數據結構 老鼠走迷宮問題

/* 迷宮矩陣

1 1 1 1 1 1 1 1 1 1

1 0 0 0 0 1 0 0 0 1

1 1 1 0 0 1 0 1 0 1

1 0 0 0 1 0 0 0 0 1

1 0 0 0 0 1 0 1 0 1

1 1 0 1 0 0 0 0 0 1

1 0 0 1 1 1 0 1 1 1

1 1 0 0 0 1 0 0 0 1

1 1 1 1 1 1 1 1 1 1

*/

#includestdio.h

#define m 7

#define n 8

void path()

{

int maze[m+2][n+2] ;

int move[4][2]={ {0,-1},{-1,0},{0,1},{1,0} };

int s[54][3];

int top=0;

int i,j,k,f=0;

int g,h,p;

for(i=0;im+2;++i)

for(j=0;jn+2;++j)

scanf(“%d”,maze[i][j]);

maze[1][1]=2;

s[top][0]=1;

s[top][1]=1;

s[top][2]=0;

++top;

while(top!=0f==0)

{

–top;

i=s[top][0];

j=s[top][1];

k=s[top][2];

while(k4)

{

g=i+move[k][0];

h=j+move[k][1];

if(g==mh==nmaze[g][h]==0)

{

for(p=0;ptop;++p)

printf(“%3d,%d\n”,s[p][0],s[p][1]);

printf(“%3d,%d\n”,i,j);

printf(“%3d,%d\n”,m,n);

f=1;

}//if

if(maze[g][h]==0)

{

maze[g][h]=2;

s[top][0]=i;

s[top][1]=j;

s[top][2]=k;

++top;

i=g;

j=h;

k=0;

}//if

k=k+1;

}//while

}//while

if(f==0)

printf(“no path\n”);

}//pathvoid main()

{

path();

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312714.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 09:47
下一篇 2025-01-06 15:17

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29

發表回復

登錄後才能評論