vs2017 C++程序实现:二进制数累加器

举报
悲恋花丶无心之人 发表于 2021/02/03 00:12:23 2021/02/03
【摘要】 C++程序实现:二进制数累加器 一、目标 二、方法 三、代码 四、示例 五、总结 一、目标 输入一个任意长度的二进制数,输入累加次数,得到最终二进制数累加的结果。 二、方法 1.累加的原理无非就是0到1再到0的过程 2.累加时注意进位 3.我们用一个长度很长的一维数组存储输入的二进制数,例如: 定义一个字符串变量c定义一个字符常量指针*cc定义一个...

C++程序实现:二进制数累加器

一、目标

二、方法

三、代码

四、示例

五、总结


一、目标

输入一个任意长度的二进制数,输入累加次数,得到最终二进制数累加的结果。


二、方法

1.累加的原理无非就是0到1再到0的过程

2.累加时注意进位

3.我们用一个长度很长的一维数组存储输入的二进制数,例如:

  • 定义一个字符串变量c
  • 定义一个字符常量指针*cc
  • 定义一个一维整型数组指针*a

这些变量最终将数据存储在a中,例如:

  • c里存储着1001
  • 那么我们最终希望a[3]=1,a[2]=0,a[1]=0,a[0]=1

4.累加数据,如果数据每一位都是1,则需要将显示的结果扩展一位


三、代码


  
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main() {
  5. string c;
  6. cout << "请输入一段二进制位数:" << endl;
  7. cin >> c;
  8. const char *cc = c.data();//将字符串型数据转化为字符数据
  9. int letterCount = strlen(cc);//计算字符串长度
  10. cout << "输入字符串长度:" << letterCount << endl;
  11. int *a = new int[999]; //动态创建一维数组,这里直接定义一个长度为999的二进制数
  12. cout << endl;
  13. cout << "输出每一位数据:" << endl;
  14. for (int i = 0; cc[i] != '\0'; i++) {
  15. a[letterCount - 1 - i] = cc[i] - '0';
  16. cout << "a[" << letterCount - 1 - i << "]" << a[letterCount - 1 - i] << endl;
  17. }
  18. cout << endl;
  19. cout << "请输入累加的次数:" << endl;
  20. int Sum = 0;//定义累加次数
  21. int sum = 0;
  22. cin >> Sum;
  23. while (sum < Sum) {
  24. int i = 0;
  25. int jinwei = 0;//当要进位时,计算二进制数据每一位为1的个数
  26. while ((i < letterCount) && (a[i] == 1)) {
  27. a[i++] = 0;
  28. }
  29. if (i < letterCount) {
  30. a[i] = 1;
  31. }
  32. cout << "累加第" << sum + 1 << "次:" << endl;
  33. for (int j = 0; j < letterCount; j++) {
  34. cout << "a[" << j << "]" << a[j] << endl;
  35. if (a[j] == 1) {
  36. jinwei++;//查看是否所有位数都是1
  37. }
  38. if (jinwei == letterCount) {
  39. letterCount++;//显示位数加1
  40. j++;//跳出循环
  41. }
  42. }
  43. sum++;//累加次数的个数加1
  44. }
  45. cout << "累加结果为:" << endl;
  46. for (int i = letterCount-1; i >= 0; i--) {
  47. cout << a[i] << "";
  48. }
  49. delete[]a;
  50. getchar();
  51. getchar();
  52. return 0;
  53. }

四、示例

1.数据1001:

  • 输入数据:

  • 输入累加次数5:

2.输入数据10111001

  • 输入数据

  • 输入累加次数11:


五、总结

1.首先是对字符串转字符字符数组转换为整型数组的用法要熟悉

2.对于动态创建一维数组要熟悉

3.对于什么时候进位,什么时候结束计算要设定好

4.对于C++的理解和应用要熟悉,例如new一个之后要delete

 


本篇文章到此结束!!

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/82659837

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。