1. 2 - потому что вы делаете k = 1, когда последовательность кончается. Делайте k = 0 - будет 1.
И уберите условие - оно совершенно лишнее.
else
{
k = 0;
}
2.На мой взгляд вычислять является ли число полным квадратом таким образом нельзя - как минимум, потому что сравнивать вещественные числа напрямую - плохая идея. Почитайте для затравки, например
тут.
Я бы сделал как-то так:
double v = sqrt(arrayName[i]);
double v1 = floor(v);
if((v - v1) < 0.000001)
{
// число- полный квадрат
}
Константу 0.000001 - я выбрал наугад, как достаточно маленькую для вашего случая.
Вообще вопрос сравнения вещественных чисел - отдельная тема, представленный выше
подход, лишь один из вариантов, не самый лучший, но в вашем случае работать будет.