Według definicji sleep, przyjmuje wartość w sekundach, czyli "tik" w Twoim programie powinien być
sleep(1);
sec++;
żeby inkrementować zmienną sec co 1 sekundę. 
jeżeli inkrementujesz inne zmienne w oparciu o wartość zmiennej sec w tym konkretnym przypadku to
for (int i=hrs; i<=24; i++)
nie ma sensu
powinna zawierać np. dla 1h - 3600 sec. lub dla 24h - 86400 sec
pętla poniżej działa przez godzinę. 
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
int main()
{
int hrs=0, min=0, sec=0;
for (int i=0; i<3600; i++) {
system("cls");
sec++;
if (sec == 60) {
sec = 0;
min++;
if (min == 60)
{
min = 0;
hrs++;
if (hrs == 24) hrs = 0;
}
}
cout << setfill('0') << setw(2) << hrs << ":"
<< setfill('0') << setw(2) << min << ":"
<< setfill('0') << setw(2) << sec;
sleep(1);
}
return 0;
}
albo pętla while 
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
int main()
{
int hrs=0, min=0, sec=0;
while (true) {
system("cls");
sec++;
if (sec == 60) {
sec = 0;
min++;
if (min == 60)
{
min = 0;
hrs++;
if (hrs == 24) hrs = 0;
}
}
cout << setfill('0') << setw(2) << hrs << ":"
<< setfill('0') << setw(2) << min << ":"
<< setfill('0') << setw(2) << sec;
sleep(1);
if (hrs == 1) break; // po 1h wypad ;-)
}
return 0;
}
using System;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int hrs = 0, min = 0, sec = 0;
Console.CursorVisible = false;
while (true)
{
sec++;
if (sec == 60)
{
sec = 0;
min++;
if (min == 60)
{
min = 0;
hrs++;
if (hrs == 24) hrs = 0;
}
}
Console.Write("{0:00}:{1:00}:{2:00}", hrs, min, sec);
Thread.Sleep(1000); // c# Sleep(Int32 milliseconds)
Console.Clear();
if (hrs == 1) break;
}
}
}
}
a tu bez użycia <windows.h> 
#include <iostream>
//#include <windows.h>
#include <curses.h>
#include <thread>
#include <chrono>
using namespace std;
int main()
{
int hrs=0, min=0, sec=0;
initscr();
while (true) {
//system("cls");
clear();
sec++;
if (sec == 60) {
sec = 0;
min++;
if (min == 60)
{
min = 0;
hrs++;
if (hrs == 24) hrs = 0;
}
}
printw("%02d:%02d:%02d", hrs, min, sec);
refresh();
//sleep(1);
this_thread::sleep_for (chrono::seconds(1));
if (hrs == 1) break; // po 1h wypad ;-)
}
endwin();
return 0;
}