无情修罗 发表于 2014-12-16 22:32:36

希望各位能帮我解决一下这个小问题

本帖最后由 无情修罗 于 2014-12-16 22:45 编辑

#include<stdio.h>

int main()
{
      int d1,d2;
      double sum;
      char op;
      printf("Please input data1 op data2:");
      scanf("%d%c%d",&d1,&op,&d2);
      switch(op)
      {
      case'+':printf("\n%d+%d=%0.lf",d1,d2,(double)d1+d2);break;
      case'-':printf("\n%d-%d=%0.lf",d1,d2,d1-d2);break;
      case'*':printf("\n%d*%d=%0.lf",d1,d2,(double)d1+d2);break;
      case'/':
                if(d2==0)
                        printf("\nError! chu shu wei 0.\n");
                else
                        sum=(double)d1/d2;
                        printf("\n%d/%d=%ld",d1,d2,sum);break;
      default:
                printf("\nError");
      }
      
      return 0;
}
下面是题目:

编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。编程可用素材:printf("Please input data1 op data2: ")、printf("\nError! chu shu wei 0.\n")。


这个是我提交答案时的提示:
失分,未实现:格式符合要求,与示例一致
失分,未实现:加法计算正确
失分,未实现:减法计算正确
失分,未实现:乘法计算正确
失分,未实现:除法计算正确
失分,未实现:模运算计算正确
失分,未实现:当运算结果超出int型范围时计算正确
那个图是输出格式



myft@code 发表于 2014-12-17 01:10:57

输入函数scanf("%d %c %d",&data1,&op,&data3);

myft@code 发表于 2014-12-17 01:12:10

%d和%c要有空格

myft@code 发表于 2014-12-17 01:22:42

结果要整形(将double改为int),还差一个case '%',else后要用{}括起来(因为那是语句块!);你这个程序还没到达题目要求,建议再完善一下!

无情修罗 发表于 2014-12-17 18:37:38

myft@code 发表于 2014-12-17 01:22
结果要整形(将double改为int),还差一个case '%',else后要用{}括起来(因为那是语句块!);你这个程序还没到 ...

#include<stdio.h>
#include<stdlib.h>
int main()
{
        int d1,d2;
        long sum;
        char op;
        printf("Please input data1 op data2:");
        scanf("%d %c %d",&d1,&op,&d2);
        switch(op)
        {
        case'+':
                sum=d1+d2;
                printf("\n%d+%d=%d",d1,d2,sum);break;
        case'-':printf("\n%d-%d=%d",d1,d2,d1-d2);break;
        case'*':
                sum=d1*d2;
                printf("\n%d*%d=%ld",d1,d2,sum);break;
        case'/':
                if(d2==0)
                        printf("\nError! chu shu wei 0.\n");
                else
                       
                        printf("\n%d/%d=%ld",d1,d2,d1/d2);break;
        case'%':
                        if(d2==0)
                                printf("\nError! chu shu wei 0.\n");
               
                else
                        printf("\n%d%%%d=%d",d1,d2,d1%d2);break;
       
        default:
                printf("\nError");
        }
        system("pause");
        return 0;
}
失分,未实现:当运算结果超出int型范围时计算正确
这是伙修改之后的提示,不知怎么修改了!

myft@code 发表于 2014-12-17 23:26:24

你用的编译器 long 和 int 该是一样长的吧,

myft@code 发表于 2014-12-17 23:28:21

你用的编译器long 和 int 应该是分配相同的字节,换成long long 试试。

无情修罗 发表于 2014-12-18 21:57:41

myft@code 发表于 2014-12-17 23:28
你用的编译器long 和 int 应该是分配相同的字节,换成long long 试试。

还是不行

myft@code 发表于 2014-12-18 22:42:06

定义得时候要这样写:long long int sum;不能写成long long;如果还不行,那我也不知道了。

无情修罗 发表于 2014-12-19 08:55:13

myft@code 发表于 2014-12-18 22:42
定义得时候要这样写:long long int sum;不能写成long long;如果还不行,那我也不知道了。

谢谢,那我试一下

rubikchen 发表于 2015-1-20 16:14:55

#include<stdio.h>
int main()
{
    int a,b;
    char ch;
    puts("\t\tplease input data1 op data2");
    while(scanf("%d %c %d",&a,&ch,&b)!=EOF) //ctrl + z 结束
    {
    switch(ch)
    {
    case 'x':
    case 'X':
    case '*':
      printf("A X B =%.0f\n",(double)a*b*1.0);break;
    case '/':
      if(b==0)printf("\nError!chu shu bu wei 0\n");
      printf("A / B =%.2f\n",(double)a/b*1.0);break;
    case '+':
      printf("A + B =%.0f\n",(double)(a+b)*1.0);break;
    case '%':
      printf("A %% B = %d\n",a%b);break;
    case '-':
      printf("A - B = %d\n",a-b);
    }
    }
}

y290176346 发表于 2015-10-8 21:26:37

学习了
页: [1]
查看完整版本: 希望各位能帮我解决一下这个小问题