为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
mrs_empress 2016-10-06 12:16:38
本人初学,想用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; }
查看完整描述

3 回答

已采纳
?
慕斯8597481

TA贡献1条经验 获得超3个赞

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

查看完整回答
3 反对 回复 2016-10-06
  • mrs_empress
    mrs_empress
    我改成这样了,可是不管输入什么都显示为1.000000,为什么呢? #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"); a=scanf("%f",&a); printf("%f\n",a); b=scanf("%f",&b); printf("%f\n",b); flag=scanf("%f",&flag); 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; }
  • 慕斯8597481
    慕斯8597481
    是scanf("%f",&b);而不是a=scanf("%f",&b);(这是你错的原因)还有,你的flag是int类型的,所以用scanf("%d",&flag);就可以了(虽然这个其实没影响,我就随口说说)
  • mrs_empress
    mrs_empress
    能在帮我看一下吗?我把代码和运行效果图发到回复里了,谢谢
?
mrs_empress

TA贡献11条经验 获得超2个赞

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; 
}

//img1.sycdn.imooc.com//57f65a65000164f306710431.jpg

已经改成这样了,为什么还不行?

查看完整回答
反对 回复 2016-10-06
?
慕斯卡3531659

TA贡献3条经验 获得超0个赞

有  两个问题 getchar 你每次输入一个数据  你还要输入 一个  回车符号  回车符号 会被接受

    a=getchar();

    getchar();//添加这个就好

你  getchar  获得的是  数值的ascii  码值  0 对应的asc是  48  so  要用getchar的话  你应该  每个获取的值 剪掉48  依旧很麻烦  因为  getchar 似乎只能接受一个字符



查看完整回答
反对 回复 2016-10-06
  • 3 回答
  • 0 关注
  • 1597 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信