关于制表符"\t"的问题

Console.Write("请输入本班学生总数:");
int count = Convert.ToInt32(Console.ReadLine());
int[,] chengji = new int[count, 4];
for (int i=0;i<count;i++)
{
Console.WriteLine("请输入第{0}个学生编号:", i + 1);
chengji[i, 0] = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入语文成绩:");
chengji[i, 1] = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入数学成绩:");
chengji[i, 2] = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入英语成绩:");
chengji[i, 3] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("学生成绩如下:");
Console.WriteLine("学生编号\t语文成绩\t数学成绩\t英语成绩\t平均成绩\t总成绩");
for(int i=0;i<chengji.GetLength(0);i++)
{
double sum=0, ave = 0;
for (int j=0;j<chengji.GetLength(1);j++)
{
Console.Write(chengji[i, j] + "\t"); // Console.Write(chengji[i, j] + "\t\t");
if (j > 0)//取j>0的原因是每行第一个都不是成绩而是学生编号

                {
                    sum += chengji[i, j];
                }
            }
            ave = sum / 3;
            Console.Write(String.Format("{0:F2}", ave) + "\t" + sum + "\n");
            //Console.Write(String.Format("{0:F2}", ave) + "\t\t" + sum + "\n");
        }

为什么后面的输出语句得写两个\t?不然制成的表就不能对齐

img

  1. 因为表头都有四个字,一个汉字是两个字节。每一列表头比数据要多8个字符
  2. '\t',表示水平制表位(horizontal tab),它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。
    和\n相当于在程序中按了一下“Enter”回车键比较,\t 就相当于在编程的时候按一下Table键,使光标以8个字符为基准进行跳跃 。