问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言输出一个N阶蛇形矩阵,看看这个程序哪里错了

发布网友 发布时间:2022-04-27 11:30

我来回答

3个回答

热心网友 时间:2023-09-15 05:46

又仔细看了一遍你的代码  DEBUG了一下  发现你是先输出左上半的元素然后计算右半部的 直接顺序输出数组 乍一看是没问题的 但是你忽略的是 输出的前提是必须先计算好值 你遍历输出到第2行第一个右半部分的元素的时候 这个元素还没有开始计算呢 而在你的程序里并没有察觉到这点而是直接输出了  所以那里就是0了  其他0元素也是这样 在被计算之前就输出了

避免你说的问题 你可以把输出挪出刚开始用来赋值的两个FOR循环即可

直接修改你的代码

#include <stdio.h>

#define SIZE 80

int a[SIZE][SIZE];

void main()

{int p,q;int n;

 printf("输入蛇形数组的维数:");

 

 scanf("%d",&n);

 

    for(p = 0; p < n; p++) 

 {

  for(q = 0; q < n; q++)

  {

   if((p + q) < n)

   {

    a[p][q] = (p + q) * (p + q + 1) / 2 + 1;

    

    if((p + q) % 2)     

     a[p][q] += q;

    else                

     a[p][q] += p;

    a[n-1-p][n-1-q]=n*n+1-a[p][q];

   }

   

  }

  

 }

 for(p = 0; p < n; p++) 

 {

 for(q = 0; q < n; q++)printf(" %4d ", a[p][q]);

 printf("\n\n");

 }

    getchar();getchar();

经过编译完全OK

热心网友 时间:2023-09-15 05:47

我先把程序给你写上,注释我一会再给你加上不懂的也可以直接hi我,我没有用递归,直接循环做的。刚刚修改答案的时候IE突然出问题了,没办法,我得赶着去上课了,没时间帮你写了。
#include <stdio.h>
#define SIZE 80

int a[SIZE][SIZE];
int main()
{
printf("输入蛇形数组的维数:");
int n;
scanf("%d",&n);

int p,q;
for(p=0;p<n;p++)
{
for(q=0;q<n;q++)
{
if((p+q)<n) //当矩阵是上半部分的时候
{
if((p+q)%2) //
a[p][q]=(p+q)*(p+q+1)/2+q+1;
else
a[p][q]=(p+q)*(p+q+1)/2+p+1;
}
else //当矩阵是下半部分的时候
{
if((p+q)%2)
a[p][q]=(p+q)*(p+q+1)/2+q+1-(p+q-n+1)*(p+q-n)-(p+q-n+1);
else
a[p][q]=(p+q)*(p+q+1)/2+p+1-(p+q-n+1)*(p+q-n)-(p+q-n+1);
}
printf("%4d ",a[p][q]);
}
printf("\n");
}
return 0;
}

热心网友 时间:2023-09-15 05:47

最简短的代码如下:
for(p = 0; p < n; p++) {
for(q = 0; q < n; q++) {
b[p][q] = (p + q) * (p + q + 1) / 2 + 1;
if((p + q) % 2) b[p][q] += q;
else b[p][q] += p;
if((p + q) >= n) //下半部分.
b[p][q] -= (p + q - n + 1) * (p + q - n + 1);
printf(" %4d ", b[p][q]);
}
printf("\n");
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我每过一段时间就有“鬼压床”?求解决方法! 低保户可以买产权房吗 民政审批低保户的条件有那些低保户年审会将名,下有小产权房作为审核条件... 什么情况下西班牙语的字母上要加一个上升或下降的符号? 除了这些有没有别的情况也用连字符: 书写法语时,连字符“-”是不能... 的必须是什么意思吗? 杭州43路公交车在那换乘599路公交车 杭州43路公交车到德胜西路站么 杭州德胜路到文二路坐车要多久 你好十月唯美句子 你好十月唯美的句子有哪些 编写程序,输出10行的蛇形数字金字塔 泰版流星花园第四集什么时候更新 得道多助是什么意思 高职考技能提升教程046期 随机数排序输出,蛇形输出,高考必备VB 泰版《流星花园》每周播几集? 用C语言输出一个N阶蛇形矩阵(随意输出n*n个数之后,不要从1开始的,是自己任意输出的n*n个数)。 得道多助失道寡助出自哪里 急!!!要求输出一个蛇形数组; 得道多助失道寡助的作者 如何打印蛇形矩阵? “得道者多助,失道者寡助”出自哪一本古代典籍 用C语言怎样输出一个N阶蛇形矩阵? 得道多助失道寡助的主旨是什么 c语言:建立N阶蛇形方阵并输出 《得道多助,失道寡助》的结论是什么 用c语言输出蛇形矩阵,我是新手,自己乱想了一个,觉得应该是对的,但输不出,求纠正!!! 输入一个数字,然后输出蛇形方阵。用C语言实现。 如何用指针表示 蛇行矩阵 的输出?如果直接输出,我倒是会,但是用指针把所有的输出表示出来,我就不会 正点原子的阿波罗STM32H743开发板怎么样? JAVA蛇形输出长方形。如图,新手,一晚上头都破了&#128557;,求解救。用for循环写的,回 C++求助!!!打印蛇形矩阵!!! 手机qq相册怎么锁住? “初闻涕泪满衣裳”和“清水鼻涕”中的“涕”表示不同的意思,你能否查阅一下资料告诉伙伴们。再举一例 手机qq怎么锁定竖屏??? 词语古时和现代意思不一样的有哪些 涕泗横流和独怆然而涕下的两个涕一样吗?顺便问下涕在古文的含义有哪些 在成语,文言文,古诗里有一些字词的意思与现在有较大差别,请写出带方框的字的意思,在思考与现在常用意 《孙楚学驴鸣》文言文中&quot;至,临,涕,毕&quot;意思是什么? 古文中字在句子中中不同的意思。。慢,窥,涕,修,方,谤,期,书,豆。。例如:间 又何间焉 参与 现代与古代字义不同的字有哪些?分别是什么意思? 如何区分文言文中的字词在现代的用法 文言文和现代文有什么不同 医疗责任保险是什么 欧美医疗责任保险保险条款 医疗责任保险是精神损害赔偿吗? 人保医责险保险范围 医责险保险范围是什么意思 湖北省基层医疗卫生机构医疗责任保险制度实施办法 医疗责任险的定义 众安保险与挂号网推出的医责险