① C語言編寫一個回型矩陣
#include<stdio.h>
#define M 10
int data[M][M];
void max()
{
int tem;
int ctat;
int i,j;
i=j=0;
tem=ctat=1;
while(tem<M*M) //tem是1到M*M值變數
{ //把方向分為4中狀態 即 ctat 變數 上 下 左 右 (1 2 3 4)
data[i][j]=tem;
switch(ctat)
{
case 1:
{
if(j+1<M&&0==data[i][j+1]) //第一種狀態右
{
tem++;
j++;
}
else
ctat=2;
}
break;
case 2:
{
if(i+1<M&&0==data[i+1][j]) //下
{
tem++;
i++;
}
else
ctat=3;
}
break;
case 3:
{
if(j-1>=0&&0==data[i][j-1]) //左
{
tem++;
j--;
}
else
ctat=4;
}
break;
case 4:
{ //上
if(i-1>=0&&0==data[i-1][j])
{
tem++;
i--;
}
else
ctat=1;//又上 狀態1 依次 循環 至矩陣最後第2個值M*M-1;//最後第一個值有 本函數最後賦予
}
break;
default:
break;
}
}
data[i][j]=tem; //賦予最後一個 即 data[i][j]=M*M
}
void main()
{
int i,j;
max();
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%4d",data[i][j]);
printf("\n");
}
getch();}
② C語言回型矩陣
{
int c,m,n,i,j;
int t=0;
int a[20][20];
scanf("%d%d",&m,&n);
if(m>n)
c=n/2+1;
else
c=m/2+1;
for(i=0;i<c;i++)
{
for(/*j=0*/j=i;j<n-i-1;j++)
{
t++;
a[i][j]=t;
}
for(j=i;j<m-i-1;j++)
{
t++;
a[j][n-i-1]=t;
}
for(j=n-i-1;j>i;j--)
{
t++;
a[m-i-1][j]=t;
}
for(j=m-i-1;j>i;j--)
{
t++;
a[j][i]=t;
}
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("%d ", a[i][j]);
if(((j+1)%n) == 0)
printf("\n");
}
}
line12 我注釋掉你的一部分,後邊換成修改後的;看你代碼的意思是按回環依次復制,那麼外側一環賦值完成後,進入內一層環的時候,i和j都要+1的;你的i+1了,但j沒有。
③ C語言程序設計中,怎樣輸出一個回形數組
#include<stdio.h>
intmain()
{
inta[20][20],n,i,j,l,t,k=1;
scanf("%d",&n);
i=0;j=n-1;
for(l=n-1;l>0;l-=2)
{
for(t=0;t<l;t++)a[i++][j]=k++;
for(t=0;t<l;t++)a[i][j--]=k++;
for(t=0;t<l;t++)a[i--][j]=k++;
for(t=0;t<l;t++)a[i][j++]=k++;
i++;j--;
}
if(n%2)a[n/2][n/2]=k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf(" ");
}
return0;
}
④ 如何用C語言輸出一個n*m回型矩陣
int_tmain(intargc,_TCHAR*argv[])
{
intn=16,m=10;
for(inti=0;i<n;i++)
{
for(intj=0;j<n;j++)
{
if(i==0||i==n-1)
{
printf("#");
}
elseif(0<i<n-1)
{
if(j==0||j==n-1)printf("#");
elseif((n-m)/2==i||i==(n-m)/2+m-1)
{
if(j>=(n-m)/2&&j<=(n-m)/2+m-1)
{
printf("#");
}
elseprintf("");
}
elseif((n-m)/2<=i&&i<=(n-m)/2+m-1)
{
if(j==(n-m)/2||j==(n-m)/2+m-1)
{
printf("#");
}
elseprintf("");
}
else
{
printf("");
}
}
}
printf(" ");
}
while(1);
return0;
}
⑤ 一個c語言問題(輸出回型矩陣)
效果圖 最下面的連接 我另一個網路id 的blog
/* * * * * * * * * * * * * * * * * * * * * * * * * *
編譯平台 : Windows XP
程序作者 : veket_linux
編譯器 : GCC 3.4.2
* * * * * * * * * * * * * * * * * * * * * * * * * */
/*
螺旋矩陣-撞牆法
設置上下左右四面牆,遇到撞牆,改變移動方向,牆向內收縮
*/
#include<stdio.h>
int main()
{
int a[5][5];
int i;
int j;
int n;
int top;
int botton;
int left;
int right;
int d;
n = 25;
i = 0;
j = 0;
top = 0;
botton = 5;
left = -1;
right = 5;
d = 0;
for(n=1;n<=25;n++)
{
if(d == 0)
{
if(j==right)
{
j--;
right--;
d = 1;
i++;
n--;
continue;
}
else
{
a[i][j] = n;
j++;
}
}
if(d == 1)
{
if(i==botton)
{
i--;
botton--;
d = 2;
j--;
n--;
continue;
}
else
{
a[i][j] = n;
i++;
}
}
if(d == 2)
{
if(j==left)
{
j++;
left++;
d = 3;
i--;
n--;
continue;
}
else
{
a[i][j] = n;
j--;
}
}
if(d == 3)
{
if(i==top)
{
i++;
top++;
d = 0;
j++;
n--;
continue;
}
else
{
a[i][j] = n;
i--;
}
}
}
printf("the array is:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
⑥ 使用Java設計一個正方形矩陣類,實現輸出迂迴矩陣。 具體樣例看下圖。
packagecom.test;
importjava.util.Scanner;
classSquare{
privateintn;
privateintmData[][]=newint[20][20];
Square(intn){
this.n=n;
initData();
}
privatevoidinitData(){
inti,j;
intinit=1;
for(i=0;i<n;i++)
{
//以半徑為i的正方形周邊進行賦值
//按照順時針的方向
for(j=0;j<=i;j++)
mData[n-1-i][j]=init++;
for(j=i-1;j>=0;j--)
mData[n-1-j][i]=init++;
}
}
publicvoidprint(){
inti,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
System.out.print(mData[i][j]);
System.out.print(' ');
}
System.out.println();
}
}
publicstaticvoidmain(String[]args){
intn=1;
Scannersc=newScanner(System.in);
try{
n=sc.nextInt();
}catch(Exceptione){}
Squares=newSquare(n);
s.print();
}
}
你將上面的代碼保存為Square.java
放在包com.test中,可以直接運行的
⑦ C語言中的回形矩陣,怎麼辦
#include <iostream>
using namespace std;
void rectangle(int n, int m, char c, int flag){
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(i == 1 || i == n || j == 1 || j == m)
cout << c;
else {
if(flag)
cout << c;
else
cout << " ";
}
}
cout << endl;
}}
int main(){
int n, m, flag;
char c;
cin >> n >> m >> c >> flag;
rectangle(n, m, c, flag);
return 0;}
⑧ 用C++中面向對象的程序設計方法實現矩陣的常用演算法
#include<iostream>
usingnamespacestd;
classMatrix{
private:
introw;
intcol;
int**p;
public:
//矩陣的行列
Matrix(int*pm,intr,intc){
row=r;
col=c;
//創建二維數組
p=newint*[row];
for(inti=0;i!=row;++i){
p[i]=newint[col];
}
//矩陣元素賦值
if(pm!=NULL)
for(inti=0;i!=row;i++){
for(intj=0;j!=col;++j){
p[i][j]=pm[i*col+j];
}
}
}
//矩陣加法,結果存放在調用該函數的矩陣
voidadd_mm(Matrix&M){
for(inti=0;i<row;++i){
for(intj=0;j<col;++j){
this->p[i][j]+=M.p[i][j];
}
}
}
//矩陣減法,結果存放在調用該函數的矩陣
voidsub_mm(Matrix&M){
for(inti=0;i<row;++i){
for(intj=0;j<col;++j){
this->p[i][j]-=M.p[i][j];
}
}
}
//數與矩陣的乘法,結果存放在調用該函數的矩陣
voidmulti_num(intnum){
for(inti=0;i<row;++i){
for(intj=0;j<col;++j){
p[i][j]*=num;
}
}
}
//矩陣與矩陣的乘法,結果存放在新產生的矩陣中
Matrixmulti_mm(Matrix&M){
if(col!=M.row)//若不滿足矩陣相乘的條件,返回一個0行0列的矩陣。
returnMatrix(NULL,0,0);
MatrixnewM(NULL,row,M.col);
//初始化新矩陣
for(size_ti=0;i!=newM.row;++i){
for(size_tj=0;j!=newM.col;++j){
newM.p[i][j]=0;
}
}
for(inti=0;i!=row;++i){
for(intj=0;j!=M.col;++j){
for(intk=0;k!=col;++k){
newM.p[i][j]+=this->p[i][k]*M.p[k][j];
}
}
}
returnnewM;
}
//矩陣的轉置,返回一個新的轉置矩陣
Matrixtranspose(){
MatrixnewM(NULL,col,row);
for(inti=0;i<row;++i){
for(intj=0;j<col;++j){
newM.p[j][i]=p[i][j];
}
}
returnnewM;
}
voidmyDisplay(){
for(inti=0;i!=row;++i){
for(intj=0;j!=col;++j){
cout<<p[i][j]<<"";
}
cout<<endl;
}
}
};
intmain(){
intarr1[][3]={
{1,1,1},
{2,2,2}
};
intarr2[][3]={
{10,10,10},
{20,20,20}
};
cout<<"矩陣1:"<<endl;
Matrixm1(&arr1[0][0],2,3);
m1.myDisplay();
cout<<"矩陣2:"<<endl;
Matrixm2(&arr2[0][0],2,3);
m2.myDisplay();
cout<<"矩陣1加矩陣2:"<<endl;
m1.add_mm(m2);
m1.myDisplay();
cout<<"矩陣1減矩陣2:"<<endl;
m1.sub_mm(m2);
m1.myDisplay();
intnum=100;
cout<<"矩陣1與數"<<num<<"的乘法:"<<endl;
m1.multi_num(num);
m1.myDisplay();
intarr3[][2]={
{10,10},
{20,20},
{30,30}
};
Matrixm3(&arr3[0][0],3,2);
cout<<"矩陣3:"<<endl;
m3.myDisplay();
cout<<"矩陣1與矩陣3的乘法:"<<endl;
m1.multi_mm(m3).myDisplay();
cout<<"xxxxx"<<endl;//
cout<<"矩陣1的轉置:"<<endl;
m1.transpose().myDisplay();
system("pause");//按任意鍵繼續
return0;
}
執行結果:
⑨ C++輸出數字回形矩陣
voidmatrix(intn){
chard[2*9][2*9];
if(n>0&&n<=9){
intt=2*n-1;
inti,j;
ints=0,e=t-1;
for(i=0;i<n;i++){
for(j=s;j<=e;j++){
d[i][j]=d[j][i]=
d[j][e]=d[e][j]
=n-i+'0';
}
s++;
e--;
}
for(i=0;i<t;i++){
d[i][t]=0;
printf("%s ",d[i]);
}
}
}
intmain()
{
intn;
scanf("%d",&n);
matrix(n);
return0;
}
⑩ 輸入N,列印N*N的回形矩陣
列印機的程序出現漏洞,你買的是那個牌子的,可以上官網查找解決辦法!