关于进制转换和数据输入的有关问题,基础有关问题

关于进制转换和数据输入的问题,基础问题
今天被学妹问了两个问题,都不是能讲的很清楚
int   j=0;
cout < <hex < < "j= " < <j;

输出为j=a,学妹问为什么不是A

还有一个是比大小的         VC++6.0
#include <iostream.h>
void   main()
{
      int   x,y,max;
      cin> > x> > y;
      if(x <y)   max=y;
          else   max=x;
      cout < <max;
}

运行后,输入009回车后就直接出现结果:9;这样只是输入一个数呀
我刚才上网查了一下,好像是编译器会认为0后面是一个八进制数,但觉得
这样也讲不通呀

请教一下大家了


------解决方案--------------------
第2个程序,可以添加一些输出,就可以知道程序运行过程中变量中值的变化了。

象这样:

#include <iostream>

using namespace std;

int main()
{
int x,y,max;
cin> > x> > y;
cout < < "x= " < < x < < endl;
cout < < "y= " < < y < < endl;
if(x <y) max=y;
else max=x;
cout < <max;
}
------解决方案--------------------
009回车后就直接出现结果:9

009,
00 是八进制的 0,
9 不可能是八进制数据,
所以被作为了 y 的值,
结果就是 x=0, y=9, max自然就是 9
------解决方案--------------------
不过这个也就是 VC 自己这么干.......

第一个问题:
使用 uppercase 格式控制