2 jiankeabcd jiankeabcd 于 2016.04.16 19:21 提问

c语言 简易加减计算器

设计一个能计算加减法的简单计算器 从键盘输入数字和运算符 输入等于号时结束计算并输出结果
输出例如下
$ ./a.out
10
+
15
-
5
=
20

下面是我自己编的

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
    char num1[80],num2[80];
    char a;
    int j,k,s=0;
    gets(num1);
    j=atoi(num1);
    k=atoi(num2);
    while(j!=EOF){
        scanf("%c",&a);
        if(a== '+'){
            gets(num2);
            s=j+k;
            j=s;
        }
        if(a== '-'){
            gets(num2);
            s=j-k;
            j=s;
        }
        if(a== '='){
            break;
        }
    }
        printf("%d",s);
    return 0;
}

这次是关于结构体的题目 要求用到gets() atoi()等
求大神看看应该怎么改

现在可以编译执行了 但是输出值不对
1+1算成1
0+1算成0

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.16 19:56
 if(scanf("%c",&a)== +)
->
scanf("%c",&a);
if (a == '+')
...
qq423399099
qq423399099   Ds   Rxr 2016.04.16 20:03

1.scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。

ps:例如减号要用单引号引起来'-'

CSDNXIAOD
CSDNXIAOD   2016.04.16 19:32

C语言简易计算器
C语言控制台简易计算器
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!