【问题标题】:Showing results n times from user input n从用户输入 n 显示结果 n 次
【发布时间】:2020-11-02 02:26:37
【问题描述】:

我希望得到一个整数 (n) 的用户输入,并将我的输出 hi 打印 n 次。

我写的代码如下:

#include <stdio.h>
int main()
{
    printf("input the number: ");
    scanf("%d", &i);
    for (int i = 0; i<n; i++)
    {
        for (int j=0; j<=i; j++)
        {
            printf("hi");
        }
        printf("\n");
    }
    return 0;
}

但是,当我在gcc 中运行此代码时,我得到一个编译错误:

mycode.c:5:16: error: ‘i’ undeclared (第一次在这个函数中使用)
scanf("%d", &i); ^ mycode.c:5:16: 注意:每个未声明的标识符只针对它出现在 mycode.c:6:21 中的每个函数报告一次: 错误:“n”未声明(在此函数中首次使用)for (int i = 0; 我

如何修复我的代码以输出hi n 次?

【问题讨论】:

  • 您似乎从未分配过n
  • i 必须在第一次使用前声明。
  • 请记住,在 C 语言中,编译器以 1-pass 的方式读取文件,因此在您的代码中使用 i 之前,您必须声明它。在这里,你有两个问题(1)i 没有在scanf() 之前声明,(2)你的循环还使用了变量i——这将 shadow 任何@987654331 的声明@ 以上scanf()(选择另一个变量名)。最后,您无法正确使用任何用户输入功能,除非您检查返回以确定输入是成功还是失败。例如。 if (scanf ("%d", &amp;i) != 1) { fputs ("error: invalid integer input.\n", stderr); return 1; }
  • 虽然缩进之类的东西对编译器来说并不重要,但对于试图阅读和理解你的代码的人来说却很重要。随着代码变得越来越复杂,它还将帮助您理解自己的代码。

标签: c for-loop


【解决方案1】:

编译器错误告诉您i 未定义。这很明显,因为包含该错误消息的行出现在 定义 i 的行之前。我认为您的意思是读取值n,因为您的i 循环需要它。而且你还没有定义n,这是另一个错误告诉你的。

所以,这里:

#include <stdio.h>
int main()
{
    int n = 0;                      //<-- You need to define n
    printf("input the number: ");
    scanf("%d", &n);                //<-- You need to read into n
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            printf("hi");
        }
        printf("\n");
    }
    return 0;
}

请注意,我已经缩进了您的代码,现在它更易于阅读。请从中吸取教训,在编写代码时始终自己动手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2021-10-26
    • 2015-02-15
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多