| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2593 人关注过本帖
标题:大一学生,学了一点C语言皮毛,周末突发奇想,想自己编一个最简单的计算器, ...
只看楼主 加入收藏
寒冷枫dl
Rank: 2
等 级:论坛游民
帖 子:23
专家分:18
注 册:2013-11-2
收藏
得分:0 
回复 8楼 caimingri
我试验了一下,发现做简单的运算,功能不变,照常满足需要。

#include <stdio.h>
 
int main()
 {
     float a, b, result;
     char ch;
 
    printf("请输入需要计算的值:");
    scanf(" %f %c %f",&a,&ch,&b);
    switch(ch)
     {
     case '+': result=a+b; break;
     case '-': result=a-b; break;
     case '*': result=a*b;break;
     case '/': result=a/b;break;
     default:printf("输入有错\n");
     }
     printf( "%g%c%g = %g\n", a, ch, b, result );
 
    return 0;
 }
改一点,删除了if( 3!=scanf(" %lf %c %lf",&a,&op,&b) || (op!='+' && op!='-' && op!='*' && op!='/') )
     {
         printf( "输入出错.\n" );
         return 1;
     }
 。正常的计算,那段代码的作用我没懂多少,只有问一下版主。
2013-11-03 23:38
凝固汽油弹
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-4
收藏
得分:1 
%.0f与%g有什么区别??????
2013-11-04 20:46
Gametang93
Rank: 1
等 级:新手上路
帖 子:12
专家分:6
注 册:2013-9-8
收藏
得分:1 
回复 9楼 若风001

if( 3!=scanf(" %lf %c %lf",&a,&op,&b) || (op!='+' && op!='-' && op!='*' && op!='/') )"||"不是或吗?那如果运算符号输成了字母,scanf(" %lf %c %lf",&a,&op,&b)这一部分是对的啊,那整个语句的就是对的,那就不是不会打印出“输入错误”了吗?还有那个3是干嘛用的啊?
2013-11-04 22:07
Gametang93
Rank: 1
等 级:新手上路
帖 子:12
专家分:6
注 册:2013-9-8
收藏
得分:1 
回复 9楼 若风001
我试了一下,如果把||改为"&&",运行就会有问题了,这是为什么啊?
2013-11-04 22:11
跳跃的橘子皮
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-10-31
收藏
得分:0 
回复 14楼 Gametang93
改成&&后,scanf返回值是3的时候就不会进入IF判断,+-*/没判定当然有可能会出现错误
2013-11-05 14:24
feng_01
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-5
收藏
得分:0 
同样是大一新生,敢问楼主哪个学校什么专业的?
2013-11-05 14:50
付得福
Rank: 1
等 级:新手上路
帖 子:24
专家分:4
注 册:2013-10-30
收藏
得分:0 
可以帮忙一下,检查一下下面这个程序错在哪里呢,运行出现错误!


#include <stdio.h>
int main()
{ double a,b,c;
  char h;
  printf("please enter a,c,b:");
  scanf("%5f,%c,%5f",&a,&c,&b);
  switch(c)
  {
   case'+':c=a+b;break;
   case'-':c=a-b;break;
   case'*':c=a*b;break;
   case'/':c=a/b;break;
   }
 printf( "%f%c%f = %f\n", a, h, b, c);
return(0);
}
2013-11-06 01:24
付得福
Rank: 1
等 级:新手上路
帖 子:24
专家分:4
注 册:2013-10-30
收藏
得分:0 
帮忙看一下上面的程序!谢谢哈!
2013-11-06 21:12
冬2509102
Rank: 2
等 级:论坛游民
帖 子:32
专家分:33
注 册:2013-9-14
收藏
得分:0 
没看懂if( 3!=scanf(" %lf %c %lf",&a,&op,&b) || (op!='+' && op!='-' && op!='*' && op!='/') )
2013-11-06 22:06
雨夜梧桐
Rank: 2
等 级:论坛游民
帖 子:63
专家分:89
注 册:2010-6-4
收藏
得分:0 
回复 8楼 caimingri
右键go to definition 在stdio.h里面看一下scanf语句的返回值是int型的。这句话表示输入三个正确格式的数则返回3.
2013-11-06 23:05
快速回复:大一学生,学了一点C语言皮毛,周末突发奇想,想自己编一个最简单的计 ...
数据加载中...
 
   



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

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