3

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

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);
    }

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

非常感谢您!

4

8 回答 8

9
int main(void);

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

int main()
{
   .....
}
于 2012-12-23T14:17:21.093 回答
6

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

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

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

while (rows <= height);
}

那可能是您在 'while (rows <= height);' 之前错过了关闭的 '}'

正确的代码可能是:

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);
}
于 2012-12-23T14:21:00.927 回答
2
int a, b, rows, height;
int a = 0;
int b = 0;

在您的上述陈述中,多次重新声明并导致编译错误ab

于 2012-12-23T14:25:35.520 回答
2

主帖已编辑,答案很明确。

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

int main() {
    //Code here.
}
于 2012-12-23T14:16:05.980 回答
1

在 do 范围之外进行最后一段时间:

while (rows <= height);
于 2012-12-23T14:22:54.663 回答
1

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

于 2012-12-23T16:14:46.187 回答
-1

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

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

希望能帮助到你。为我工作

于 2021-06-04T03:57:21.060 回答
-1

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

//               v
// int main(void);
int main(void)
于 2020-12-05T19:47:26.923 回答