當前位置:首頁 » 網頁前端 » web編程九宮格
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web編程九宮格

發布時間: 2022-06-14 23:45:23

A. 九宮格的做法

1. PS 製作法

推薦大家使用這種方法,因為做出來的圖是真正的九張圖,並且在微信朋友圈裡完美拼接。

(1)在 Photoshop 中打開圖片,選擇「裁剪工具」,按住 shift 鍵,把圖片截出一個正方形。

(2)在「裁剪工具」的位置右擊,選擇「切片工具」,然後右擊圖片,選擇「劃分切片」。把「水平劃分為」和「垂直劃分為」都勾選上,數字都填 3 ,點「確定」。

(3)接下來的一步非常關鍵,點擊「文件」-「存儲為 Web和設備所用格式」,按住 shift 鍵把九張切片全都選中,把右上方默認的 GIF 格式改為 JPEG 格式,點擊「存儲」即可。

(4)桌面上會多出一個命名為 images 的文件夾,打開文件夾,裡面就是 9 張我們切好的圖片,自動按照順序編號。

注意:做好後,需要用網頁版微信向手機微信傳輸這九張圖片,一定要按照編號順序一張一張耐心傳,一次性傳過去由於網路原因會導致順序被打亂!之後把傳到手機的圖片每張都按順序保存到手機,發朋友圈的時候也要注意按左上角到右下角的順序上傳圖片。

2. PPT 製作法

這種方法做出來的實際上是一張圖片,不涉及排序,把圖傳到手機上會比較方便,但微信朋友圈中一張圖片會比九張圖片總共的面積小,所以效果不如 PS 法的好。

(1)新建一個版式為「空白」的 PPT ,插入圖片,同樣選擇裁剪工具,按住 shift 鍵,把圖片截出一個正方形。

(2)插入一個 3*3 的表格,把「標題行」和「鑲邊行」的默認對勾去掉。選中所有單元格,將「底紋」改為「無填充顏色」,將「筆顏色」改為白色,筆劃粗細改為 4.5 磅,然後在「邊框」中選擇「內部框線」。

(3)拉大表格,使表格和正方形圖片完全重合。Ctrl+A 全選,右擊邊框右下角,在彈出菜單里選擇「另存為圖片」,選擇 JPEG 格式保存即可。

B. 職場中PPT很常用,如何製作出好看的九宮格拼圖

在別人的PPT演示中,常常會看到如下圖所示的九宮格拼圖:看起來簡約大方又讓人眼前一亮,讓枯燥的PPT演講頓時添了幾分詩意。

方法二、合並形狀的拆分

在Office 2013 及以上版本中,支持圖片與形狀之間進行「合並形狀」操作。

1、在圖片上的橫向、縱向分別繪制四個大小一致的長條矩形;

2、使用「對齊工具」里的「橫向分布」、「縱向分布」將長條矩形均勻分布;

3、先選中圖片,再全選(快捷鍵 Ctrl+A )所有矩形;

4、選擇「合並形狀」里的「拆分」將圖片拆分成九個獨立的小圖片。

怎麼樣,現在學會如何在PPT中製作出九宮格拼圖了嗎?方法多多,快點用起來吧!

C. 「九宮陣」智力游戲。用C++編程

123456789
456789123
789123456
231564897
564897231
897231564
312645978
645978312
978312645

程序如下:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int a[9][9];
int i,j,k,l;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
for (k = 0; k < 3; k++)
for (l = 0; l < 3; l++)
{
int x = k*3 + l;
x = (x%3) + ((x/3 + j)%3)*3;
x = x/3*3 + ((x + i)%3);

a[i*3 + k][j*3 + l] = x + 1;
}

for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

getchar();
return 0;
}
//---------------------------------------------------------------------------

D. web前端開發要學些什麼東西,以及學習順序,求大佬解答,謝謝了。

前端行業的薪資居高不下,對於想入門的小白卻不知道如何學起,今天愛前端考拉老師告訴你小白如何開啟前端學習以及需要掌握哪些知識點。
學習對象:0基礎,對互聯網充滿熱情,想要從事H5前端開發、全棧開發的學員;

第一階段 互聯網基本原理和HTML
互聯網基本原理、伺服器、瀏覽器、HTTP請求的概念。編程工具介紹、HTML簡介。HTML語義化標簽、p標簽和h系列標簽。HTML基本骨架深入、HTML骨架、HTML和XHTML的區別。元信息標記meta、設置頁面關鍵字、字元集、關鍵字、頁面描述。a標簽和img標簽,相對路徑、絕對路徑。ul、ol、dl標簽、div和span標簽、較不常用HTML標簽簡介。表單、提交表單action、傳送方法method、插入表單對象。HTML注釋、HTML字元實體。
第二階段CSS基礎和高級技巧
選擇器。文字屬性、顏色屬性。繼承性和層疊性,權重計算。CSS盒模型,width、height、padding、border、margin屬性。父子嵌套模型,使用Fireworks精確還原設計圖。float浮動屬性、浮動的意義、清除浮動的方法。瀏覽器兼容,CSS hack。 background系列屬性、css精靈、網頁上透明。超級鏈接的偽類、導航條。 position定位、定位小技巧。DIV+CSS布局。
第三階段 靜態網站製作項目
通過以上兩個階段的學習可以達到製作網頁的水平,學習要求。需要掌握搜索引擎優化的概念、頁面常用SEO技巧、學會有格調的製作頁面。iconfont字體圖標。一些常見的CSS高級技巧,比如負margin、壓線技術、滑動門、列自撐技術。較復雜布局網站的學習,學習製作2~3個頁面。通欄banner、大背景等時下流行的網站製作方法。精美企業站賞析、製作
第四階段JavaScript基礎
語句、執行順序、詞法結構、標識符、關鍵字、變數、常量、alert語句和console控制台。值和變數、數字、文本、布爾值、null和undefined。表達式和運算符、運算符概述。流程式控制制、賦值語句、條件判斷語句、if語句、if語句的嵌套、switch語句、循環控制語句、while語句、do…while語句、for循環。跳轉語句:continue語句、break語句。函數、參數、返回值、遞歸、作用域、全局變數、局部變數。內部對象、數組、字元串。
第五階段JavaScript DOM編程
事件與事件處理概述、事件與事件名稱、常用事件、事件處理程序的調用、DOM事件模型、事件流、 事件對象、注冊與移除事件。文檔對象的常用屬性、方法與事件、輸出數據。事件的三要素。DOM對象、DOM概述、DOM分層、DOM級別、DOM對象節點屬性、遍歷文檔樹、克隆刪除替換。動畫基礎知識、定時器、setInterval和setTimeout、運動效果、 實用的動畫、製作運動效果案例
第六階段jQuery頁面特效
jQuery對象和DOM對象、jQ選擇器、CSS操作、設置和獲取HTML、文本和值。事件、載入DOM、事件綁定、合成事件、事件對象的屬性。動畫、自定義動畫方法、動畫回調函數、停止動畫、其他動畫方法。jQuery對表單、表格的操作及更多應用、表單應用、表格應用。jQuery插件,jQueryUI,jQuery ease,jQuery mousewheel等。超多頁面特效!結合案例掌握了解jQuery插件的使用。
第七階段JavaScript進階
命名空間、對象擴展、數組化、主流框架引入的機制——domReady、無沖突處理。語言模塊、字元串的擴展與修復、數組的擴展與修復、數值的擴展與修復、函數的擴展與修復、 日期的擴展與修復、瀏覽器嗅探與特徵偵測 、判定瀏覽器、事件的支持偵測、樣式的支持偵測。類工廠、JavaScript對類的支撐、各種類工廠的實現。瀏覽器內置的尋找元素的方法、屬性模塊、如何區分固有屬性與自定義屬性。
第八階段HTML5和CSS3
HTML5概述、HTML5新特性、HTML5組織、HTML5構成、HTML5頁面的特徵、HTML基礎、HTML5全局屬性、HTML5其他功能、HTML5元素分類。實戰HTML5表單、新增的input輸入類型。HTML5音頻與視頻、HTML5多媒體技術概述、在HTML5中播放音頻。CSS3編碼規范、了解CSS3新增特性。CSS選擇器、屬性選擇器、結構偽類選擇器、UI偽類選擇器。旋轉動畫、縮放動畫、移動動畫、傾斜動畫。3D炫酷動畫效果實戰。
第九階段移動web和響應式網頁
視口、縮放 、解析度、物理解析度、設備像素比、dppx和dpi 、meta視口。百分比布局、流式布局、CSS3新的流式盒模型。觸摸和指針事件、觸摸事件、手勢事件 、其他事件、拖放、滾動層、事件和交互模式、移動端交互綜合實戰。zepto.js、jQuery Mobile等移動端常見框架。HTML5速成移動端框架。Bootstrap3 、調整響應式導航條斷點。移動優先、Bootstrap柵格系統、柵格系統原理、Bootstrap中的JavaScript交互、Bootstrap敏捷開發。
第十階段伺服器知識和PHP入門
後台語言和前台語言的區別。初識PHP、PHP語言的優勢、PHP 5的新特性、PHP的發展趨勢、PHP的應用領域。 PHP環境搭建和開發工具。PHP語言基礎、PHP變數、PHP運算符、 PHP的表達式、PHP編碼規范、流程式控制制語句、字元串操作、PHP數組、 PHP與Web頁面交互。資料庫技術概述、增刪改查。
第十一階段Ajax企業項目實戰開發
Ajax概述與Ajax初體驗、Ajax技術介紹、XMLHttpRequest對象詳解、動態載入和顯示數據、XMLHttpRequest對象概述、方法、屬性、發送請求、GET和POST請求、運行周期、使用JSON響應、Ajax實用包的封裝。JSON的解析、Underscore模板引擎、模板技術、動態組裝頁面、電話號碼歸屬地查詢、驗證碼等。Ajax實戰篇 、Ajax高級表單驗證程序 、Ajax動態聯動菜單、瀑布流。
第十二階段JavaScript面向對象
創建對象、屬性的查詢和設置、 刪除屬性、檢測屬性、枚舉屬性、屬性getter和setter、屬性的特性、對象的三個屬性、序列化對象、對象方法。類和模塊、類和原型、類和構造函數、類的擴充、類和類型、子類。原型、實例化和原型、 對象實例化、通過構造器判斷對象、繼承與原型鏈、構造函數和原型對象 、構造函數、原型對象 、[[Prototype]]屬性 、在構造函數中使用原型對象 、改變原型對象、內建對象的原型對象。
第十三階段canvas動畫和手機游戲
Canvas繪圖、基本知識、理解canvas坐標系、獲取canvas環境上下文、理解路徑、路徑操作API 、繪制線條 、繪制矩形 、繪制圓弧 、繪制貝塞爾曲線 、線條屬性 、線條顏色 、填充 、繪圖狀態。圖像API、使用canvas繪制圖像、坐標變換、繪制文字。游戲原理、製作2D游戲引擎、理解游戲循環、渲染引擎實現、使用引擎構建游戲實例、游戲常用演算法。
第十四階段Node.js企業項目開發
Node的特點、非同步I/O、事件與回調函數、單線程、跨平台、Node的應用場景、I/O密集型、CommonJS規范、Node的模塊實現、路徑分析和文件定位、模塊編譯、核心模塊、JavaScript核心模塊的編譯過程、網路編程、構建TCP服務。構建HTTP服務、構建WebSocket服務、網路服務與安全。MongoDB、Express、Mongoose、socket.io。小型微博系統、俄羅斯方塊對戰。Linux使用。
第十五階段信小程序
小程序概述、 小程序開發賬戶的注冊、獲得AppId下載使用開發者工具、認識默認的文件夾結構、appjson配置、雙大括弧差值和MVVM模式、小程序操作數字、小程序API起步、案例調色板、案例微博發布框、for循環指令、if判斷指令和復選按鈕組、阿里雲伺服器開通、請求服務數字和發出改變數字、get請求信息流案例、post請求和圖片上傳、資料庫mogodb、班級說說
第十六階段ECMAScript2016
簡介、let和const命令、變數的解構賦值、字元串的擴展、正則的擴展、數值的擴展、數組的擴展、函數的擴展、對象的擴展、Symbol、Set和Map數據結構、Proxy、Reflect、Iterator和for...of循環、Generator函數、Promise對象、非同步操作和Async函數、Class、Decorator、Mole、編程風格、讀懂規格、二進制數組、SIMD
第十七階段Yeoman腳手架
基本安裝、配置、HTML模板、圖片壓縮、構建工具、包管理器、JSLint測試。
第十八階段Grunt和Gulp構建工具
GIT、SVN、Grunt、Gulp、Webpack。通過代碼優於配置的策略,Gulp 讓簡單的任務簡單,復雜的任務可管理。利用 Node.js 流的威力,你可以快速構建項目並減少頻繁的 IO 操作。通過最少的 API,掌握 Gulp 毫不費力,構建工作盡在掌握:如同一系列流管道。
第十九階段Sass、Less和Stylus
sass中可以定義變數,方便統一修改和維護。用sass進行 選擇器的嵌套,表示層級關系。用sass中導入其他sass文件,最後編譯為一個css文件t。用sass中可用mixin定義一些代碼片段,且可傳參數,方便日後根據需求調用
第二十階段React.js構建視圖組件
React簡介、JSX、組件的生命周期、實例化、數據流、事件處理、組件的復合、mixin、DOM操作、動畫、性能優化、服務端渲染、周邊類庫。VUE數據模板、生命周期、過濾器。
第二十一階段VUE界面的前端庫
遇見Vue.js、數據綁定、指令、計算屬性、表單控制項綁定、過濾器、Class與Style綁定、過渡、綁定事件、組件、表單校驗、分組校驗、與服務端通信、RESTful調用。
第二十二階段React Native移動框架
React Native簡介、React Native開發基礎、常用組件介紹及實踐、TextInput組件、九宮格實現、NavigatorIOS組件、Touchable類組件、狀態機思維與狀態機變數、深入理解UI重新渲染的過程、Navigator組件工作機制、混合開發基礎、組件生命周期、數據存儲及React Native應用實現步驟。
第二十三階段 Cordova和PhoneGap
使用加速計和位置感測器、文件系統、存儲及本地資料庫、處理音頻、圖像和視頻、處理通訊錄、本地事件、使用XUI、使用jQuery Mobile進行用戶界面開發、PhoneGap插件擴展、開發工具及測試。
第二十四階段ionic framework
Ionic和Hybrid應用介紹、配置開發環境 、Ionic導航和核心組件、選項卡、高級列表和表單組件、開發高級應用、使用 Ionic 命令行代理、在頁面中使用 ionScroll、過濾器:轉換視圖中的數據。
第二十六階版本管理系統和項目打包測試
第二十七階段前端攻防、部署和SEO
第二十八階段WebGL和Three.js
第二十九階段TypeScript和Angula4

E. 前端JavaScript用webstorm怎麼在網頁上生成一個九宮格圖片

html代碼:

<ul class="nineUL" id="nineUL"></ul>


CSS代碼:

.nineUL{display:block; overflow:hidden; width:340px; margin:20px 0 0 50px;}

.nineUL li{display:block; width:100px; height:100px; overflow:hidden; float:left; margin-right:20px;}

.nineUL li img{vertical-align:middle; width:100%;}


JS代碼:

window.onload = function(){

for(var i=0; i<9; i++){

var html = "<li><img src='picture/icon/8.jpg' /></li>";

var u = document.getElementById("nineUL");

var li = document.createElement("li");

li.innerHTML = "<img src='picture/icon/8.jpg' />";

u.appendChild(li);

if(i>0 && (i%3 == 2)){

li.style.margin="0px 0px 10px 0px";

}

}

}

效果圖:

F. 81格的九宮格,用c語言編程,求助

#include"stdio.h"
//定義棧的最大長度
#defineMAXSTACKLENGTH81
//待求解的九宮格矩陣,空白位置用0表示
intjiuGongArray[][9]={{0,0,0,0,4,0,0,3,2},
{4,0,0,0,0,1,0,0,0},
{5,3,0,6,0,0,0,0,7},
{3,0,0,5,1,0,7,0,0},
{0,0,5,0,3,0,2,0,0},
{0,0,9,0,7,4,0,0,3},
{1,0,0,0,0,9,0,4,6},
{0,0,0,1,0,0,0,0,9},
{8,9,0,0,6,0,0,0,0}};
//空缺數據組成的矩陣,共有九個九宮格單元,從左到右,然後從上到下編號為0-8;
//例如:第一個九宮格單元空缺的數字為1,4,8,則矩陣dataNeedToBeInsert的第一行
//為{1,0,0,4,0,0,0,8,0}
intdataNeedToBeInsert[][9]={{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9}};
//定義棧單元的結構
typedefstruct
{
intxPosition;
intyPosition;
intjiuGongGePosition;
intnum;
}node;
//定義棧數組
nodestack[MAXSTACKLENGTH];
//由給定的九宮格矩陣,查找空缺的數據
voidFindDataToBeInsert(void)
{
inti,j;
intx,y;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
{
if(jiuGongArray[i][j]!=0)
{
x=(i/3)*3+j/3;
y=jiuGongArray[i][j]-1;
dataNeedToBeInsert[x][y]=0;
}
}
}
//輸出m*n的矩陣
voidPrintArray(int*ptr,intm,intn)
{
inti,j;
intdata;
inttemp;
temp=n-1;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
data=*(ptr+i*n+j);
printf("%d",data);
if(j==temp)
{
printf(" ");
}
}
}
//核實是否滿足結束條件
intCheckEnd(void)
{
inti,j,sum;
for(i=0;i<9;i++)
{
sum=0;
for(j=0;j<9;j++)
{
sum+=jiuGongArray[i][j];
}
if(sum!=45)
{
return-1;
}
}
for(j=0;j<9;j++)
{
sum=0;
for(i=0;i<9;i++)
{
sum+=jiuGongArray[i][j];
}
if(sum!=45)
{
return-1;
}
}
return0;
}
//從矩陣dataNeedToBeInsert[][]中查找下一個數據
intFindNextData(intm,intn,int*xPosition,int*yPosition)
{
intstate=0;
if(n>8)
{
n=0;
m++;
}
if(m>8)
{
state=CheckEnd();
if(state!=0)
return-1;
else
return1;
}
while(dataNeedToBeInsert[m][n]==0)
{
if(n<8)
n++;
else
{
n=0;
m++;
if(m>8)
{
state=CheckEnd();
if(state!=0)
return-1;
else
return1;
}
}
}
*xPosition=m;
*yPosition=n;
return0;
}
//核實元素對應的行和列是否有相同的數字
intCheckLine(intm,intn,intnum)
{
inti;
for(i=0;i<9;i++)
{
if(jiuGongArray[m][i]==num)
return-1;
}
for(i=0;i<9;i++)
{
if(jiuGongArray[i][n]==num)
return-1;
}
return0;
}
//核實是否滿足入棧條件
intCheckCanPush(intm,intn,int*position)
{
intstart=*position;
inti,temp1,temp2,temp3,temp4;
intnum;

temp1=(m/3)*3;
temp2=(m%3)*3;
num=dataNeedToBeInsert[m][n];

for(i=start;i<10;i++)
{
temp3=temp1+(start-1)/3;
temp4=temp2+(start-1)%3;

if(jiuGongArray[temp3][temp4]!=0)
{
start++;
continue;
}
if(CheckLine(temp3,temp4,num)!=0)
{
start++;
continue;
}
else
{
*position=start;
return0;
}
}

return-1;
}
//入棧
intPush(int*top,intxPosition,intyPosition,intjiuGongGePosition,intnum)
{
if(*top>=MAXSTACKLENGTH)
{
printf("Reachstacktop! ");
return-1;
}
else
{
(*top)++;
stack[*top].xPosition=xPosition;
stack[*top].yPosition=yPosition;
stack[*top].jiuGongGePosition=jiuGongGePosition;
stack[*top].num=num;
return0;
}
}
//出棧
intPop(int*top,int*xPosition,int*yPosition,int*jiuGongGePosition,int*num)
{
if(*top==-1)
{
printf("Reachstackbottom! ");
return-1;
}
else
{
*xPosition=stack[*top].xPosition;
*yPosition=stack[*top].yPosition;
*jiuGongGePosition=stack[*top].jiuGongGePosition;
*num=stack[*top].num;
(*top)--;
return0;
}
}
voidmain()
{
intend=0;
intline=0;
introw=0;
inttop=-1;
intpositionInUnitArray=1;
intstate=0;
intnum;

FindDataToBeInsert();

PrintArray(jiuGongArray,9,9);
while(end!=1)
{
state=FindNextData(line,row,&line,&row);
if(state==0)
{
state=CheckCanPush(line,row,&positionInUnitArray);
if(state==0)
{
state=Push(&top,line,row,positionInUnitArray,dataNeedToBeInsert[line][row]);
if(state==0)
{
jiuGongArray[(line/3)*3+(positionInUnitArray-1)/3][(line%3)*3+(positionInUnitArray-1)%3]=dataNeedToBeInsert[line][row];
row++;
positionInUnitArray=1;
}
else
end=1;
}
else
{
state=Pop(&top,&line,&row,&positionInUnitArray,&num);
if(state==0)
{
jiuGongArray[(line/3)*3+(positionInUnitArray-1)/3][(line%3)*3+(positionInUnitArray-1)%3]=0;
positionInUnitArray++;
}
else
end=1;
}
}
elseif(state==1)
{
printf(" ");
PrintArray(jiuGongArray,9,9);
end=1;
}
else
{
printf("Someerroroccur! ");
end=1;
}
}
}

G. java編程九宮格問題

要求:根據輸入的數字n,如:3,5,7...以矩陣顯示n行n列數,這些數由1~n*n構成,要求矩陣的每行每列及對角線上n個數之和相等 預備知識: 在距陣中,1在第一行正中,隨後的數字應放到上一個數字的右上方方格中,如果向上不行,就放到該列的最下方格子;如果向右不行,就放到該行的最左邊;如果都不行,就放到上一個數字的正下方;如果目標格子中已經有數字,也放到上一個數字的正下方 思路: 1) 使用2維數組預備存儲1~n*n這些數字 2) 1是放到第一行正中的,所以其索引號是:[0][(n-1)/2] 3) 隨後的數字,其索引號原則如下 1> num的行索引為 num-1 的 (行索引-1) , num的列索引為 num-1 的 (列索引+1) 2>如果發現num的行,列索引都越位(-1或n),則 num的行索引為 num-1 的 (行索引+1) , num的列索引為 num-1 的 (列索引) 3>如果發現num的行,列索引指向的位置已經有數字,則 num的行索引為 num-1 的 (行索引+1) , num的列索引為 num-1 的 (列索引) 4>如果發現num的行越位(-1),則 num的行索引為n-1 5>如果發現num的列越位(n),則 num的列索引為0 import java.util.Scanner; public class JiuGong { public static void main(String[] args) { Scanner s = new Scanner(System.in); int x = s.nextInt(); //輸入長度 int h = 0; //行 //在距陣中,1在第一行正中 int l = x / 2; //列 int[][] a = new int[x][x]; for (int i = 1; i <= x * x; i++) { a[h][l] = i; //運行提示溢出 //隨後的數字應放到上一個數字的右上方方格中 h--; l++; //3.如果都不行,就放到上一個數字的正下方 if (h < 0 && l >= x) { //先返回上一個數字 h++; l--; //再下移一行 h++; } //1.如果向上不行,就放到該列的最下方格子 else if (h < 0) { h = x - 1; } //2.如果向右不行,就放到該行的最左邊 else if (l >= x) { l = 0; } //4.如果目標格子中已經有數字,也放到上一個數字的正下方 else if (a[h][l] > 0) { //先返回上一個數字 h++; l--; //再下移一行 h++; } } //列印九宮格 for (int j = 0; j < x; j++) { for (int k = 0; k < x; k++) { System.out.print(a[j][k] + " "); } //換行 System.out.println(); } } }

採納哦

H. C語言編程輸出九宮格

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
main()
{
#define n 3
int a[n][n]={0},i,sum=0,j;
i=0;j=n/2;
a[0][j]=++sum;
while(sum<n*n+1)
{i--;j++;
if(i<0&&j>=n)
{i=i+2;j--;}
else
{if(i<0)
i=n-1;
if(j>=n)
j=0;
}
if(a[i][j]==0)
a[i][j]=++sum;
else
{
i=i+2;
j--;
a[i][j]=++sum;
continue;}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");}
getch();
}

I. VC怎麼編九宮格編程

#include "stdio.h"
//定義棧的最大長度
#define MAXSTACKLENGTH 81
//待求解的九宮格矩陣,空白位置用0表示
int jiuGongArray[][9]={{0,0,0,0,4,0,0,3,2},
{4,0,0,0,0,1,0,0,0},
{5,3,0,6,0,0,0,0,7},
{3,0,0,5,1,0,7,0,0},
{0,0,5,0,3,0,2,0,0},
{0,0,9,0,7,4,0,0,3},
{1,0,0,0,0,9,0,4,6},
{0,0,0,1,0,0,0,0,9},
{8,9,0,0,6,0,0,0,0}};
//空缺數據組成的矩陣,共有九個九宮格單元,從左到右,然後從上到下編號為0-8;
//例如:第一個九宮格單元空缺的數字為1,4,8,則矩陣dataNeedToBeInsert的第一行
//為{1,0,0,4,0,0,0,8,0}
int dataNeedToBeInsert[][9]={{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9}};
//定義棧單元的結構
typedef struct
{
int xPosition;
int yPosition;
int jiuGongGePosition;
int num;
}node;
//定義棧數組
node stack[MAXSTACKLENGTH];
//由給定的九宮格矩陣,查找空缺的數據
void FindDataToBeInsert(void)
{
int i,j;
int x,y;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
{
if(jiuGongArray[i][j]!=0)
{
x=(i/3)*3+j/3;
y=jiuGongArray[i][j]-1;
dataNeedToBeInsert[x][y]=0;
}
}
}
//輸出m*n的矩陣
void PrintArray(int *ptr,int m,int n)
{
int i,j;
int data;
int temp;
temp = n-1;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
data = *(ptr+i*n+j);
printf("%d ",data);
if(j == temp)
{
printf("\n");
}
}
}
//核實是否滿足結束條件
int CheckEnd(void)
{
int i,j,sum;
for(i=0;i<9;i++)
{
sum = 0;
for(j=0;j<9;j++)
{
sum += jiuGongArray[i][j];
}
if(sum != 45)
{
return -1;
}
}
for(j=0;j<9;j++)
{
sum = 0;
for(i=0;i<9;i++)
{
sum += jiuGongArray[i][j];
}
if(sum != 45)
{
return -1;
}
}
return 0;
}
//從矩陣dataNeedToBeInsert[][]中查找下一個數據
int FindNextData(int m,int n,int *xPosition,int *yPosition)
{
int state=0;
if(n>8)
{
n = 0;
m++;
}
if(m>8)
{
state = CheckEnd();
if(state != 0)
return -1;
else
return 1;
}
while(dataNeedToBeInsert[m][n] == 0)
{
if(n<8)
n++;
else
{
n = 0;
m++;
if(m>8)
{
state = CheckEnd();
if(state != 0)
return -1;
else
return 1;
}
}
}
*xPosition = m;
*yPosition = n;
return 0;
}
//核實元素對應的行和列是否有相同的數字
int CheckLine(int m,int n,int num)
{
int i;
for(i=0;i<9;i++)
{
if(jiuGongArray[m][i] == num)
return -1;
}
for(i=0;i<9;i++)
{
if(jiuGongArray[i][n] == num)
return -1;
}
return 0;
}
//核實是否滿足入棧條件
int CheckCanPush(int m,int n,int *position)
{
int start=*position;
int i,temp1,temp2,temp3,temp4;
int num;

temp1=(m/3)*3;
temp2=(m%3)*3;
num = dataNeedToBeInsert[m][n];

for(i=start;i<10;i++)
{
temp3 = temp1+(start-1)/3;
temp4 = temp2+(start-1)%3;

if(jiuGongArray[temp3][temp4]!=0)
{
start++;
continue;
}
if(CheckLine(temp3,temp4,num)!=0)
{
start++;
continue;
}
else
{
*position = start;
return 0;
}
}

return -1;
}
//入棧
int Push(int *top,int xPosition,int yPosition,int jiuGongGePosition,int num)
{
if(*top >= MAXSTACKLENGTH)
{
printf("Reach stack top!\n");
return -1;
}
else
{
(*top)++;
stack[*top].xPosition = xPosition;
stack[*top].yPosition = yPosition;
stack[*top].jiuGongGePosition = jiuGongGePosition;
stack[*top].num = num;
return 0;
}
}
//出棧
int Pop(int *top,int *xPosition,int *yPosition,int *jiuGongGePosition,int *num)
{
if(*top == -1)
{
printf("Reach stack bottom!\n");
return -1;
}
else
{
*xPosition = stack[*top].xPosition;
*yPosition = stack[*top].yPosition;
*jiuGongGePosition = stack[*top].jiuGongGePosition;
*num = stack[*top].num;
(*top)--;
return 0;
}
}
void main()
{
int end=0;
int line=0;
int row=0;
int top=-1;
int positionInUnitArray=1;
int state=0;
int num;

FindDataToBeInsert();

PrintArray(jiuGongArray,9,9);
while(end!=1)
{
state = FindNextData(line,row,&line,&row);
if(state == 0)
{
state = CheckCanPush(line,row,&positionInUnitArray);
if(state == 0)
{
state = Push(&top,line,row,positionInUnitArray,dataNeedToBeInsert[line][row]);
if(state ==0)
{
jiuGongArray[(line/3)*3+(positionInUnitArray-1)/3][(line%3)*3+(positionInUnitArray-1)%3]=dataNeedToBeInsert[line][row];
row++;
positionInUnitArray = 1;
}
else
end = 1;
}
else
{
state = Pop(&top,&line,&row,&positionInUnitArray,&num);
if(state == 0)
{
jiuGongArray[(line/3)*3+(positionInUnitArray-1)/3][(line%3)*3+(positionInUnitArray-1)%3] = 0;
positionInUnitArray++;
}
else
end = 1;
}
}
else if(state == 1)
{
printf("\n");
PrintArray(jiuGongArray,9,9);
end = 1;
}
else
{
printf("Some error occur!\n");
end = 1;
}
}
}