猿问

编译计算器,不知道为什么运行时总是出错?

本人初学,想用c语言大体编一个计算器,现目前编译如下,机器显示编译没有问题,但运行结果并未按照顺序来,总是出现48.000000,49.000000,想问一下哪里出错了?是哪里逻辑有问题还是?

#include <stdio.h>
#include <ctype.h>
int main()
{
    int c,flag;
    float a,b,result;
    printf("欢迎来到小黄鸡会计算的世界\n");
    printf("小黄鸡最近学会了加减乘除,你可以来考考它\n");
    printf("请输入第一个数字\n");
    a=getchar();
    printf("%f\n",a);
    printf("请输入第二个数字\n");
    b=getchar();
    printf("%f\n",b);
    printf("请选择你所需要的运算,如你要进行加法运算,请输入1;减法运算,请输入2;乘法运算,请输入3;除法运算,请输入4.\n");
    flag=getchar();
    switch(flag){
        case 1: printf("结果是%f\n",result=a+b);
        case 2: printf("结果是%f\n",result=a-b);
        case 3: printf("结果是%f\n",result=a*b);
        case 4: printf("结果是%f\n",result=a/b);
        default:;
    }
    printf("小黄鸡很机智吧!\n");
    return 0;
}


mrs_empress
浏览 1598回答 3
3回答

慕斯8597481

把getchar换成scanf,也就是scanf("%f",&a);和scanf("%f",&b);以及scanf("%d",&flag);

mrs_empress

include <stdio.h>  #include <ctype.h>  int main() {  int c,flag; float a,b,result; printf("欢迎来到小黄鸡会计算的世界\n");     printf("小黄鸡最近学会了加减乘除,你可以来考考它\n");  printf("请依次输入第一、二个数字,和你所需要的运算符号(且我们规定加减乘除依次为1、2、3、4)\n");  scanf("%f",&a);  printf("%f\n",a);  scanf("%f",&b);  printf("%f\n",b);  scanf("%d",&flag);  switch(flag){  case 1: printf("结果是%f\n",result=a+b);break;  case 2: printf("结果是%f\n",result=a-b);break;  case 3: printf("结果是%f\n",result=a*b);break;  case 4: printf("结果是%f\n",result=a/b);break;  default:;  }  printf("小黄鸡很机智吧!\n");  return 0;  }已经改成这样了,为什么还不行?

慕斯卡3531659

有  两个问题 getchar 你每次输入一个数据  你还要输入 一个  回车符号  回车符号 会被接受    a=getchar();    getchar();//添加这个就好你  getchar  获得的是  数值的ascii  码值  0 对应的asc是  48  so  要用getchar的话  你应该  每个获取的值 剪掉48  依旧很麻烦  因为  getchar 似乎只能接受一个字符
随时随地看视频慕课网APP
我要回答