服务器之家

服务器之家 > 正文

C语言实现简单计算器功能(2)

时间:2021-08-20 11:58     来源/作者:xiaocaidayong

本文接着上一篇C语言实现简单计算器功能(1)继续学习。

之前用switch语句完成了一个简单计算器的功能,下面我给大家用if语句和while循环语句再实现一个简单计算器的编程。

要求:

实现简单的计算器,具体代码如下:

  1. #include <stdio.h> // 头文件
  2.  
  3. void main()
  4. {
  5. char a = 0; // 变量声明并初始化
  6. int x, y; // 变量声明
  7. int result = 0;
  8. char b = 37;
  9. while(1) // whiel循环实现反复在计算器系统中
  10. {
  11. printf("***欢迎使用计算器***\n");
  12. printf("+ 表示两个整数相加\n");
  13. printf("- 表示两个整数相减\n");
  14. printf("* 表示两个整数相乘\n");
  15. printf("/ 表示两个整数取整\n");
  16. printf("%c 表示两个整数取余\n",b);
  17. printf("q 表示退出计算器系统\n");
  18. printf("请选择:");
  19. scanf("%c",&a);
  20. if('+'==a) // 加法操作
  21. {
  22. printf("请输入两个整数(以空格隔开):");
  23. scanf("%d%d",&x,&y);
  24. result = x+y;
  25. printf("result=%d\n",result);
  26. continue;
  27. }
  28. else if('-'==a) // 减法操作
  29. {
  30. printf("请输入两个整数(以空格隔开):");
  31. scanf("%d%d",&x,&y);
  32. result = x-y;
  33. printf("result=%d\n",result);
  34. continue;
  35. }
  36. else if('*'==a) // 乘法操作
  37. {
  38. printf("请输入两个整数(以空格隔开):");
  39. scanf("%d%d",&x,&y);
  40. result = x*y;
  41. printf("result=%d\n",result);
  42. continue;
  43. }
  44. else if('/'==a) // 取整操作
  45. {
  46. printf("请输入两个整数(以空格隔开):");
  47. scanf("%d%d",&x,&y);
  48. result = x/y;
  49. printf("result=%d\n",result);
  50. continue;
  51. }
  52. else if('%'==a) // 取余操作
  53. {
  54. printf("请输入两个整数(以空格隔开):");
  55. scanf("%d%d",&x,&y);
  56. result = x%y;
  57. printf("result=%d\n",result);
  58. continue;
  59. }
  60. else if('q'==a) // 退出系统
  61. {
  62. printf("+++欢迎下次使用+++\n");
  63. break;
  64. }
  65. else
  66. {
  67. printf("选择有误,请重新选择!\n");
  68. continue;
  69. }
  70. }
  71. }

这样就完成了一个简单计算器程序,形式和我写的《用C语言完成简单的计算器功能(1)》一样,只是通过符号来选择对应的操作,原理一致。下面我们看一下改程序运行的结果,如下:

C语言实现简单计算器功能(2)

通过结果我们发现在进行选择操作后,求两个数和,然后会发现结果出来了,但会多打出上图红色方框中的内容,大家不妨试一下它的效果,一眼就能知道显示有问题。对于这个问题,我进行调试和单步跟踪,发现在下一轮循环时,在语句

  1. scanf("%c",&a);

会自动进行输入了一个换行操作,我思来想去,感觉是因为在输入字符时通过语句scanf(“%c”,&a);输入了一个字符,但是我们会打回车,这是这个回车就被保留在缓存中,当下次需要输入字符时会自动进行输入(个人理解),这样就导致了会自动出现红色方框中的一块信息,那么我们需要修改一下代码,已完成它的正确显示,修改的代码如下:

  1. #include <stdio.h> // 头文件
  2.  
  3. void main()
  4. {
  5. char a = 0; // 变量声明并初始化
  6. int x, y; // 变量声明
  7. int result = 0;
  8. char b = 37;
  9. while(1) // whiel循环实现反复在计算器系统中
  10. {
  11. printf("***欢迎使用计算器***\n");
  12. printf("+ 表示两个整数相加\n");
  13. printf("- 表示两个整数相减\n");
  14. printf("* 表示两个整数相乘\n");
  15. printf("/ 表示两个整数取整\n");
  16. printf("%c 表示两个整数取余\n",b);
  17. printf("q 表示退出计算器系统\n");
  18. printf("请选择:");
  19. scanf("%c",&a);
  20. if('\n' == a) // 加入自动换行符,我们需要进行重新输入
  21. {
  22. scanf("%c",&a);
  23. }
  24. if('+'==a) // 加法操作
  25. {
  26. printf("请输入两个整数(以空格隔开):");
  27. scanf("%d%d",&x,&y);
  28. result = x+y;
  29. printf("result=%d\n",result);
  30. continue;
  31. }
  32. else if('-'==a) // 减法操作
  33. {
  34. printf("请输入两个整数(以空格隔开):");
  35. scanf("%d%d",&x,&y);
  36. result = x-y;
  37. printf("result=%d\n",result);
  38. continue;
  39. }
  40. else if('*'==a) // 乘法操作
  41. {
  42. printf("请输入两个整数(以空格隔开):");
  43. scanf("%d%d",&x,&y);
  44. result = x*y;
  45. printf("result=%d\n",result);
  46. continue;
  47. }
  48. else if('/'==a) // 取整操作
  49. {
  50. printf("请输入两个整数(以空格隔开):");
  51. scanf("%d%d",&x,&y);
  52. result = x/y;
  53. printf("result=%d\n",result);
  54. continue;
  55. }
  56. else if('%'==a) // 取余操作
  57. {
  58. printf("请输入两个整数(以空格隔开):");
  59. scanf("%d%d",&x,&y);
  60. result = x%y;
  61. printf("result=%d\n",result);
  62. continue;
  63. }
  64. else if('q'==a) // 退出系统
  65. {
  66. printf("+++欢迎下次使用+++\n");
  67. break;
  68. }
  69. else
  70. {
  71. printf("选择有误,请重新选择!\n");
  72. continue;
  73. }
  74. }
  75. }

从代码上我们可以看到,我们只需要在原来的代码中加一条条件判断就可以解决上面的问题,加的代码如下:

  1. if('\n' == a) // 加入自动换行符,我们需要进行重新输入
  2. {
  3. scanf("%c",&a);
  4. }

这样就解决上述所说的问题,下面看一下它的显示结果:

C语言实现简单计算器功能(2)

可以看到和上图有区别了吧,这样就达到了我们所要设计的计算器要求,请大家仔细阅读代码,知道每一行代码所完成的功能,不要一贯的复制粘贴。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

原文链接:https://blog.csdn.net/XiaoCaiDaYong/article/details/51085992

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部