C语言中字符对齐问题

昨天遇到了这样一道题,作为初学者来说,苦恼于字符的对齐问题,在编译的时候对齐的效果试了几次才通过,后面发现了字符的对齐是可以直接实现的。

 问题如下:

描述

学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名-Jack,年龄-18,性别-Man,请按照输出样例的格式输出该学生的信息。

输入描述:

输出描述:

输出分为三行,分别为标题行,分隔行,信息行。
第一行,标题行,每个标题之间间隔4个空格。
第二行,分隔行,一共21个减号"-"。
第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:
Name Age Gender
---------------------
Jack 18 man

在这里,我们可以用空格去达到这样的效果。

代码:

int main()
{
    printf("Name Age Gender\n");
    printf("---------------------\n");
    printf("Jack 18 man");
    return 0;
}

 运行结果:

C语言中字符对齐问题_第1张图片

 

 

 但是用空格的话,有一个坏处,就是需要我们不断调整间距

所以在这介绍新的方法——字符的对齐

一般来说,我们在打印的时候使默认左对齐的,比如说打印:printf("%d\n",110);时就会默认靠左。

(1)左对齐

如果在%后加一个“-”标志就表示左对齐,例如

printf(“%-8d\n”,110);

这里表示我们要打印的数字宽度为8,如果要打印的位数小于8,则在后面补足空格;如果要打印的位数大于8,则打印所有的数字,不会截断。

(2)右对齐

printf(“%8”,110);

如果在%和d之间直接加上数字宽度,就表示。

这里我们表示数字宽度为8,如果要打印的位数小于8,左边补足空格;如果要打印的位数大于8,则打印所有的数字,不会截断。

依照这个规则,我们重新做题:

代码如下:

int main()
{
    printf("%-8s%-7s%-6s\n", "Name", "Age", "Gender");
    printf("---------------------\n");
    printf("%-8s%-7s%-6s\n", "Jack", "18", "man");
    return 0;
}

运行结果:

C语言中字符对齐问题_第2张图片

结果一样。

以上便是关于左右对齐的简单知识,本博客在于记录自己的学习历程、初学阶段遇到的问题与困惑,其中必有不足之处,还请看到的各位海涵,待他日功力长进,再修补阙漏。

 

你可能感兴趣的:(玩转C语言系列,c语言,c++,经验分享,其他)