鱼C论坛

 找回密码
 立即注册
查看: 2586|回复: 11

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

[复制链接]
发表于 2014-12-16 22:32:36 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 无情修罗 于 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")。


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



QQ截图20141216223129.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 01:10:57 From FishC Mobile | 显示全部楼层
输入函数scanf("%d %c %d",&data1,&op,&data3);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 01:12:10 From FishC Mobile | 显示全部楼层
%d和%c要有空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 01:22:42 From FishC Mobile | 显示全部楼层
结果要整形(将double改为int),还差一个case '%',else后要用{}括起来(因为那是语句块!);你这个程序还没到达题目要求,建议再完善一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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;
}
失分[15],未实现:当运算结果超出int型范围时计算正确
这是伙修改之后的提示,不知怎么修改了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 23:26:24 From FishC Mobile | 显示全部楼层
你用的编译器 long 和 int 该是一样长的吧,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-17 23:28:21 From FishC Mobile | 显示全部楼层
你用的编译器long 和 int 应该是分配相同的字节,换成long long 试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-18 21:57:41 | 显示全部楼层
myft@code 发表于 2014-12-17 23:28
你用的编译器long 和 int 应该是分配相同的字节,换成long long 试试。

还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-18 22:42:06 From FishC Mobile | 显示全部楼层
定义得时候要这样写:long long int sum;不能写成long long;如果还不行,那我也不知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-19 08:55:13 | 显示全部楼层
myft@code 发表于 2014-12-18 22:42
定义得时候要这样写:long long int sum;不能写成long long;如果还不行,那我也不知道了。

谢谢,那我试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
    }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-8 21:26:37 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 11:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表