新手求教,高手请进!!

zzhengxin 2016-11-03 01:18:39
/*输出n阶蛇形矩阵*/
#include <stdio.h>
int main()
{
int a[20][20]={0},b=1,n,i,j,flag;
printf("请输入n的值\n");
scanf("%d",&n);
i=0,j=n-1;
a[i][j--]=b++;
while(a[i][j]<n*n)
{
if(i==0)
{
a[i++][j++]=b++;
flag=0;
}
if(j==n-1)
{
a[i++][j]=b++;
a[i--][j--]=b++;
flag=1;
}
while(i!=0&&j!=0)
{
if(flag==0)
a[i++][j++]=b++;
else
a[i--][j--]=b++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}

例如输入n=5,输出为
15 7 6 2 1
16 14 8 5 3
22 17 13 9 4
23 21 18 12 10
25 24 20 19 11

为什么我编译没错,运行直接说停止工作。。
求教!!!
急!!
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ck2333 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 zzhengxin 的回复:
[quote=引用 1 楼 qq_36409192 的回复:] 1.首先说下你编程习惯的问题。你的编程习惯特别不好,在写这种很绕的程序的时候(其实是任何程序),你居然没有任何注释,这会很大的降低你程序的可读性,就如同你现在,出了问题,在程序中找半天也看不出来。2.你这个程序的的语句上没什么错误,错在你程序的内容上不对,自己好好琢磨一下你自己写的程序吧!一个优秀的程序员必须具备查错能力(哪怕花上很多时间),靠别人帮你把错误提出来,你的能力得不到任何提高。
。。。我一一般弄完在加注释。。。。 崩溃了调式不了[/quote] 个人给你一个建议,你在写程序的时候,写了一个小部分就在后面加个注释,这样对你回头再读的时候带来了便利。不要等写完再回头加,这是一个习惯问题,再说了,如果你这是一个大型程序,那么等你写完了,你确定你前面写的东西你还记得吗?养好一个编程习惯,这对你是特别有帮助的。
zzhengxin 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 zzhengxin 的回复:
[quote=引用 1 楼 qq_36409192 的回复:] 1.首先说下你编程习惯的问题。你的编程习惯特别不好,在写这种很绕的程序的时候(其实是任何程序),你居然没有任何注释,这会很大的降低你程序的可读性,就如同你现在,出了问题,在程序中找半天也看不出来。2.你这个程序的的语句上没什么错误,错在你程序的内容上不对,自己好好琢磨一下你自己写的程序吧!一个优秀的程序员必须具备查错能力(哪怕花上很多时间),靠别人帮你把错误提出来,你的能力得不到任何提高。
。。。我一一般弄完在加注释。。。。 崩溃了调式不了[/quote] 可以调试了,谢谢
zzhengxin 2016-11-03
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。 代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
崩溃了不会调试。。。
zzhengxin 2016-11-03
  • 打赏
  • 举报
回复
引用 1 楼 qq_36409192 的回复:
1.首先说下你编程习惯的问题。你的编程习惯特别不好,在写这种很绕的程序的时候(其实是任何程序),你居然没有任何注释,这会很大的降低你程序的可读性,就如同你现在,出了问题,在程序中找半天也看不出来。2.你这个程序的的语句上没什么错误,错在你程序的内容上不对,自己好好琢磨一下你自己写的程序吧!一个优秀的程序员必须具备查错能力(哪怕花上很多时间),靠别人帮你把错误提出来,你的能力得不到任何提高。
。。。我一一般弄完在加注释。。。。 崩溃了调式不了
赵4老师 2016-11-03
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。 代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
小灸舞 2016-11-03
  • 打赏
  • 举报
回复
帮你调试了下发现while(i!=0&&j!=0)这个循环里,a[i++][j++] = b++;越界崩溃。
你确定你这个while循环能出来?
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
ck2333 2016-11-03
  • 打赏
  • 举报
回复
1.首先说下你编程习惯的问题。你的编程习惯特别不好,在写这种很绕的程序的时候(其实是任何程序),你居然没有任何注释,这会很大的降低你程序的可读性,就如同你现在,出了问题,在程序中找半天也看不出来。2.你这个程序的的语句上没什么错误,错在你程序的内容上不对,自己好好琢磨一下你自己写的程序吧!一个优秀的程序员必须具备查错能力(哪怕花上很多时间),靠别人帮你把错误提出来,你的能力得不到任何提高。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧