求一个程序运行中的错误!!!

闲谈共视 2012-05-14 10:04:48

#include<stdio.h>
#include<malloc.h>
int main()
{
int n;
int *p1,*p2,*p3;
int q1,q2,q3;
int cnt=0;
printf("请输入数组的组数:");
scanf("%d\n",&n);
if (n<1)
{
printf("n 输入值不对,n必须大于0");
printf("请再次输入数组的组数:\n");
scanf("%d",&n);
}
p1=(int*)malloc(int(n));
p2=(int*)malloc(int(n));
p3=(int*)malloc(int(n));
for (int i=0;i<n;i++)
{
scanf("%d,%d,%d\n",&p1[i],&p2[i],&p3[i]);
}
q1=p1[0];
q2=p2[0];
q3=p3[0];
/* for (i=1;i<n;i++)
{
if(p1[i]>=q1&&p2[i]>=q2&&p3[i]>=q3) //极小值的求证过程
{
q1=p1[i];
q2=p2[i];
q3=p3[i];
cn++;
continue;
}

}*/

for (i=1;i<n;i++)
{
if (q1>p1[i])
{
q1=p1[i];
}
if (q2>p2[i])
{
q2=p2[i];
}
if (q3>p3[i])
{
q3=p3[i];
}

}
for (i=0;i<n;i++)
{
if (p1[i]==q1&&p2[i]==q2&&p3[i]==q3)
{
cnt++;
}
}

printf("最小元素的数目为:%d\n",cnt);
free(p1);
free(p2);
free(p3);
*p1=NULL;
*p2=NULL;
*p3=NULL;
return 0;
}

出现的错误是,当自己设置三元数组数值后(程序完成的操作是判断出三元组的最大三元组的个数) 必须多数出一个数组才输出运算结果 并且出先debug error的错误(亲们可以自己在软件上运行一下就知道了 纠结着呢)
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
freud.wy 2012-05-17
  • 打赏
  • 举报
回复
p1=(int*)malloc(int(n));
p2=(int*)malloc(int(n));
p3=(int*)malloc(int(n));

改成
p1=(int*)malloc(n*sizeof(int));
p2=(int*)malloc(n*sizeof(int));
p3=(int*)malloc(n*sizeof(int));
freud.wy 2012-05-17
  • 打赏
  • 举报
回复
我试了下把你的scanf改一下就可以了
scanf("%d\n",&n);改成scanf("%d",&n);
scanf("%d,%d,%d\n",&p1[i],&p2[i],&p3[i]);改成scanf("%d %d %d",&p1[i],&p2[i],&p3[i]);
具体为啥我也不太清楚

wq19901103wq 2012-05-15
  • 打赏
  • 举报
回复
不明白什么意思,你的意思是测试用例n=1的时候就不能运算吗

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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