このような問題は、漏れのないように出来る限り入念にいろいろなケースを考えて、それに対応するif文を書いていく必要がある。
ifの順序も関係するので、そこも良く考える必要がある。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
char *MSG_NT="Not a Triangle"; // 三角形でない
char *MSG_ET="an Equilateral Triangle"; // 正三角形
char *MSG_IT="an Isosceles Triangle"; // 二等辺三角形
char *MSG_RT="a Right Triangle"; // 直角三角形
char *MSG_ST="a Scaene Triangle"; // 不等辺三角形
int err=0;
double a,b,c;
err|=(sscanf(argv[1],"%lf",&a)!=1);
err|=(sscanf(argv[2],"%lf",&b)!=1);
err|=(sscanf(argv[3],"%lf",&c)!=1);
if(err)
printf(MSG_NT);
else if(a<=0 || b<=0 || c<=0)
printf(MSG_NT);
else if((a+b<=c)||
(b+c<=a)||
(c+a<=b))
printf(MSG_NT);
else if(a==b && b==c)
printf(MSG_ET);
else if(a==b || b==c || c==a)
printf(MSG_IT);
else if((a*a+b*b==c*c)||
(b*b+c*c==a*a)||
(c*c+a*a==b*b))
printf(MSG_RT);
else
printf(MSG_ST);
}