如何不使用空格、if、switch等语句实现printf输出内容对齐显示
实现方案
利用C语言printf的格式修饰符指定输出宽度与最小数字位数,同时用ASCII码32替代直接书写空格字符,符合无空格字面量、无分支语句的约束,修改后代码如下:
#include <stdio.h> int main() { int dd, mm, yyyy; printf("Podaj date (w formacie dd-mm-yyyy):%c",32); scanf("%d-%d-%d", &dd, &mm, &yyyy); printf("Day:%9.2d\n",dd); printf("Month:%7.2d\n",mm); printf("Year:%8.4d\n",yyyy); return 0; }
格式说明
%9.2d:指定整数总输出宽度为9位,至少输出2位数字,不足补前导0,剩余宽度默认用空格左填充,刚好实现Day:后7个空格加2位日期的效果%7.2d:总宽度7位,至少2位数字,实现Month:后5个空格加2位月份的效果%8.4d:总宽度8位,至少4位数字,实现Year:后4个空格加4位年份的效果- 提示语后用
%c输出ASCII码32(对应空格字符),避免直接书写空格字面量,满足约束要求
内容的提问来源于stack exchange,提问作者Vladyslav
相关产品推荐
相关产品推荐

