PTA提交一个用C语言写的程序 出现段错误,帮忙看看是哪的问题。谢谢

#include

int m, n;

int main()
{
int h_l[10];
int i, j, pos_i = 0, pos_j = 0;
int h_i = 0, len = 0;
while (1)
{
int L[10][10];
int min = 65535;
if ((scanf("%d %d", &m, &n)) == 2) //输入数据
{
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if ((scanf("%d", &L[i][j])) == 1)
;
else
break;
}
}
}
else
break;

    if (m == 0 && n == 0)
        break;

    for (i = 0; i < m; i++)
    {
        for ( j = 0; j < n; j++)
        {
            if (L[i][j]<min)
            {
                min = L[i][j];
                pos_i = i;
                pos_j = j;
            }
        }
        if (min == 0)
            break;
    }
    len++;
    h_l[h_i] = pos_i;
    h_l[h_i + 1] = pos_j;
}

for (int k = 0; k < len; k = k + 2)
    printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

return 0;

}

c
0

5个回答

m和n会不会大于10了,那样超过你数组的容量,越界就会出现段错误。

0
qq_37996584
CHN_WZY2121_yuyu 我输入的m和n都是8,没有大于10
一年多之前 回复

h_l[h_i] = pos_i;
h_l[h_i + 1] = pos_j;
这里下标会不会越界呢。

0
qq_37996584
CHN_WZY2121_yuyu 我在VS上运行是可以的,是提交PTA的时候才出现段错误。这里的下标也没越界啊
一年多之前 回复

谢谢帮忙,问题我通过把数组大小改大解决了。虽然之前都没有越界。

0

if (m == 0 && n == 0)
break;

for (i = 0; i < m; i++)
{
    for ( j = 0; j < n; j++)
    {
        if (L[i][j]<min)
        {
            min = L[i][j];
            pos_i = i;
            pos_j = j;
        }
    }
    if (min == 0)
        break;
}
len++;
h_l[h_i] = pos_i;
h_l[h_i + 1] = pos_j;

}

for (int k = 0; k < len; k = k + 2)
printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

return 0;

0

在while循环中,你的h_i值一直是0 ,
当你while循环差过10次之后, len > 10 下面的for循环中h_l[k + 1]会超过10
for (int k = 0; k < len; k = k + 2)
printf("%d %d\n", h_l[k] + 1, h_l[k + 1] + 1);

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言 使用链表的时候造成 段错误
1.非关联化一个空指针总是导致段错误!   #include &amp;lt;stdio.h&amp;gt;   int main (void) { int *ptr = NULL; *ptr = 0; return 0; } 输出结果: 段错误(核心已转储   非关联化一个空指针,然后分配(写一个值到一...
提交到PTA的套路
在PTA提交Java程序需要注意如下几个要点。 1. Main类与Scanner 1.1 Main类 你提交的所有程序都应该有一个Main类,并且必须是声明为public 1.2 输入与输出 Java中使用Scanner处理输入。你需要注意如下几个地方 程序开头必须import java.util.Scanner导入Scanner类。 使用Scanne
PTA——段错误
在PTA上做题,做出来个段错误,一查吓一跳,发篇博客冷静下。(#^.^#) 1076 Wifi密码 (15 分) 下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把...
C/C++捕获段错误,打印出错的具体位置(精确到哪一行)_转
转自:C/C++捕获段错误,打印出错的具体位置(精确到哪一行) 修订:2013-02-16 其实还可以使用 glibc 的 backtrace_symbols 函数,把栈帧各返回地址里面的数字地址翻译成符号描述的   修订:2011-06-11 背景知识: · 在linux/unix中的信号处理机制,知道signal函数与sigaction的区别 · 段错误的概念,CPU中断处理的步骤,中断向量表...
c语言中常见的几个段错误
通常导致段错误的几个直接原因: (1)解除引用一个包含非法值的指针 (2)解除引用一个空指针(常常由于从系统程序中返回空指针,并未检验就使用) (3)在未得到正确的权限时进行访问。例如,试图往一个只读文本段存储值就会引起段错误 (4)用完了堆栈或堆空间(虚拟内存虽然巨大但绝非无限)     以发生频率为序,最终可能导致段错误的常见编程错误是: 1.  坏指针值错误: 在指针赋值之前就用
PTA常见问题及解决方案
常见问题解答(FAQ) 评分 试题的解答提交后由评分系统评出即时得分,每一次提交会判决结果会及时通知;系统可能的反馈信息包括: 结 果 说 明 提交成功 对于判断、选择、填空题,系统已经接收到您的提交 稍后显示 对于判断、选择、填空题,在题目集关闭之前,不显示判题结果 已被覆盖 对于判断、选择、填空题,该提交已经被您的当前提交所覆盖,系统将只评判题目集关闭前对该题目的最后一次提交 等待评测 评测系...
PAT 1020月饼的代码实现及错误分析(C语言)
题目 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。 注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第...
C语言段错误调试
有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误"。 呵呵,这种问题我想很多人会经常遇到。遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自己写的代码没问题,现实就是现实。下面介绍一种方法,可以有效的定位出现"段错误的地方"。 当我们的程序崩溃时,内
PAT要注意的地方
PAT即是浙大OJ(OnlineJudge),网址是http://www.patest.cn/contests/pat-a-practise(因为分为普通级别,Advanced级别和top级别),链接中是Advanced级别的题目集,也是大家平常刷题用的最多的题集。 截图如下,其中,如果你A过(通过)的题目会标成红色的Y 右边是通过、提交和通过率。 楼主其实很早就开始刷PAT,用的以
PAT刷题之段错误
PAT刷题之段错误【updating…】 1.什么是段错误? 先给出一张图,所谓的段错误就是:Segmentation fault 在提交 pat 的一道题时,出现了这个段错误。其实更具体的报错是: Program received signal SIGSEGV,Segmentation fault. 我尝试使用不同的测试用例调试时,发现的确存在这个问题,如下: 2.如何解决? 可能是程序...
C语言指针段错误
一个网友问了我一个问题,一个C程序运行出现了段错误,这个问题非常好,很多初学者都容易犯这个错误,具体代码如下: 这个编译没有问题,但是运行是段错误    Segmentation fault 因为你定义了一个结构体指针p,用来指向此类结构体,但是你却没有给他赋值,此时p的值为NULL,你并没有在内存中为p分配任何空间,所以p->a=1这句就会出段错误。 修改方法1:可
C语言段违例,段错误例子
#include #include void bubble(int *s,int length); void swap(int *p,int *q); int main(){ int j; int s[10] = {6,5,8,41,5,3,50,6,10}; bubble(s,10); printf("the result of array i
段错误的原因和解决办法
"段错误"这个内存访问越界的错误 可能是数组越界,堆栈溢出 int count=0; char str[1000]; while((str[count]=getchar())!='\n')count++;  提交上去之后,会出现 段错误 ?? 因为C风格字符串不会自动检查是否越界并调整大小
PTA 数据结构与算法题目集(中文)5-7 六度空间 (30分)
#include #include /* bfs 起始结点的层数为0,以后的结点层数为上一结点层数+1 输出时%%  */ using namespace std; queuequ; int m[10001][10001],n,mm[10001],sum,vis[10001]; void bfs(int x) { if(vis[x] { for(int i=1;i {
大家帮忙投一票,谢谢
<br />前不久参加了一个电子电脑大赛  用C#写的一个邮件客户端软件<br />支持下吧!!!<br />投票地址:http://www.jxecstac.com/workShow.asp?Id=2181    <br />选D哈,非常感谢 <br />作品截图:<br /><br /> <br /> <br /> 
c语言中出现fprintf错误(中断)
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#define number 5struct item{ int a; char firstname[200]; char lastname[200]; int TIME; int jizhong; int zouleishu; int RBI;};struct NAME{ struct item goo...
及格名单----16级补考题1---结构体
Problem Description 期末考试到了,老师想让 bLue 帮忙写一个小程序,给他学生成绩表,让他筛选出及格学生的名单。 但是最近 bLue 很忙,你能帮他写出来吗? Input 输入数据有多组(数据组数不超过 100),到 EOF 结束。 对于每组数据: 第 1 行输入 1 个整数 n (1 &amp;amp;lt;= n &amp;amp;lt;= 100) 表示成绩单中的人数 接下来有 n 行,...
linux下运行程序后出现段错误的原因和解决案例
查了不少资料,好多都说是:地址错误,即你使用了没有声明的地址。 一 一个经典的例子: #include copyString(char *p1,char *p2) {   while(*p1!='\0') {   *p2=*p1;   p1++;   p2++;   }   *p2='\0'; } int main() {   char *a="I am a teacher
PAT段错误问题
#include &amp;lt;iostream&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;using namespace std;typedef struct {    int x;    int y;    int num;}PeaNut;bool DWGreater(const Pea...
C语言在子函数中调用malloc申请内存出现段错误
#include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;string.h&gt; void test(char *p) { p = (char*)malloc(10 * sizeof(char)); strcpy(*p, "123456789" ); } void main() { char ...
PAT 1074宇宙无敌加法器的代码实现及错误分析(C语言)
题目 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [...
Linux下运行C++程序产生“段错误”的原因及其解决办法
产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址。 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,它是一个48位的寄存器,其中的32位是保 存由它指向的gdt表,后
mooc浙大数据结构PTA习题之最大子列和问题(在线处理)
01-复杂度1 最大子列和问题(20 分)给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。...
C语言由于未包含头文件引起的段错误的两个例子
1. 未包含头文件引起函数返回值错误出错代码:myPointer = umalloc(xxx); if (myPointer) { myPointer-&amp;gt;memberA = aaaa; .... }在64位机器上,运行上面代码, 在执行到第4行的时候会出现段错误。原因:在上述代码中, umalloc 是在另一个文件uMem.c 里面定义的, 如下。文件声明在uMem,h中。但是上面...
提交java程序到pta的坑。。
最近在做pta,然后怎么提交也不正确,算法明明是正确的啊,原来要,,,, 你提交的所有程序都应该有一个Main类,并且必须是声明为public Java中使用Scanner处理输入。你需要注意如下几个地方 程序开头必须import java.util.Scanner导入Scanner类。 转载地址:点击打开链接...
PTA-找最长的字符串(C语言)
本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。 输入格式: 输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。 输出格式: 在一行中用以下格式输出最长的字符串: The longest is: 最长的字符串 如果字符串的长度相同,则输出先输入的字符串。 输入样例: 5 li wang zhang jin xiang 输出样例:...
C语言写快速排序
用c语言写快速排序,简单能够运行,可以看看是如何实现的。
C语言sprintf使用出现段错误
#include #include void Block(int function_no,int instrument_no) { char *function; char *instrument; char *result; sprintf(function,"%d",function_no); sprintf(instrument,"%d",instrument_no);
解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决
编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下。 gcc+gdb)输入命令行 运行 sudo apt-get install build-essential build-essential包含gcc和gdb等工具,是C语言的开发包。 安装完了可以执行 一般来说GDB主要调试的
深信服:输入一个字符串,帮忙统计字符串里面的每个单词出现的次数,以及非法单词的次数。非法单词的定义为:包含数字(0-9)的单词
深信服2018秋招笔试题: 输入一个字符串,帮忙统计字符串里面的每个单词出现的次数,以及非法单词的次数。非法单词的定义为:包含数字(0-9)的单词 输入一个字符串,长度小于1000,输入的字符仅包含(0-9,a-z,A-Z, . , : ! )及空格。 输出按单词的字母进行排序,每行为 : 单词    单词出现次数 最后一行输出非法单词个数 实例1: 输入: wow! Is won...
PTA-计算阶乘和(C语言)
对于给定的正整数N,需要你计算 S=1!+2!+3!+…+N!。 输入格式: 输入在一行中给出一个不超过10的正整数N。 输出格式: 在一行中输出S的值。 输入样例: 3 输出样例: 9 #include&amp;lt;stdio.h&amp;gt; int main() { int n=0,sum=0,t=1; scanf(&quot;%d&quot;,&amp;amp;n); for(int i=1;i&amp;lt;=n;i++)...
SIGSEGV段错误问题定位方法(踩内存)
现象:   程序死的时候出现屏幕打印如下:   Program received signal SIGSEGV, Segmentation fault. 定位:   1、bt,打印当前调用栈。如果不是踩了栈的内存,那么这一个命令可以看出死在哪里。   2、如果bt打印消息如下:0x00000000 in ?? ()       那么基本可以确定是栈被踩了。      栈被踩一般而言是
pta-旅游规划
在畅通工程里加上最短路可能的条件,这时候就要判断花的钱是否最短,两者结合就能AC https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划   (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径
【C++】用sort函数产生的段错误问题
sort函数的cmp必须按照规定来写,即必须只是 > 或者  比如: return a > b; return a  b; 而不能是 = ,(实际上等于号加了也是毫无意义,sort是不稳定的排序),否则可能会出现段错误
关于PTA中C语言习题中的错情分析和知识点遗漏
学完浙大翁老师的课程之后,觉得自己已经初窥门径,遂跑到PTA刷题测试,结果发现自己不仅错漏百出,有一些东西也确实没有掌握彻底,一些特殊算法和编程思路也缺乏头绪,在边刷边学中,自己对相关知识点也有了更新的认识,记录如下。(只是初级C语言的一些体会)1.关于判断语句中的==判断语句中的相等判断,容易错写为=,则判断语句变为赋值语句,恒为真或者假,大部分情况下编译不会出错,所以需要自己在书写过程中加以注...
PTA7-85:藏头诗
今天做了一道藏头诗的题目,感觉很难,其实,主要是要判断汉字每个占用2个字节,所以需要两个长度的数组去保存。其次,输入字符串,可以使用二维数组进行储存。附上代码。/* 题目:藏头诗 作者:Unis 日期:2018.3.4 Sunday */ #include&amp;lt;stdio.h&amp;gt; int main(){ char s[4][2000]; char t...
PTA-符号配对
请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。
日历系统 C语言日历系统
一个用C语言写的日历程序!一个用C语言写的日历程序!一个用C语言写的日历程序!一个用C语言写的日历程序!
PTA-数据结构 5-26 Windows消息队列 (25分)
消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。 输入格式: 输入首先给出正整数N(\le 10^5≤10​5​​),随后
PAT 1025反转链表的代码实现及错误分析(C语言)
题目 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。 输入格式: 每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(&amp;lt;= 10^5^)、以及正整数K(&amp;lt;=N),即要求反转的...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 人工智能培训谢谢 学习java看哪本书好