啊哈磊_编程从这里起步

标题: 求大神!为什么我写的这个就不行1! [打印本页]

作者: 超神级    时间: 2013-8-24 20:56
标题: 求大神!为什么我写的这个就不行1!
本帖最后由 超神级 于 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. }
复制代码

作者: rosynirvana    时间: 2013-8-24 20:56
别用%c了,%s然后取第一个字母就行
作者: 超神级    时间: 2013-8-24 20:59
我想让他输入Y键以后退出但是怎么也实现不了/!运行到scanf("%c",K);这个代码!程序就停止工作了!!
作者: tjq200236    时间: 2013-8-24 21:18

作者: 超神级    时间: 2013-8-24 22:29
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. }
复制代码

作者: rosynirvana    时间: 2013-8-24 22:41
超神级 发表于 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读一个字符串不是省掉好多麻烦
作者: 超神级    时间: 2013-8-24 23:01
rosynirvana 发表于 2013-8-24 20:56
别用%c了,%s然后取第一个字母就行

明白了!我真笨把这个忘了!
作者: 4399APPLE    时间: 2013-11-24 16:52
超神级 发表于 2013-8-24 23:01
明白了!我真笨把这个忘了!

if判断语句漏了一个等号




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2