搜索
查看: 1390|回复: 7
打印 上一主题 下一主题

求大神!为什么我写的这个就不行1!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-24 20:56:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
本帖最后由 超神级 于 2013-8-25 19:53 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. float a,b,d,t;
  6. char c;
  7. char K;
  8. K='k';


  9. while(1)
  10. {
  11. {
  12. printf("计算机。\n输入第一数");
  13. scanf("%f",&a);
  14. getchar();
  15. printf("输入运算符+-×/\n;");
  16. scanf("%c",&c);
  17. printf("输入第2个数字");
  18. scanf("%f",&b);

  19. switch(c)
  20. {
  21. case'+':d=a+b;
  22. break;
  23. case'-':d=a-b;
  24. break;
  25. case'*':d=a*b;
  26. break;
  27. case'/':d=a/b;
  28. break;

  29. }
  30. printf("%f%c%f=%f\n",a,c,b,d);

  31. }
  32. printf("输入Y退出Q键继续\n");

  33. scanf("%c",&K);
  34. if(K='Y')
  35. break;
  36. }



  37. system("pause");
  38. return 0;

  39. }
复制代码

最佳答案

查看完整内容

别用%c了,%s然后取第一个字母就行
沙发
发表于 2013-8-24 20:56:06 | 只看该作者
别用%c了,%s然后取第一个字母就行
板凳
 楼主| 发表于 2013-8-24 20:59:53 | 只看该作者
我想让他输入Y键以后退出但是怎么也实现不了/!运行到scanf("%c",K);这个代码!程序就停止工作了!!
地板
发表于 2013-8-24 21:18:17 | 只看该作者
5#
 楼主| 发表于 2013-8-24 22:29:05 | 只看该作者
rosynirvana 发表于 2013-8-24 20:56
别用%c了,%s然后取第一个字母就行

我IF条件写错了。。最后我这样写才发现IF条件错误。。。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. float a,b,d,t;
  6. char c;
  7. char K;
  8. K='k';


  9. while(1)
  10. {
  11. {
  12. printf("计算机。\n输入第一数");
  13. scanf("%f",&a);
  14. getchar();
  15. printf("输入运算符+-×/\n;");
  16. scanf("%c",&c);
  17. printf("输入第2个数字");
  18. scanf("%f",&b);

  19. switch(c)
  20. {
  21. case'+':d=a+b;
  22. break;
  23. case'-':d=a-b;
  24. break;
  25. case'*':d=a*b;
  26. break;
  27. case'/':d=a/b;
  28. break;

  29. }
  30. printf("%f%c%f=%f\n",a,c,b,d);
  31. }
  32. printf("输入Y退出Q键继续\n");
  33. K=getchar();
  34. K=getchar();
  35. putchar(K);
  36. if(K=='Y')
  37. {printf("测试");
  38. break;}
  39. }
  40. system("pause");
  41. return 0;
  42. }
复制代码
6#
发表于 2013-8-24 22:41:58 | 只看该作者
超神级 发表于 2013-8-24 22:29
我IF条件写错了。。最后我这样写才发现IF条件错误。。。

问题在于这里

scanf("%f",&a);
getchar();
printf("输入运算符+-×/\n;");
scanf("%c",&c);
printf("输入第2个数字");
scanf("%f",&b);

第一次输入后,你清掉了缓冲区的\n,第二次输入数字你没去处理
接下来的一个输入你用%c去读取一个字符,读到的就是上一次残留的'\n'

你可以选择用getchar去清缓冲区的字符,但是为什么一定要用%c去读一个字符,%s读一个字符串不是省掉好多麻烦
7#
 楼主| 发表于 2013-8-24 23:01:38 | 只看该作者
rosynirvana 发表于 2013-8-24 20:56
别用%c了,%s然后取第一个字母就行

明白了!我真笨把这个忘了!
8#
发表于 2013-11-24 16:52:47 | 只看该作者
超神级 发表于 2013-8-24 23:01
明白了!我真笨把这个忘了!

if判断语句漏了一个等号
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表