我应该提到的是,此代码的目的是在查找格式为MMDDYYY的日期中的日期回文时解决前导零情况。
这是代码。
#include <iostream>
using namespace std;
unsigned numDigits (unsigned num)//this works
{
if (num < 10) return 1;
return 1+ numDigits(num/10);
}
int main ()
{
unsigned date = 1111110;//01/11/1110(jan 11th of 1110 is palindrome)
cout<<numDigits(date)<<"num of dig"<<endl;
if (numDigits(date) == 7)
{
unsigned array[8];
unsigned number = date;
unsigned revArr[8];
for (int h = 7; h >= 0; h--) //this pops array withdate
{
array[h] = number % 10;
number /= 10;
cout<<array[h]<<endl;
}
cout<<"vs"<<endl;
for (int i = 0; i < 8; i++) //this pops revarray withdate
{
revArr[i] = number % 10;
number /= 10;
cout<<array[i]<<endl;
}
for (int j = 0; j < 8; j++)
{
if (array[j] == revArr[j])
{
cout<<j<<"th digit are" <<" equal"<<endl;
}
}
}
return 0;
}
在这种情况下,两个数组都是相同的,我不理解为什么array [0] == revArr [0]但array [1]!= revArr [1]等等,但array [7] == revArr [7]再次使我感到困惑。
答案 0 :(得分:0)
循环遍历数组的所有元素。即使表达式number /= 10
等于0
。在这种情况下,零会存储在数组元素中,因为0 / 10
再次给出了0
。
在第二次循环写入之前
number = date;