You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用空格、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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:36:00