【问题标题】:Expected ; before ) token error in C [closed]预期的 ;之前)C中的令牌错误[关闭]
【发布时间】:2014-11-10 15:41:13
【问题描述】:

我正在尝试用 C 计算家庭作业。我应该让用户输入整数,直到他们输入负数。此时程序需要停止输入并继续输出总和、输入负数之前的尝试次数和平均值。

我似乎在我的代码中找不到任何错误(尽管我确定有),但是当我尝试编译时,我的输出 printf 语句中出现多个错误,同时显示 expected ';' before ')' token 和 @ 987654323@。我一定是个盲人。请赐教。

到目前为止,这是我的所有代码:

int main(void)
{
    int i=0,sum=0,tries=0;
    int mean=sum/tries;
    do
    {
        printf("Please enter a number %i. When finished, enter "
            "a negative number. \n",i);
        scanf("%i",&i); 
        sum+=i;
        tries++;
    }
    while(i>=-1);

    if((sum<=0) && (i<=-1))
    {
        printf("No valid numbers were entered. Try again. ");
    }
    else
    {
        printf("Sum is %i\n"),sum);
        printf("%i tries \n"),tries);
        printf("Mean is %i \n"),mean);

    }

     return 0;
}

【问题讨论】:

  • 编译器告诉你错误在哪一行。看那条线。问题很明显
  • 啊,我明白了我的错误。谢谢大佬
  • 另外,即使代码编译了,它也会在运行时在这一行崩溃:int mean=sum/tries;,因为此时tries仍然为0。当tries >= 1 时,您需要计算mean 之后 循环存在。
  • 这是因为 C++ 标准委员会在他们最近的会议上决定在 C++ 语法的随机位置插入眨眼笑脸,以减少开发人员的工作无聊。

标签: c compilation printf token negative-number


【解决方案1】:

括号太多

printf("Sum is %i\n"),sum);
printf("%i tries \n"),tries);
printf("Mean is %i \n"),mean);

应该是

        printf("Sum is %i\n",sum);
        printf("%i tries \n",tries);
        printf("Mean is %i \n",mean);

完整代码:

int main(void)
{
    int i=0,sum=0,tries=0;
    int mean=sum/tries;
    do
    {
        printf("Please enter a number %i. When finished, enter "
            "a negative number. \n",i);
        scanf("%i",&i); 
        sum+=i;
        tries++;
    }
    while(i>=-1);

    if((sum<=0) && (i<=-1))
    {
        printf("No valid numbers were entered. Try again. ");
    }
    else
    {
        printf("Sum is %i\n",sum);
        printf("%i tries \n",tries);
        printf("Mean is %i \n",mean);

    }

     return 0;
}

【讨论】:

  • 这些不叫作用域,只是括号。
  • @nneonneo 对不起,这是我的英语不好(有时),谢谢,我已经编辑了答案。
【解决方案2】:
  • 您忘记了 include 行 (#include &lt;stdio.h&gt;)。
  • 在打印行中没有输入右括号,应该是printf("Sum is %i\n", sum);而不是printf("Sum is %i\n"),sum);,也应该给出一些类似于发布的错误。

这将是固定代码:

#include <stdio.h>

int main(void) {
    int i = 0, sum = 0, tries = 0;
    int mean = sum / tries;
    do {
        printf("Please enter a number %i. When finished, enter "
               "a negative number. \n",
               i);
        scanf("%i", &i);
        sum += i;
        tries++;
    } while (i >= -1);

    if ((sum <= 0) && (i <= -1)) {
        printf("No valid numbers were entered. Try again. ");
    } else {
        printf("Sum is %i\n", sum);
        printf("%i tries \n", tries);
        printf("Mean is %i \n", mean);
    }

    return 0;
}

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多