添加不在c中工作

pra*_*ani 0 c printf addition format-specifiers

我正在尝试添加c代码,但我的程序没有执行,不幸的是,代码块关闭了.错误是什么?

void main()
{
    float  a,b;

    printf("%30sAddition Of Numbers\n");
    printf("\nEnter Number 1: ");
    scanf("%f",&a);
    printf("\nEnter Number 2: ");
    scanf("%f",&b);

    printf("\nThe addition of %0.3f and %0.3f is %0.3f",a,b,(a+b));

}
Run Code Online (Sandbox Code Playgroud)

我想直接在printf语句中使用float输入添加结果,但我没有让它工作.

我也尝试将结果放在变量a中,但它也没有用.

    void main()
{
    float  a,b;

    printf("%30sAddition Of Numbers\n");
    printf("\nEnter Number 1: ");
    scanf("%f",&a);
    printf("\nEnter Number 2: ");
    scanf("%f",&b);
    a=a+b;
    printf("\nThe addition of %0.3f and %0.3f is %0.3f",a,b,a);

}
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

Sou*_*osh 5

问题出现在以下声明中

 printf("%30sAddition Of Numbers\n");
Run Code Online (Sandbox Code Playgroud)

这里,提供给printf()conatins %30s(或者,%s通常)的格式字符串是格式说明符(转换说明符),并且您没有提供任何参数.它调用未定义的行为.

引用C11标准,第7.21.6.1章

[...]如果格式的参数不足,则行为未定义.[...]

您还可以查看手册页以了解有关格式说明符的更多信息.


编辑:

如下面的注释中所述,如果您希望在输出之前显示一些空格,请更改

printf("\t\tAddition Of Numbers\n");  
Run Code Online (Sandbox Code Playgroud)

那说,

  • void main()应该int main (void)至少符合标准.
  • 您应该始终检查返回值scanf()以确保扫描成功.