Ⅰ 用c語言編程,輸入整數n,輸出相應方陣,比如n為5可得到下面方陣
#include <stdio.h>
#include <stdlib.h>
int main() {
int i,j,n;
printf("請輸入整數n:");
scanf("%d",&n);
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(i==j) printf("%d ", 1);
else printf("%d ", 0);
}
printf("
");
}
}
Ⅱ 怎樣用C語言輸出矩陣
定義二維數組作為矩陣,然後用兩個for循環列印出每個元素即可。
例如一個10x10的矩陣;
#define m 10
#define m 10
int a[m][n];
for(i = 0; i <m; i++){
for(j = 0; j < n; j++)
printf("%d",a[i][j]);
printf("\n");
}
Ⅲ 用C語言設計演算法輸出一個5*5階的螺旋方陣
我在ACM上寫了一個N*N階螺旋陣的題,
代碼給你了,可能有點長。
輸入5即有結果。
#include <stdio.h>
int main()
{
int n,k,a[30][30]={0},x=0,y=0,w[5]={1,1,1,1,1};
scanf("%d",&n);
k=2;
a[0][0]=1;
while(k<=n*n){
if(w[1]&&(x>0&&a[x-1][y]==0)) {
a[x-1][y]=k;
k++;
x--;
if(x>0&&a[x-1][y]==0)
w[1]=1,w[2]=0,w[3]=0,w[4]=0;
else w[1]=0,w[2]=1,w[3]=1,w[4]=1;
}
else if(w[2]&&(y<n-1&&a[x][y+1]==0)){
a[x][y+1]=k;
k++;
y++;
if(y<n-1&&a[x][y+1]==0)
w[1]=0,w[2]=1,w[3]=0,w[4]=0;
else w[1]=1,w[2]=0,w[3]=1,w[4]=1;
}
else if(w[3]&&(x<n-1&&a[x+1][y]==0)){
a[x+1][y]=k;
k++;
x++;
if(x<n-1&&a[x+1][y]==0)
w[1]=0,w[2]=0,w[3]=1,w[4]=0;
else w[1]=1,w[2]=1,w[3]=0,w[4]=1;
}
else if(w[4]&&(y>0&&a[x][y-1]==0)){
a[x][y-1]=k;
k++;
y--;
if(y>0&&a[x][y-1]==0)
w[1]=0,w[2]=0,w[3]=0,w[4]=1;
else w[1]=1,w[2]=1,w[3]=1,w[4]=0;
}
}
for(k=0;k<n;k++){
int t=1;
for(x=0;x<n;x++){
if(t){
if(n<=3) printf("%-d",a[k][x]);
else if(n<=9) printf("%-2d",a[k][x]);
else printf("%-3d",a[k][x]);
t=0;
}
else {
if(x==n-1) printf(" %-d",a[k][x]);
else {
if(n<=3) printf(" %-d",a[k][x]);
else if(n<=9) printf(" %-2d",a[k][x]);
else printf(" %-3d",a[k][x]);
}
}
}
printf("\n");
}
return 0;
}
Ⅳ c語言輸出魔方陣
#include<stdio.h>
main()
{
int a[16][16]={0};
int b,c,d,e,f;
printf("請輸入魔方陣的階數:");
scanf("%d",&b);
e=b/2;
d=0;
for(c=1;c<=b*b;c++)
{
a[d][e]=c;
if(a[(d-1+b)%b][(e+1+b)%b]==0)
{
d=(d-1+b)%b;
e=(e+1+b)%b;
}
else
{
d=(d+1+b)%b;
e=e%b;
}
}
for(d=0;d<b;d++)
{
for(f=0;f<b;f++)
printf("%d\t",a[d][f]);
printf("\n");
}
}
Ⅳ 求助C語言高手,關於魔方矩陣的問題
#include <stdio.h>
#include <conio.h>
#define N 15
void main()
{
int iArr[N][N] = {0}; /*魔法陣數組*/
/*定義變數,i,j為循環控制變,iNum表示數組的行數列數,iPox、iPoy分別代表數組的行數、列數,iPosx、iPosy分別代表保存數組行數變數,保存數組列數變數*/
int i = 0, j = 0, iNum = 0, iPosx = 0, iPosy = 0, iPox = 0, iPoy = 0;
printf("input the number:\n"); /*輸入數組的行數列數*/
scanf("%d",&iNum);
if (iNum % 2 == 0 || iNum > 15 || iNum <= 0) /*判斷iNum是否為奇數*/
{
printf("ERROR!"); /*偶數,輸出錯誤提示*/
}
else
{ /*為奇數,進行處理*/
iPox = 0;
iPoy = iNum / 2; /*算出1所在的位置*/
for (i=1; i<=iNum*iNum; i++)
{
iArr[iPox][iPoy] = i;
iPosx = iPox;
iPosy = iPoy;
if (iPox == 0) /*如果上一個數的行數為第一行,則下一個數的行數為最下一行,列數同樣加1;*/
{
if (iPoy != iNum-1) /*上一個數是第一行最後一列時,則把下一個數放在上一個數的下面*/
{
iPox = iNum-1;
}
else
{ /*每一個數存放的行比前一個數的行數減1,列數加1(右上方)*/
iPox++;
iPoy--;
}
}
else
{
iPox--;
}
if (iPoy == iNum-1) /*當上一個數的列數為最後一列時,下一個數的列數應為第一列,行數減去1;*/
{
iPoy = 0;
}
else
{
iPoy++;
}
if (iArr[iPox][iPoy] != 0) /*如果按上面規則確定的位置上已有數時,則把下一個數放在上一個數的下面*/
{
iPox = iPosx+1;
iPoy = iPosy;
}
}
printf("The array is :\n");
for (i=0; i<iNum; i++) /*輸出該數組*/
{
for (j=0; j<iNum; j++)
{
printf("%3d",iArr[i][j]);
}
printf("\n");
}
}
getch();
}
Ⅵ 用c語言輸出一個矩形旋轉的數字方陣
#include <stdio.h>
#define N 5 //階數
int main(void)
{
int a[N][N];
int i,j,m,t;
t=1;
for(m=1;m<=(N+1)/2;m++)
{
i=m-1;
for(j=m-1;j<(N-m);j++)
a[i][j]=t++;
for(i=m-1;i<(N-m);i++)
a[i][j]=t++;
for(j=N-m;j>m-1;j--)
a[i][j]=t++;
for(i=N-m;i>m-1;i--)
a[i][j]=t++;
}
if(N%2==1) a[N/2][N/2]=t;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getchar();
}
Ⅶ 用C語言如何編程列印出由1到n^2的自然數構成的魔方陣,
奇數魔方陣就是將數字排列在nxn(n為奇數)的方陣上,要求滿足各行、各列與各對角線的和相同。如下圖所示,是n=5的奇數魔方陣。
一般程序語言的陣列多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到余數為1就向下,否則就往右(左)上。
Ⅷ 用C語言輸出「魔方陣」
這個是17以內奇數階和四階的!!!
#include<stdio.h>
void main()
{
int x,i,j,fl,k=0,a[18][18]={0};
printf("請輸入層數:");
scanf("%d",&x);
if((x!=4)&&(x%2==0)||(x<0)&&(x>18))
fl=0;
else if(x==4)
{
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
k+=1;
a[i][j]=k;
}
}
for(i=0;i<x;i++)
for(j=0;j<x;j++)
{
if(((i==j)&&(i<2))||((j==x-i-1)&&(j>2)))
{
k=a[i][j];a[i][j]=a[x-i-1][x-j-1];a[x-i-1][x-j-1]=k;
}
}
}
else
{
i=0;
j=x/2;
a[0][j]=1;
for(k=2;k<=x*x;k++)
{
i=i-1;
j=j+1;
if(i<0&&j>x-1)
{
i=i+1;
j=j-1;
}
else
{
if(i<0)i=x-1;
if(j>x-1)j=0;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
}
if(fl==0)
printf("無此魔方陣!\n");
else
{
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
}
Ⅸ 求 c語言 輸出 1到n^2的自然數構成的魔方陣。
魔方陣是用來鍛煉學生的對二維數組元素的精確控制能力的。演算法如下
魔方陣的排列規律如下:
⑴將1放在第一行中間一列;
⑵從2開始直到n×n止各數依次按下列規則存放;每一個數存放的行比前一個數的行數減1,列數加1(例如三階魔方陣,5在4的上一行後一列);
⑶如果上一個數的行數為1,則下一個數的行數為n(指最下一行);例如1在第一行,則2應放在最下一行,列數同樣加1;
⑷當上一個數的列數為n時,下一個數的列數應為1,行數減去1。例如2在第3行最後一列,則3應放在第二行第一列;
⑸如果按上面規則確定的位置上已有數,或上一個數是第一行第n列時,則把下一個數放在上一個數的下面。例如按上面的規定,4應該放在第1行第2列,但該位置已經被占據,所以4就放在3的下面;
Ⅹ 請編程達人用c語言編寫一個程序輸出魔方陣
#include <stdio.h>
#define N 16 //這里可以修改N的值
int main()
{
int a[N][N],i,j,k,p,m,n;
p=1;
while(p==1) /*要求階數為1~15的商數*/
{ printf("Enter n(n=1~15):"); //可以輸入小於等於N-1的整數
scanf("%d",&n);
if((n!=0)&&(n<=N-1)&&(n%2!=0)) p=0;
}
for(i=1;i<=n;i++) /*初始化*/
for(j=1;j<=n;j++) a[i][j]=0;
j=n/2+1; /*建立魔方陣*/
a[1][j]=1;
for(k=2;k<=n*n;k++)
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++) /*輸出魔方陣*/
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}