首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一路ACM题目,发生了segmentation fault

2012-10-14 
一道ACM题目,发生了segmentation faulthttp://acm.hdu.edu.cn/showproblem.php?pid1017上面是题目的地址,

一道ACM题目,发生了segmentation fault
http://acm.hdu.edu.cn/showproblem.php?pid=1017
上面是题目的地址,杭电的ACM题,下面是我的代码

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int m,n;
struct node *next;
}myNode;
int main()
{
myNode *head;
myNode *p;
int count,i=1;
int judgeMent(int m,int n);
head=(myNode*)malloc(sizeof(myNode));
p=head->next;
p=(myNode*)malloc(sizeof(myNode));
printf("input two numbers:\n");
scanf("%d%d",&(p->n),&(p->m));
while(p->m!=0||p->n!=0)
{
p=p->next;
p=(myNode*)malloc(sizeof(myNode));
scanf("%d%d",&(p->n),&(p->m));
}
p=head->next;
while((p->m)!=0||(p->n)!=0)
{
count=judgeMent(p->m,p->n);
printf("Case %d: %d",i,count);
p=p->next;
i++;
}
return 0;
}
int judgeMent(int m,int n)
{
int a,b;
int count=0;
for(b=2;b<n;b++)
for(a=1;a<b;a++)
{
if((a*a+b*b+m)%(a*b)==0)
count++;
}
return count;
}
调试的时候到“while(p->m!=0||p->n!=0)”就发生错误了,不知道哪儿不对,求指导!

[解决办法]

C/C++ code
while( (p->m!=0)|| (p->n!=0))//编码习惯问题
[解决办法]
关键的问题在于,你的代码指针乱飞,完全没有掌握,建议好好看看关于C语言创建链表的文章,这里帮你改第一个的while循环中的代码,大致如下:
C/C++ code
myNode* tmp = (myNode*)malloc(sizeof(myNode));scanf("%d%d", &(tmp->n), &(tmp->m));p->next = tmp;p = p->next; 

热点排行