如何解决08报错:无效的八进制数字及printf()输出格式自定义方法

08无效错误的八进制号

如何解决08报错:无效的八进制数字及printf()输出格式自定义方法

显然,我们自己的语言与计算机不同。我们的想法是08和09,它是在小数数字之前添加零。这是一种自定义格式,但是计算机不了解人类语言,因此默认为0+。该数字被视为八进制

我们知道,八进制系统中不可能拥有8个或更多的数字,因此在编写程序时,发生以下错误:

图1

图2

当我们分配价值和输入时,我们无法表达“我们认为”所谓的十进制格式,我们应该从不同的角度实施它

从输入切换到printf()输出

我们实际上可以在我们自己中定义输出的格式

printf除占位符外,输出您写的任何内容

第一种方法很容易理解

方法:①在printf()中再尝试一个0

在修改图1的代码之后

图2代码相同

当然,此方法也有缺点。如果输入号是双数数字,则将变为018

如果您进行了另一次修改,则可以使用判断声明,如果该值为

让我们尝试if语句:

可以看出它有效!

②数字宽度

将%d更改为%0xD(这里x代表某个数字)以D为例:

其含义是数字的宽度为2(了解它是两个数字,D是三位数的数字,依此类推)

左输出的整数数量不足,使用0来弥补它。

因此,在图1和图2中的代码中,%d被D替换为d,i,f······

③使用字符串输出

通过定义字符串,我们输出所需的值,目前没有错误“ 08”

该方法也可以与图2中定义的结构混合。

#include
#include
struct date{
    char month[4];  //将int month; 换成char month[4];
    int day;
    int year;
};
int main(int argc,char const *argv[])
{
    struct date today = {"08",27,2022};   //以字符串""格式输入数值08
    struct date thismonth = {"08",.year=2022};
    printf("today's date is %i-%s-%i.\n",today.year,today.month,today.day);
    printf("This month is %i-%s-%i\n",thismonth.year,thismonth.month,thismonth.day);
          //记得将month所对应的%i改成此处的%s
    system("pause");
    return 0;
}

操作结果成功了!

结束添加:在第一个方法中输入多个数字时,您可以使用函数来解决多个IFS的混乱问题,这对于修改也很方便。

所以今天,您一无所获吗?

这是我在编程中遇到的问题。在当前学习阶段,已经总结了这三种方法。如果老板有更多的技能,则可以在评论区域留言或私人消息。让我们一起学习!

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

88阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读