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 main()を実行しているため、すべてのコードは関数の外にあります。関数を宣言しています。代わりに{}角かっこを使用してください。

int main() {
    //Code here.
}
于 2012-12-23T14:16:05.980 に答える
2
int a, b, rows, height;
int a = 0;
int b = 0;

上記のステートメントab、再宣言が複数回行われると、コンパイルエラーが発生します。

于 2012-12-23T14:25:35.520 に答える
1

doスコープの外で最後を取ります:

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

コードをインデントしない場合は(必ず) 、ループステートメントを作成するときに、少なくとも開始と終了の中括弧を一度に記述してから、そのループの本体にコードを挿入します(中括弧)。将来的にはこのようなトラブルからあなたを救うでしょう。

于 2012-12-23T16:14:46.187 に答える
-1

それはあなたが後にセミコロンを作ったからですint main(void)、私はそこに行ったことがあります。

//               v
// int main(void);
int main(void)
于 2020-12-05T19:47:26.923 に答える
-1

反応ネイティブプロジェクトの場合....それは単純な問題です。

iOSでプロジェクトターゲットに移動し、ビルド、バージョン、ビルド識別子を確認できます...最後に余分なスペースがあり、削除する必要があります

それが役に立てば幸い。私のために働いた

于 2021-06-04T03:57:21.060 に答える