摘要:本文主要向大家介绍了C/C++知识点之C语言代码输出一个“魔方阵”,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言代码输出一个“魔方阵”,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
C语言代码输出一个“魔方阵”
算法实现:
本程序要输出魔方阵,魔方阵如下:
1) 8 1 6 2) 17 24 1 8 15
3 5 7 23 5 7 14 16
4 9 2 4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
了解题可知:
1.第一行中间一列的值为1。
所以用j=n/2+1确定1的列数,得出a[1][j]=1。
2.每一个数存放的行比前一个数的行数减1,列数加1。
行数用i=i-1确定,列数用j=j+1确定。
3.如果一个数行数为第一行,则下一个数行数为最后一行。
4.如果一个列行数为最后一列,则下一个数列数为第一列。
5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。
程序:
#include <stdio.h>
#define N 16
int main()
{
int a[N][N]={0},i,j,k,p,n;
p=1;
while(p==1)
{
printf("Enter n(1~%d): ",N);
scanf("%d",&n);
if((n!=0)&&(n<N)&&(n%2!=0))
p=0;
}
i=n+1;
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;
}
\
总结:
作为初学编程的第一个程序,总感觉有些低级,没什么技术性,不过还是学到了新的知识。相信经过之后的学习,我会懂得更多,会敲出有技术含量的代码。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号