【问题标题】:How to solve error: expected identifier or '('如何解决错误:预期标识符或“(”
【发布时间】:2012-12-23 14:12:10
【问题描述】:

我正在编程的东西有问题。 我一遍又一遍地收到这个错误;

jharvard@appliance (~/Dropbox/pset1): make mario
clang -ggdb3 -O0 -std=c99 -Wall -Werror    mario.c  -lcs50 -lm -o mario
mario.c:23:5: error: expected identifier or '('
    do
    ^
mario.c:32:1: error: expected identifier or '('
do
^
2 errors generated.

我搜索了整个互联网,但找不到问题.. 删除 ;在int main(void) 没有帮助之后

这是我的代码:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void);

    //Ask User for Height, and check

    int a, b, rows, height;
    int a = 0;
    int b = 0;
    int rows = 1;   

    do
    { 
        printf ("Height: ");
        height = GetInt();
    }
    while (height <=0 || height > 23);   

    //build half pyramid

    do
    {
        do
        {
            printf("r");
            a++;
        }
        while (a < height - rows);

        do
        {
            printf("#");
            b++;
        }
        while (b < rows + 1);


        printf("\n");
        rows++;

        while (rows <= height);
    }

我这几天一直在尝试解决这个问题,但我就是想不通!

非常感谢您!

【问题讨论】:

  • 修复你的缩进,最后一个人看起来真的很奇怪。
  • 是因为在whileprintf之前缺少}(取决于真实的身体周期,因为压痕不好不知道你真正的意思)
  • +1 @Mat 所说的。最后一段时间看起来应该在右括号之后(属于第二个do)。但是缩进你的代码,这样的错误对你来说是显而易见的。如果你不缩进你的代码,那么你应该遭受这样的痛苦。

标签: c cs50


【解决方案1】:
int main(void);

您刚刚声明了main。您需要定义它并在该定义中添加代码。

int main()
{
   .....
}

【讨论】:

    【解决方案2】:

    你得到了带有 do/while 的嵌套循环。确保每个都以 do 开头,以 while 结尾。

    看起来在文件末尾,“while”不正确。

    printf("\n");
    rows++;
    
    while (rows <= height);
    }
    

    那可能是您在 'while (rows

    正确的代码可能是:

    int main(void)
    {
    
        //Ask User for Height, and check
    
        int a, b, rows, height;
        a = 0;                    // <- removed int
        b = 0;                    // <- removed int
        rows = 1;                 // <- removed int
    
        do
        { 
            printf ("Height: ");
            height = GetInt();
        }
        while (height <=0 || height > 23);   
    
        //build half pyramid
    
        do
        {
            do
            {
                printf("r");
                a++;
            }
            while (a < height - rows);
    
            do
            {
                printf("#");
                b++;
            }
            while (b < rows + 1);
    
    
            printf("\n");
            rows++;
        }                             // <- add }
        while (rows <= height);
    }
    

    【讨论】:

      【解决方案3】:

      主帖已编辑,答案很清楚。

      您的所有代码都在函数之外,因为您正在执行 int main();你在声明一个函数。请改用 {} 括号。

      int main() {
          //Code here.
      }
      

      【讨论】:

      • 他不是。它在底部,或者看起来是这样
      • 这个缩进让人困惑。
      【解决方案4】:
      int a, b, rows, height;
      int a = 0;
      int b = 0;
      

      在您的上述语句中,ab 被多次重新声明,导致编译错误。

      【讨论】:

        【解决方案5】:

        在 do 范围之外取最后一个 while:

        while (rows <= height);
        

        【讨论】:

          【解决方案6】:

          如果你不缩进你的代码,这是你(无论如何)应该做的,至少在你写循环语句时,同时写下开始和结束的大括号,然后再放该循环体中的任何代码(在大括号之间)。它将使您免于将来遇到此类麻烦。

          【讨论】:

            【解决方案7】:

            如果反应原生项目......这是一个简单的问题。

            您可以在 ios 中转到您的项目目标并检查构建、版本和构建标识符...它们可能在末尾有多余的空间,应该删除

            希望对您有所帮助。为我工作

            【讨论】:

              【解决方案8】:

              因为你在int main(void)后面加了分号,我去过。

              //               v
              // int main(void);
              int main(void)
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-06-25
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-07-06
                相关资源
                最近更新 更多