How to solve error: expected identifier or '('

帅比萌擦擦* 提交于 2019-12-11 10:58:23

问题


I've got a problem with something I'm programming. I get this error over and over;

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.

I searched all over the internet but couldn't find the problem.. removing the ; after int main(void) didn't help

This is my code:

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

I've been trying to solve this problem for a few days, but i just can't figure it out!

Thank you so much in advance!


回答1:


You got nested loop with do/while. Make sure that each start with do end with while.

Look like at the end of file, the "while" is not correct.

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

while (rows <= height);
}

That could be you missing the close '}' before 'while (rows <= height);'

Correct code could be:

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



回答2:


int main(void);

You have just declared the main. You need to define it and add the code inside that definition.

int main()
{
   .....
}



回答3:


Main post is edited, so clear answer.

All your code is outside of a function because you're doing int main(); you're declaring a function. Use {} brackets instead.

int main() {
    //Code here.
}



回答4:


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

Here in your above statements a and b are re-declared more than once causing compilation error.




回答5:


Take the last while outside of the do scope:

while (rows <= height);



回答6:


If you don't indent your code, which you (by all means) should do, at least write the starting and the ending curly brackets at once when you write the loop statement, before putting any code into that loop's body (which goes between the curly brackets). It will save you from troubles like these in the future.



来源:https://stackoverflow.com/questions/14011644/how-to-solve-error-expected-identifier-or

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!