2 supersuperna123 supersuperna123 于 2016.04.18 20:56 提问

关于三角形的判定问题 谢谢各位

题目如下
给定三条边,请你判断一下能不能组成一个三角形。

Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;

Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。

Sample Input
2
1 2 3
2 2 2

Sample Output
NO
YES

代码如下
#include
#include
int main()
{
int n,i,p;
double a[100][100];
double d,b,c;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i {
for(p=0;p {
scanf("%lf",&a[i][p]);
}
d=a[i][0];b=a[i][1];c=a[i][2];
if(d+b>c && fabs(d-b) {
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
这是我用数组做的当我不用数组的时候像这样
#include
#include
int main()
{
int n,i;
double a,b,c;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i {
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c && fabs(a-b)<c)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
就对了
第一个代码提示Runtime Error(ACCESS_VIOLATION)
找不出原因 求指教谢谢了

5个回答

caozhy
caozhy   Ds   Rxr 2016.04.18 21:14

第一个程序输入不对,应该这么写
scanf("%d",&n)
for (int i = 0; i < n; i++)
{
//每组数据的判断
scanf("%d %d %d", &a, &b, &c);
...
}

supersuperna123
supersuperna123 您好 我同意您的意思 用一个单个数组来读入 数字,请问下用二维数组来读入的时候就是把a,bc,换成a[i][0 ai1 ai2该怎么写呢?谢谢您
一年多之前 回复
supersuperna123
supersuperna123 您好 我同意您的意思 用一个单个数组来读入 数字,请问下用二维数组来读入的时候就是把a,bc,换成a[i][0 ai1 ai2该怎么写呢?谢谢您
一年多之前 回复
supersuperna123
supersuperna123 您好 我同意您的意思 用一个单个数组来读入 数字,请问下用二维数组来读入的时候就是把a,bc,换成a[i][0 ai1 ai2该怎么写呢?谢谢您
一年多之前 回复
supersuperna123
supersuperna123 您好 我同意您的意思 用一个单个数组来读入 数字,请问下用二维数组来读入的时候就是把a,bc,换成a[i][0 ai1 ai2该怎么写呢?谢谢您
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.04.18 21:15

double a[100][100];占用的栈空间是100*100*8/1024=80M左右,栈直接爆炸了
一般栈的大小在1~几M,由编译器和操作系统决定

qq423399099
qq423399099 回复caozhy: 还真是,多谢大神
一年多之前 回复
caozhy
caozhy 算错了吧。100x100x8/1024=80k吧。
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.19 09:46

三角形问题
三角形问题
凸多边形区域划分为三角形问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

HOLY3KILL
HOLY3KILL   2016.08.03 15:31

楼主你第一个代码申明了a[100][100],但你有没有想过要是测试数据n>100呢?你数组就越界了啊!
若n=101时,你的
for (p = 0; p<3; p++)
{
scanf("%lf", &a[i][p]);
}
是在向哪里输入数据呢?
然后程序就会死在这里,一直不停的等待输入数据,所以你提交代码当然会runtime error啦。

你自己可以将代码改一下,将a[100][100]改为a[1][3],然后n输入2;这样试试,你就会发现我说的问题

RALPHFJY
RALPHFJY   2016.11.05 18:39

做复杂了,将判定写成函数;

#include<stdio.h>
void s(int a,int b,int c){
    int count=0;
    if (a+b>c&&a+c>b&&b+c>a)
    printf("Yes\n");
    else
    printf("No\n");
}
int main(){
  int a;
  scanf("%d",&a);
  int i=0;
  for(i=0;i<a;i++){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    s(a,b,c);
  } 
  return 0;

} 

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!