一个简单的判断三角形形状的C程序

        

        昨天写了一个判断三角形形状的程序,然后EZ发现了里面的无数个问题。

        原本我的程序是

#include
int main()
{
    int a,b,c;
    scanf("%d,%d,%d",&a,&b,&c);
    if(a+b>c&&b+c>a&&a+c>b)
    {
    if(a==b)
        if(b==c)
            printf("等边三角形\n");
        else
            printf("等腰三角形\n");
    else
        if(b==c)
            printf("等腰三角形\n");
        else
            if(c==a)
                printf("等腰三角形\n");
            else
                printf("不等边三角形\n");
    }
    else
        printf("不构成三角形");
    return 0;

}

         写成这样,自己一开始觉得没有什么问题,但是程序编译通过了,就是运行不到自己想要的结果。给EZ看了之后才知道这个原来是各种问题。先不说我这样写是不是简洁明了,单看格式就是各种问题。EZ也说了,我写程序的风格以后再不改会哭的。所以为了以后不被自己坑死,我还是要努力的养成好习惯,对吧~

        下面来罗列一下上面这个程序的问题:

         1、变量没有初始化;

         2、各种优先级不确定的情况下最好打括号;

         3、输入是没有检验scanf是否正确读取了数据;

         4、if和else后面的语句最好都打上中括号;

好了差不多就是这些。。

        一开始运行的结果不是自己想要的,但是只要改了上面说的几点,就能的到自己想的结果,这样程序就和自己的想法达成一致了,目的终于达到了~!

        EZ帮忙修改后的程序

#include
int main()
{
    int a=0,b=0,c=0;

    while(!scanf("%d",&a))
    {
    	printf("scanf error\n");
    	return 0;
    }

    while(!scanf("%d",&b))
    {
    	printf("scanf error\n");
    	return 0;
    }

    while(!scanf("%d",&c))
    {
   	printf("scanf error\n");
    	return 0;
    }

    if(a+b>c&&b+c>a&&a+c>b)
    {
        if(a==b)
        {
            if(b==c)
            {
                printf("等边三角形\n");
            }
            else
            {
                printf("等腰三角形\n");
            }
        }
        else
        {
            if(b==c)
            {
                printf("等腰三角形\n");
            }
            else
            {
                if(c==a)
                {
                    printf("等腰三角形\n");
                }
                else
                {
                    printf("不等边三角形\n");
                }
            }
        }
    }
    else
    {
        printf("不构成三角形");
    }

    return 0;

}

        细节决定成败,我知道我还需要加倍努力啊~~

        还有啊~EZ你的经验我有认真听并且吸收的哟!噗哈哈~3QQQQQQ!可能是练得比较少。。。然后有些会突然忘记,,,没有养成那个习惯。改ing......

你可能感兴趣的:(c)