i have a question that why do we write argc and *argv as
arguments to main when we don't need commandline arguments???
The question should be phrased, "why do you write command line arguments if you don't need them" ? Most programs that run in some sort of shell, take some sort of command line arguments.
For example, look at theses unix commands ran out of a shell
diff -c file1.out file2.out
Everything specified after the initial command is considered a command-line arguments (The command itself is also passed as a argument as well). Some compilers allow for a 3rd parameter which contains all environment information.
Seeing that you are from India : I would take "We" to mean Indian developers. & the reason for the un-needed arguments can be answered with another question : Why do you learn on a dead compiler such as Turbo C++?
There are not logical answers to these questions, but as best as we can gather, it just is the way it is. Either the schools don't want the students to graduate as useful, or there is some ego tug-of-war where it is not ethical for the students to ask questions.