diff --git a/.gitignore b/.gitignore
index 056950b..629070a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -110,3 +110,7 @@ Alogrithm/.vs/Alogrithm/v16/TestStore/3/001.testlog
Alogrithm/Alogrithm/Debug/7_MaxDepth.obj
Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/5507929c4351e38d/8_HAMMINGWEIGHT.ipch
Alogrithm/Alogrithm/Debug/8_HammingWeight.obj
+Alogrithm/.vs/Alogrithm/v16/TestStore/3/002.testlog
+Alogrithm/Alogrithm/Debug/9_AddBinary.obj
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/27a527fda8b54c6b/9_ADDBINARY.ipch
+Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/d00489e06883ba57/9_ ADDBINARY.ipch
diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo
index 19cc6de..f1e9981 100644
Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj
index 2f9ea17..847bf41 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj
@@ -148,6 +148,7 @@
+
@@ -159,6 +160,7 @@
+
@@ -169,6 +171,7 @@
+
diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
index 4b6745b..61f2f35 100644
--- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
+++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters
@@ -51,6 +51,9 @@
源文件\src
+
+ 源文件\src
+
@@ -77,6 +80,9 @@
头文件\include
+
+ 头文件\include
+
@@ -103,5 +109,8 @@
资源文件\config
+
+ 资源文件\config
+
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/config/9_AddBinary.ini b/Alogrithm/Alogrithm/config/9_AddBinary.ini
new file mode 100644
index 0000000..0342992
--- /dev/null
+++ b/Alogrithm/Alogrithm/config/9_AddBinary.ini
@@ -0,0 +1,20 @@
+[TEST1]
+input1=11
+input2=1
+output=100
+[TEST2]
+input1=1100
+input2=11
+output=1111
+[TEST3]
+input1=1100011
+input2=1001
+output=1101100
+[TEST4]
+input1=1100011
+input2=1000
+output=1101011
+[TEST5]
+input1=110001100
+input2=11
+output=110001111
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/include/9_AddBinary.h b/Alogrithm/Alogrithm/include/9_AddBinary.h
new file mode 100644
index 0000000..1382b1a
--- /dev/null
+++ b/Alogrithm/Alogrithm/include/9_AddBinary.h
@@ -0,0 +1,6 @@
+#pragma once
+#include
+#include
+#include
+
+char* AddBinary(char* a, char* b);
\ No newline at end of file
diff --git a/Alogrithm/Alogrithm/src/9_AddBinary.cpp b/Alogrithm/Alogrithm/src/9_AddBinary.cpp
new file mode 100644
index 0000000..fedc668
--- /dev/null
+++ b/Alogrithm/Alogrithm/src/9_AddBinary.cpp
@@ -0,0 +1,32 @@
+#include"../include/9_AddBinary.h"
+
+char* AddBinary(char* a, char* b)
+{
+ int len_a = strlen(a) - 1;//ַaij
+ int len_b = strlen(b) - 1;//ַbij
+ int carry = 0;//λ־
+ int len = len_a > len_b ? len_a : len_b;//ȡַгȽϳһ
+
+ char* pstr = (char*)malloc(sizeof(char) * (len + 3));//һָΪֵռΪ˷ֹнλַβ־\0
+ if (NULL == pstr)
+ return NULL;
+ pstr[len + 2] = '\0';//ַĩβ\0
+ len = len + 1;
+ while ((len_a >= 0) || (len_b >= 0)) {//ֻҪַһûַ꣬ĩβʼ
+ int sum = carry;//suma[len_a]b[len_b]carryӵĽsumΪ0,1,2,3
+ sum += (len_a >= 0 ? a[len_a] - '0' : 0);
+ sum += (len_b >= 0 ? b[len_b] - '0' : 0);
+ carry = sum / 2;//sum=23ʱҪλ2ʾa[a_len]b[b_len]Ҫλ3ʾһλҪλ
+ pstr[len] = '0' + sum % 2;//pstr[len]ֵ
+ len_a--, len_b--, len--;
+ }
+ //жҪҪǰ0
+ if (carry == 0) {
+ return (pstr + 1);//ָһʾָƶλĻָָ0һλ
+ }
+ else {
+ pstr[0] = '1';
+ return pstr;
+ }
+ //free(pstr);
+}
\ No newline at end of file
diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp
index 041ba31..aec922b 100644
--- a/Alogrithm/UnitTest/UnitTest.cpp
+++ b/Alogrithm/UnitTest/UnitTest.cpp
@@ -10,7 +10,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework;
#define FileName_6 "../Alogrithm/config/6_ContainsDuplicate.ini"
#define FileName_7 "../Alogrithm/config/7_MaxDepth.ini"
#define FileName_8 "../Alogrithm/config/8_HammingWeight.ini"
-
+#define FileName_9 "../Alogrithm/config/9_AddBinary.ini"
namespace UnitTest
@@ -150,4 +150,24 @@ namespace UnitTest
}
}
};
+ TEST_CLASS(UnitTest_9)
+ {
+ TEST_METHOD(TestMethode1)
+ {
+ char Section_Name[100][10] = { 0 };
+ int Section_Count = CalcCount(100, Section_Name, FileName_9);
+ CString input1,input2, output;
+ for (int i = 0; i < Section_Count; i++) {
+ GetPrivateProfileString(Section_Name[i], "input1", " ", input1.GetBuffer(100), 100, FileName_9);
+ GetPrivateProfileString(Section_Name[i], "input2", " ", input2.GetBuffer(100), 100, FileName_9);
+ GetPrivateProfileString(Section_Name[i], "output", " ", output.GetBuffer(200), 200, FileName_9);
+ char p1[100];
+ char p2[100];
+ strcpy(p1, input1);
+ strcpy(p2, input2);
+ char* nReal = AddBinary(p1,p2);
+ Assert::AreEqual(nReal, output);
+ }
+ }
+ };
}
diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj
index f6b117a..f96836e 100644
--- a/Alogrithm/UnitTest/UnitTest.vcxproj
+++ b/Alogrithm/UnitTest/UnitTest.vcxproj
@@ -103,7 +103,7 @@
Windows
$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)
DebugFull
- ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;%(AdditionalDependencies)
+ ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;%(AdditionalDependencies)
diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h
index accfddc..52a9d5c 100644
--- a/Alogrithm/UnitTest/pch.h
+++ b/Alogrithm/UnitTest/pch.h
@@ -21,6 +21,7 @@
#include"../Alogrithm/include/6_ContainsDuplicate.h"
#include"../Alogrithm/include/7_MaxDepth.h"
#include"../Alogrithm/include/8_HammingWeight.h"
+#include"../Alogrithm/include/9_AddBinary.h"
int CalcCount(int n, char(*str)[10],const char *FileName);