> One letter variables are supposed to be used in scopes that fit on the screen completely.
Exactly, and ideally in less space than that. If you have something like:
for (i=0; i<10; i++) {
foo(i);
bar(i);
}
There is no point in using a "descriptive" name for the index. It's completely obvious what's going on. Anything more verbose would just hamper readability.
One letter variables are supposed to be used in scopes that fit on the screen completely. You might as well search for "for"
TL; DR: it's on purpose.