diff --git a/.vs/Algorithm/v16/.suo b/.vs/Algorithm/v16/.suo index 00d4a18..a6bcb9e 100644 Binary files a/.vs/Algorithm/v16/.suo and b/.vs/Algorithm/v16/.suo differ diff --git a/code/code.vcxproj b/code/code.vcxproj index 0f332f7..6986421 100644 --- a/code/code.vcxproj +++ b/code/code.vcxproj @@ -140,13 +140,16 @@ + + + diff --git a/code/code.vcxproj.filters b/code/code.vcxproj.filters index 619842e..279cc21 100644 --- a/code/code.vcxproj.filters +++ b/code/code.vcxproj.filters @@ -18,6 +18,9 @@ 头文件 + + 头文件 + @@ -26,10 +29,16 @@ 源文件 + + 源文件 + 资源文件 + + 资源文件 + \ No newline at end of file diff --git a/code/config/2_ExcelSheetColumnTiTle.ini b/code/config/2_ExcelSheetColumnTiTle.ini new file mode 100644 index 0000000..6c9611f --- /dev/null +++ b/code/config/2_ExcelSheetColumnTiTle.ini @@ -0,0 +1,36 @@ +[Test1] +Na=1 +nExpect=A +[Test2] +Na=2 +nExpect=B +[Test3] +Na=26 +nExpect=Z +[Test4] +Na=1 +nExpect=A +[Test5] +Na=27 +nExpect=AA +[Test6] +Na=52 +nExpect=AZ +[Test7] +Na=53 +nExpect=BA +[Test8] +Na=100 +nExpect=CV +[Test9] +Na= +nExpect= +[Test10] +Na=5000 +nExpect=GJH +[Test11] +Na=10000 +nExpect=NTP +[Test12] +Na=2147483647 +nExpect=FXSHRXW \ No newline at end of file diff --git a/code/include/2_ExcelSheetColumnTitle.h b/code/include/2_ExcelSheetColumnTitle.h new file mode 100644 index 0000000..a1ff4b7 --- /dev/null +++ b/code/include/2_ExcelSheetColumnTitle.h @@ -0,0 +1,6 @@ +#pragma once +#include +#include +#include + +char* ExcelSheetColumnTitle(int n); \ No newline at end of file diff --git a/code/src/2_ExcelSheetColumnTitle.cpp b/code/src/2_ExcelSheetColumnTitle.cpp new file mode 100644 index 0000000..b9b990d --- /dev/null +++ b/code/src/2_ExcelSheetColumnTitle.cpp @@ -0,0 +1,18 @@ +#include "../include/2_ExcelSheetColumnTitle.h" +//Ŀһ Excel ӦƣExcelҲУ򷵻"" +//˼·1.nȡ࣬ѵõ'A'ӺǰŵַУn = n/26,ѭֱnΪ0 +// 2.ַȲ7ָƣȥǰĿλ +char* ExcelSheetColumnTitle(int n) +{ //intʹ0Ϊ0~21474836477A~Zĸʾintᳬ267η + char* ret = (char*)malloc(sizeof(char) * 8);//8ֽڵĿռ䣬һֽڴ\0־ + int i = 7; //ַеÿַ + ret[7] = '\0'; //β\0 + while (n) { //n0ʱ + n -= 1; //nһΪnǴַ'A'ʼӵ + ret[i-1] = n % 26 + 'A'; //Ӻǰֵһֵһ + n /= 26; + i--; //һֵַ + } + return ret + i; //ȥǰǰַǰûַָ + free(ret); +} \ No newline at end of file diff --git a/test/pch.h b/test/pch.h index d0edafb..a50326e 100644 --- a/test/pch.h +++ b/test/pch.h @@ -15,6 +15,7 @@ #include"../code/include/1_ContainsNearbyDuplicate.h" +#include"../code/include/2_ExcelSheetColumnTitle.h" int CalcCount(int n, char(*str)[10], const char* FileName); diff --git a/test/test.cpp b/test/test.cpp index a5c62e4..55aaa7f 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -3,6 +3,9 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" +#define FileName_2 "../code/config/2_ExcelSheetColumnTiTle.ini" + + namespace test1 { TEST_CLASS(UnitTest_1) @@ -27,12 +30,19 @@ namespace test1 } namespace test2 { - TEST_CLASS(test) + TEST_CLASS(UnitTest_1) { - public: - - TEST_METHOD(TestMethod1) + TEST_METHOD(TestMethode1) { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_2); + CString Na, nExpect; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Na", " ", Na.GetBuffer(20), 20, FileName_2); + GetPrivateProfileString(Section_Name[i], "nExpect", " ", nExpect.GetBuffer(100), 100, FileName_2); + char* nReal = ExcelSheetColumnTitle(_ttoi(Na)); + Assert::AreEqual(nReal, nExpect); + } } }; }