我是靠谱客的博主 忧虑毛巾,最近开发中收集的这篇文章主要介绍【成长记录】C++题目——二进制求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

【题目】如上

【思路一】先将二进制转为十进制,然后十进制求和,最后再化成二进制

【思路二】重点:使用string类进行字符串操作,变成等长的字符串,然后进行相对应位置的加法运算。

【代码一】

#include<iostream>
using namespace std;
int main()
{
	char a[100], b[100];//先定义了一个较长的字符型数组 
	while (cin >> a >> b)
	{
		//二进制转十进制。从首位(左)往右方向运算,将首位置的二进制数乘2加上下一位赋给n,然后下标加1,然后将n*2加下一位二进制数,重复前面的算法
		int a1 = 0, b1 = 0;
		for (int i = 0; a[i] != 0; i++) 
		{
			a1 = a1 * 2;
			if (a[i] == '1')
			{
				a1 = a1 + 1;
			}
			if (a[i] == '0')
			{
				a1 = a1 + 0;
			}
		}
		for (int i = 0; b[i] != 0; i++)
		{
			b1 = b1 * 2;
			if (b[i] == '1')
			{
				b1 = b1 + 1;
			}
			if (b[i] == '0')
			{
				b1 = b1 + 0;
			}
		}
		int sum = a1 + b1;//十进制求和 
		int c[100];
		int k = 0;
		//再将十进制的数转为二进制 
		while (sum > 0)
		{
			c[k] = sum % 2;
			sum = sum / 2;
			k++;
		}
		for (int i = k - 1; i >= 0; i--)
		{
			cout << c[i];
		}
		cout << endl;
	}

}

【代码二】 

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string a, b;//利用string类来存储二进制数字串
    while (cin >> a >> b)
    {
        int a1 = a.size();//求出二进制数的长度
        int b1 = b.size();
        while (a1 < b1) //比较两个字符串的长度,谁短就在前添加0
        {
            a = '0' + a;
            a1++;
        }
        while (a1 > b1)
        {
            b = '0' + b;
            b1++;
        }
        for (int j = a1 - 1; j > 0; j--) //从最后一位进行和运算,当运行到首位就退出
        {
            a[j] = a[j] - '0' + b[j];//重点:string类中的字符串以ASCII值进行存储,所以进行加减时先要减去'0',再进行运算。'0'=48
            if (a[j] >= '2') 
            {
                a[j] = (a[j] - '0') % 2 + '0';//二进制当大于2的时候就进位,取余进行加运算
                a[j - 1] = a[j - 1] + 1;//前一位一定加1
            }
        }
        a[0] = a[0] - '0' + b[0]; //首位独立运算
        if (a[0] >= '2') 
        {
            a[0] = (a[0] - '0') % 2 + '0';
            a = '1' + a;//在字符串前直接加1
        }
        cout << a << endl;
    }
}

最后

以上就是忧虑毛巾为你收集整理的【成长记录】C++题目——二进制求和的全部内容,希望文章能够帮你解决【成长记录】C++题目——二进制求和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部