Ryoma 发表于 2014-4-12 20:03:58

低等计算器的问题

#include<stdio.h>

int main()
{
    int a,b,c,d;
        int k;
        int f(int,int);       
        for(;;)
        {
                printf("\n\n\n\n\n\n\n\t\t\t请输入第一个分数的分子分母,逗号隔开。\n\t\t\t\t\t");
                scanf("%d,%d",&a,&b);
                printf("\t\t\t请输入第二个分数的分子分母,逗号隔开。\n\t\t\t\t\t");
                scanf("%d,%d",&c,&d);
                if(b!=0 && d!=0)
                {
                        if(a*c == b*d)                                                                                                                /* 乘 */
                        {
                                printf("\t\t\t\t%d/%d * %d/%d = 1\n",a,b,c,d);
                        }
                        else if(a*c == 0)
                        {
                                printf("\t\t\t\t%d/%d * %d/%d = 0\n",a,b,c,d);
                        }
                        else if(a*c % b*d ==0)
                        {
                                printf("\t\t\t\t%d/%d * %d/%d = %d\n",a,b,c,d,(a*c)/(b*d) );
                        }
                        else
                        {
                                printf("\t\t\t\t%d/%d * %d/%d = %d/%d\n",a,b,c,d,a*c/f(a*c,b*d),b*d/f(a*c,b*d));
                        }

                        if(a*d == b*c)                                                                                                                /* 除 */
                        {
                                printf("\t\t\t\t%d/%d / %d/%d = 1\n",a,b,c,d);
                        }
                        else if(a*d == 0)
                        {
                                printf("\t\t\t\t%d/%d / %d/%d = 0\n",a,b,c,d);
                        }
                        else if(a*d % b*c ==0)
                        {
                                printf("\t\t\t\t%d/%d * %d/%d = %d\n",a,b,c,d,(a*d)/(b*c) );
                        }
                        else
                        {
                                printf("\t\t\t\t%d/%d / %d/%d = %d/%d\n",a,b,c,d,a*d/f(a*d,b*c),b*c/f(a*d,b*c));
                        }
                       
                        if(a*d+c*b == b*d)                                                                                                        /* 加 */
                        {
                                printf("\t\t\t\t%d/%d + %d/%d = 1\n",a,b,c,d);
                        }
                        else if(a*d+c*b == 0)
                        {
                                printf("\t\t\t\t%d/%d + %d/%d = 0\n",a,b,c,d);       
                        }
                        else if((a*d+c*b) % (b*d) == 0)                                                                                                       
                        {
                                printf("\t\t\t\t%d/%d + %d/%d = %d\n",a,b,c,d,(a*d+c*b) / (b*d));
                        }
                        else
                        {
                                printf("\t\t\t\t%d/%d + %d/%d = %d/%d\n",a,b,c,d,(a*d+c*b)/f(a*d+c*b,b*d),b*d/f(a*d+c*b,b*d));
                        }
                       
                        if(a*d-c*b == b*d)                                                                                                        /* 减 */
                        {
                                printf("\t\t\t\t%d/%d - %d/%d = 1\n",a,b,c,d);
                        }
                        else if(a*d-c*b == 0)
                        {
                                printf("\t\t\t\t%d/%d - %d/%d = 0\n",a,b,c,d);
                        }
                        else if((a*d-c*b) % b*d == 0)                                                                                                       
                        {
                                printf("\t\t\t\t%d/%d - %d/%d = %d\n",a,b,c,d,(a*d-c*b) / b*d);
                        }

                        else
                        {
                                printf("\t\t\t\t%d/%d - %d/%d = %d/%d\n",a,b,c,d,(a*d-c*b)/f(a*d-c*b,b*d),b*d/f(a*d-c*b,b*d));
                        }
                        fflush(stdin);
                }
                else
                {
                printf("\t\t\t\t    输入有误!");
                }
        }
                fflush(stdin);
                return 0;
}
int f(int x,int y)                                                                                /* 求结果的分子分母的最大公因数 */
{
        int a,b,t;
        if(x>y)
        {
                t=x;
                x=y;
                y=t;
        }
                a=x;
                b=y;
       
    while(b!=0)
    {
      t=a%b;
      a=b;
      b=t;
    }
        return a;
}
Bug 1:不懂怎么判断是否输入数字(两位以上);
Bug 2: 程序有时候能成功,有时候不成功。

牡丹花下死做鬼 发表于 2014-4-13 00:20:38

Bug 2现在真心没心情看了而且你也没多少注释
Bug 1的话#include<stdio.h>
#include<windows.h>
int main()
{
        int i = 0;
        char ch;
        printf("Please Input a number:");
        while ((ch = getchar())!='\n')
        {
                if ('0' <= ch && ch <= '9')
                {
                        i = i * 10 + ch-48;
                }
                else
                {
                        printf("你输入的不是数字!");
                        system("pause");
                        return 0;
                }
        }
        printf("你输入的是:%d",i);
        system("pause");

        return 0;
}

Ryoma 发表于 2014-4-13 11:44:38

牡丹花下死做鬼 发表于 2014-4-13 00:20 static/image/common/back.gif
Bug 2现在真心没心情看了而且你也没多少注释
Bug 1的话

Bug 1 我昨晚睡前想了想,是因为太罗嗦了,所以我今天决定优化一下

Ryoma 发表于 2014-4-13 11:45:17

Ryoma 发表于 2014-4-13 11:44 static/image/common/back.gif
Bug 1 我昨晚睡前想了想,是因为太罗嗦了,所以我今天决定优化一下

打错了 是bug2

1669145573 发表于 2014-4-13 12:10:21

学渣学习了

abel 发表于 2014-4-21 10:32:45

感谢楼主分享

So嗨 发表于 2014-4-26 17:13:05

int f(int x,int y)
在minn前面没声明,直接在mian后面定义。
可以在main里面运行?

Ryoma 发表于 2014-4-26 20:17:58

So嗨 发表于 2014-4-26 17:13 static/image/common/back.gif
int f(int x,int y)
在minn前面没声明,直接在mian后面定义。
可以在main里面运行?

在第七行申明了啊

So嗨 发表于 2014-5-2 22:08:44

Ryoma 发表于 2014-4-26 20:17 static/image/common/back.gif
在第七行申明了啊

函数内能声明函数?这么强大? 声明要在函数外面, 所以你这个声明应该在main函数之前

Ryoma 发表于 2014-5-3 13:17:14

So嗨 发表于 2014-5-2 22:08 static/image/common/back.gif
函数内能声明函数?这么强大? 声明要在函数外面, 所以你这个声明应该在main函数之前

可以申明,定义要在main函数外
页: [1]
查看完整版本: 低等计算器的问题