| @@ -140,13 +140,16 @@ | |||||
| </ItemDefinitionGroup> | </ItemDefinitionGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | <ClInclude Include="include\1_ContainsNearbyDuplicate.h" /> | ||||
| <ClInclude Include="include\2_ExcelSheetColumnTitle.h" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp" /> | ||||
| <ClCompile Include="src\2_ExcelSheetColumnTitle.cpp" /> | |||||
| <ClCompile Include="src\main.cpp" /> | <ClCompile Include="src\main.cpp" /> | ||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <None Include="config\1_ContainsNearbyDuplicate.ini" /> | <None Include="config\1_ContainsNearbyDuplicate.ini" /> | ||||
| <None Include="config\2_ExcelSheetColumnTiTle.ini" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
| <ImportGroup Label="ExtensionTargets"> | <ImportGroup Label="ExtensionTargets"> | ||||
| @@ -18,6 +18,9 @@ | |||||
| <ClInclude Include="include\1_ContainsNearbyDuplicate.h"> | <ClInclude Include="include\1_ContainsNearbyDuplicate.h"> | ||||
| <Filter>头文件</Filter> | <Filter>头文件</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="include\2_ExcelSheetColumnTitle.h"> | |||||
| <Filter>头文件</Filter> | |||||
| </ClInclude> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp"> | <ClCompile Include="src\1_ContainsNearbyDuplicate.cpp"> | ||||
| @@ -26,10 +29,16 @@ | |||||
| <ClCompile Include="src\main.cpp"> | <ClCompile Include="src\main.cpp"> | ||||
| <Filter>源文件</Filter> | <Filter>源文件</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="src\2_ExcelSheetColumnTitle.cpp"> | |||||
| <Filter>源文件</Filter> | |||||
| </ClCompile> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <None Include="config\1_ContainsNearbyDuplicate.ini"> | <None Include="config\1_ContainsNearbyDuplicate.ini"> | ||||
| <Filter>资源文件</Filter> | <Filter>资源文件</Filter> | ||||
| </None> | </None> | ||||
| <None Include="config\2_ExcelSheetColumnTiTle.ini"> | |||||
| <Filter>资源文件</Filter> | |||||
| </None> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| </Project> | </Project> | ||||
| @@ -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 | |||||
| @@ -0,0 +1,6 @@ | |||||
| #pragma once | |||||
| #include <stdio.h> | |||||
| #include <string.h> | |||||
| #include <stdlib.h> | |||||
| char* ExcelSheetColumnTitle(int n); | |||||
| @@ -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~2147483647,可以用7个A~Z的字母表示,int不会超过26的7次方 | |||||
| char* ret = (char*)malloc(sizeof(char) * 8);//所以这里申请8字节的空间,一个字节存放\0标志 | |||||
| int i = 7; //用来访问字符串中的每个字符 | |||||
| ret[7] = '\0'; //给结尾赋上\0 | |||||
| while (n) { //当n等于0时结束 | |||||
| n -= 1; //给n减一,因为n后面是从字符'A'开始的相加的 | |||||
| ret[i-1] = n % 26 + 'A'; //从后往前赋值,从最后一个赋值到第一个 | |||||
| n /= 26; | |||||
| i--; //给下一个字符赋值 | |||||
| } | |||||
| return ret + i; //去掉前面的前导字符,如果前面没有字符则指针后移 | |||||
| free(ret); | |||||
| } | |||||
| @@ -15,6 +15,7 @@ | |||||
| #include"../code/include/1_ContainsNearbyDuplicate.h" | #include"../code/include/1_ContainsNearbyDuplicate.h" | ||||
| #include"../code/include/2_ExcelSheetColumnTitle.h" | |||||
| int CalcCount(int n, char(*str)[10], const char* FileName); | int CalcCount(int n, char(*str)[10], const char* FileName); | ||||
| @@ -3,6 +3,9 @@ | |||||
| using namespace Microsoft::VisualStudio::CppUnitTestFramework; | using namespace Microsoft::VisualStudio::CppUnitTestFramework; | ||||
| #define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" | #define FileName_1 "../code/config/1_ContainsNearbyDuplicate.ini" | ||||
| #define FileName_2 "../code/config/2_ExcelSheetColumnTiTle.ini" | |||||
| namespace test1 | namespace test1 | ||||
| { | { | ||||
| TEST_CLASS(UnitTest_1) | TEST_CLASS(UnitTest_1) | ||||
| @@ -27,12 +30,19 @@ namespace test1 | |||||
| } | } | ||||
| namespace test2 | 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); | |||||
| } | |||||
| } | } | ||||
| }; | }; | ||||
| } | } | ||||