【问题标题】:'a' undeclared (first use in this function) Error'a' 未声明(在此函数中首次使用)错误
【发布时间】:2020-06-27 18:12:59
【问题描述】:

我是编程新手,我想创建一个可以打印出 pi 的前 n 位数字的程序,其中 n 由用户指定。这个问题的原因可能是什么?

#include <stdio.h>

#define MAX_DIGITS 10

int main(void) {
    int pi[MAX_DIGITS] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
    printf("How many digits of pi would you like to print? ");
    int digits;
    scanf("%d", &digits);
    int i = 0;
    while (i < digits) {
        printf("%d", array[i]);
        if (i == 0){
            printf(".");
        }
        i++;
    }
    printf("\n");
  
    return 0;
}

【问题讨论】:

  • 错误消息准确地说明了问题所在。你的printf 谈论array[i],但没有什么叫array。
  • 错误和代码似乎不一致,因为没有使用“a”标识符)。在任何情况下,都没有显示“数组”变量..
  • 我不明白这个问题。您能否更具体一些,例如在此处粘贴您的编译器输出/错误?

标签: c arrays loops


【解决方案1】:

while 循环中的这段代码是问题所在。

   printf("%d", array[i]);

你的数组叫做 pi 而你这里有“array”,所以只要把它重命名为 pi 就可以了。

它应该是 i == 0,与 zywy 的回答相反。您可能希望设置条件i == 0 &amp;&amp; digits &gt; 1,以便在请求一位 pi 时不打印小数点。

顺便说一句,我认为拥有一个数组来存储您想要的 pi 的数字不是一个好主意,除非您对用户可以输入的 n 的潜在值有特定限制。考虑使用以下公式计算 pi 的位数:

【讨论】:

    【解决方案2】:

    不确定你想做什么,但 没有声明数组[i]。这是你想做的吗?

    #include <stdio.h>
    
    #define MAX_DIGITS 10
    
    int main(void) {
        int pi[MAX_DIGITS] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
        printf("How many digits of pi would you like to print? ");
        int digits;
        scanf("%d", &digits);
        int i = 0;
        while (i < digits) {
            printf("%d", pi[i]);
            if (i == 0){
                printf(".");
            }
            i++;
        }
        printf("\n");
      
        return 0;
    }
    

    您还应该检查数字是否不超过 MAX_DIGITS

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 2018-10-03
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多