标题:大一学生,学了一点C语言皮毛,周末突发奇想,想自己编一个最简单的计算器, ...
只看楼主
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
结帖率:100%
已结贴  问题点数:20 回复次数:27 
大一学生,学了一点C语言皮毛,周末突发奇想,想自己编一个最简单的计算器,无奈,无奈,遇到难解问题。
   由于刚刚才开始学习这门语言不久,可能我的问题在你们看来简直是太小太小了,但对于感兴趣的东西不想轻易放弃。请路过的师傅们,指点指点。拜谢!
   设计的思路是想从键盘输入由算术符“+,—,*,/”链接的两个数,输出的结果。
   
  大概长这样,输入 12+34,  输出12+34=46
  
#include <stdio.h>
int main()
{
    float a,b,y,s;
    printf("请输入需要计算的值:");
    scanf("%g*%g",&a,&b);
    if (a*b)
    {
    y=a*b;
    printf("%g*%g=%g\n",a,b,y);
    }
    else
    {                                                                              
        s=a+b;
        printf("%g+%g=%g\n",a,b,s);
    }
    return 0;
}
可能处处都是错,但提出来,我一定虚心求教。
我是这样想的,输入两个数,用if来判断是否为a*b,如果不是,就跳到else,执行。
之所以这样是因为,不能实现,输入不同的符号后,让计算机进行判断,再执行。笨人。
搜索更多相关主题的帖子: 计算器 大一学生 突发奇想 include C语言 
2013-11-02 14:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
程序代码:
#include <stdio.h>

int main()
{
    double a, b, result;
    char op;

    printf("请输入需要计算的值:");
    if( 3!=scanf(" %lf %c %lf",&a,&op,&b) || (op!='+' && op!='-' && op!='*' && op!='/') )
    {
        printf( "输入出错.\n" );
        return 1;
    }

    switch( op )
    {
    case '+': result=a+b; break;
    case '-': result=a-b; break;
    case '*': result=a*b; break;
    case '/': result=a/b; break;
    }
    printf( "%f%c%f = %f\n", a, op, b, result );

    return 0;
}
2013-11-02 14:36
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
得分:0 
回复 2楼 rjsp
感谢这两个词语 无法形容 你的无私帮助,你知道,当我在运行成功的时候,有多么高兴。对此,看了我的那个程序,觉得有点惭愧,错误已使我,目不忍睹。这条路,还很长,终有一天,我会赶上你的水平。。嘿嘿。还得去研究一下,你的思路,逻辑,多多学习。
2013-11-02 15:20
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
得分:0 
回复 2楼 rjsp
呵呵,改了一点细节东西,就更完美了。
printf( "%f%c%f = %f\n", a, op, b, result );


printf( "%g%c%g = %g\n", a, op, b, result );
你觉得怎么样,这样子,那个无用的零就可以去掉,看起来更美观些。。。
2013-11-02 15:28
haiboself
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:196
注 册:2013-10-23
得分:1 
有想法
2013-11-02 16:21
shiner凡
Rank: 5Rank: 5
来 自:梦境
等 级:职业侠客
帖 子:92
专家分:355
注 册:2013-10-27
得分:2 
看了2楼的思路,感觉各种语句用的好娴熟啊。

多多看书,多多学习。C++神马的,将来我也要很厉害。亲爱的自己,加油加油!!!!!
2013-11-02 16:48
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
得分:1 
回复 楼主 寒冷枫dl
switch 语句好做
2013-11-03 09:41
caimingri
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2013-11-2
得分:1 
大一的表示
if( 3!=scanf(" %lf %c %lf",&a,&op,&b) || (op!='+' && op!='-' && op!='*' && op!='/') )
看不懂?
3是什么   ???
还有就算3!=scanf(" %lf %c %lf",&a,&op,&b) 对了那就是真了  后面就不用计算了吧    那符号输错了怎么办
还有判断符号的怎么能用&&呢
2013-11-03 10:32
若风001
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2013-11-3
得分:1 
上面的程序,符号输错了,就会输出"输入出错“的呀,&&是and,且,的意思
2013-11-03 19:39
官少
Rank: 2
等 级:论坛游民
帖 子:11
专家分:21
注 册:2013-10-22
得分:1 
我也是大一的 表示上面的看的懂 但不知道那里错了
2013-11-03 19:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422938-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.880785 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved