【问题标题】:Error expected primary-expression before 'if' [closed]'if'之前的预期主表达式错误[关闭]
【发布时间】:2017-10-23 18:05:25
【问题描述】:

我只是一名学生,并开始学习 C 编程,所以我的水平并不高。

我有这段代码,我想很容易理解我想要做什么。但是我在 if 之前收到一个错误提示。

我怀疑问题出在 if 和 else 之间的 if-else 语句。各位大佬怎么解决呢?

#include <stdio.h>
#include <iostream>
int main ()
{
int N;
scanf("%i",&N);
if (N > 50)
        (if (N > 75)
            N = N - 25;
            N = N - 10;
        )
else
        N = N + 10;
printf("%i",N);
}

【问题讨论】:

  • 使用 %d 代替 %i 并设置 if 的括号{}。例如 if(){ } else{}
  • 您是否将({ 混淆了?
  • 1) 考虑向good C++ book 学习,而不是尝试随机编码。 2)询问编译错误时 - 复制/粘贴错误。 3)由于明显的原因,投票关闭为拼写错误。
  • (if (N &gt; 75) N = N - 25; N = N - 10; ) --> { if (N &gt; 75){ N = N - 25; N = N - 10; } }{ if (N &gt; 75) N = N - 25; N = N - 10; } ?
  • 学C为什么要用C++标签?为什么学C的时候用#include &lt;iostream&gt;?或者你正在学习 C++?那你为什么用 printf 而不是 cout?

标签: c++ if-statement


【解决方案1】:

考虑到错误消息,您似乎正在将程序编译为 C++ 程序。否则编译器一开始会发出一条关于错误标头&lt;iostream&gt;的消息。

如果它是 C++ 程序,则无需使用标头 &lt;stdio.h&gt; 中的函数,而且在 C++ 中应该包含类似

#include <cstdio>

所以我建议删除标头并使用标准 C++ 本地 I/O 函数。

另外,用括号括起来的不是大括号,而是 if 语句的子语句。

if (N > 50)
        (if (N > 75)
            N = N - 25;
            N = N - 10;
        )

如果 N 大于 75 很明显,那么它显然大于 50。所以第一个 if 语句也可以删除。

而且使用大写字母来命名普通变量是个坏主意。

考虑到所有这些,程序可能看起来像

#include <iostream>

int main()
{
    int n;

    std::cin >> n;

    if ( n > 75 )
    {
            n = n - 25; // or n -= 25;
            n = n - 10; // or n -= 10;
    }
    else
    {
        n = n + 10; // or n += 10;
    }

    std::cout << n << std::endl;
}

如果你想使用标准的 C I/O 函数,那么程序可以看起来像

#include <cstdio>

int main()
{
    int n;

    std::scanf( "%i", &n );

    if ( n > 75 )
    {
            n = n - 25; // or n -= 25;
            n = n - 10; // or n -= 10;
    }
    else
    {
        n = n + 10; // or n += 10;
    }

    std::printf( "%i\n", n );
}

如果它是一个C程序并且错误地包含了标题&lt;iostream&gt;,那么程序可能看起来像

#include <stdio.h>

int main( void )
{
    int n;

    scanf( "%i", &n );

    if ( n > 75 )
    {
            n = n - 25; // or n -= 25;
            n = n - 10; // or n -= 10;
    }
    else
    {
        n = n + 10; // or n += 10;
    }

    printf( "%i\n", n );
}

【讨论】:

  • 应使用“%d”而不是“%i”。
  • @NaseefUrRahman 格式说明符“%I”和“%d”是可以互换的。
【解决方案2】:

只需在 if 条件后将 ( 更改为 {。我已经编辑了你的代码 -

#include <stdio.h>
#include <iostream>
int main ()
{
int N;
scanf("%d",&N);
if (N > 50)
        {
            if (N > 75)
            N = N - 25;
            N = N - 10;
        }
else
        N = N + 10;
printf("%d",N);
}

【讨论】:

  • 您不应该将%i 用于scanf。见here。相反,请使用%d
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多