C语言中字符对齐问题

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

问题如下:

描述

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

输入描述:

输出描述:

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

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

代码:

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

运行结果:

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

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

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

(1)左对齐

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

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

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

(2)右对齐

printf(“%8”,110);

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

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

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

代码如下:

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

运行结果:

结果一样。

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

经验分享 程序员 微信小程序 职场和发展