【问题标题】:Can I scan and print integers simultaneously in C?我可以在 C 中同时扫描和打印整数吗?
【发布时间】:2016-10-24 14:05:56
【问题描述】:

尝试在 for 循环中串行使用 C 中的 scanf 和 printf 函数时,程序正在关闭。我在 Windows 7 上使用 CODE::BLOCKS。以下是代码。为什么会这样?

#include<stdio.h>
void main()
{
    int i,A[i];
    for(i=0;i<10;i++)
    {
        scanf("%d",&A[i]);
        printf(" %d",A[i]);
    }

}

【问题讨论】:

  • A[i] 未定义,因为 i 未初始化。你应该改写A[10]
  • 您应该在托管环境中使用标准int main(void) 而不是void main(),这在C89 中是非法的并且在C99 或更高版本中实现定义,除非您有特殊原因使用非标准签名.
  • 以下替换的语句有效。 int i=0,A[i];
  • int i=0,A[i]; 调用未定义的行为。使用int i=10,A[i]; 或更好的int i; int A[10];
  • @Vikranth Inti “它应该显示警告或错误消息。” --> 不。正如 MikeCAT 所说,“实现定义的”意味着它可以在你的编译器/平台上工作,但由于它是非标准的,它可能无法在其他地方工作。

标签: c printf scanf


【解决方案1】:

在您发布的代码中,A[i] 未定义,因为 i 尚未初始化。此外,您需要确保数组A[] 的大小为10,因为您在for 循环中迭代10 元素。请参考以下修改后的代码:

#include<stdio.h>

int main()
{
    int i, A[10];
    for(i=0;i<10;i++)
    {
        scanf("%d",&A[i]);
        printf(" %d",A[i]);
    }

    return 0;
}

在上面的代码中,A[10] 是一个由10 元素组成的数组。此外,请注意main() 的返回类型是int(而不是void)。因此,在底部添加了声明return 0

工作代码here.

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2013-01-09
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多