2016-01-30 132 views
-5

我正在制作一个贪婪算法来计算存储在变量中的一个以美分计算的硬币数量。基本上我已经完成了所有的工作,但我无法区分单位和复数的面额(例如,打印“1个季度”而不是“1个季度”),以及我如何在顺序条件下对于每个面额,我无法对每个硬币进行单数或复数分化,因为它会让我返回两个季度和四分之一,而不是两者之一,所以我试图使用if else语句,但它说else语句基本上没有if语句与我不明白的关系。我的编译器还说,由于某种原因嵌套在另一个中的if语句有“无身体”。C:为什么我嵌套的if else语句不起作用

不介意scanf,一旦我找到其余的问题,我会改变为更好的输入法。

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int main (void) 
{ 
    int n; 
    scanf("%d",&n); 
    int q = (n/25); 

    if (n > 24) 
    { 
    if (n > 49); 
     printf("%d quarters\n", q); 

    else 
     printf("one quarter\n"); 
    } 
    return 0; 
} 

回答

1

你在你的代码的语法错误。 if (n > 49); {。这一行是错误的,在开始括号之前不应该有分号。尝试这个。

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 

int main(void) { 
    int n; 
    scanf("%d", & n); 
    int q = (n/25); 
    if (n > 24) { 
     if (n > 49) { 
      printf("%d quarters\n", q); 
     } else { 
      printf("one quarter\n"); 
     } 
    } 
    return 0; 
} 
0

后删除分号:

if (n > 49); 
0

这条线:

if (n > 49); 

有一个分号。该分号被视为if语句真正路径的主体。你也必须得到关于不匹配的else的编译器错误。

仅供参考:您有时会看到一个像这样的空表达式,用于编写没有主体的循环。

0

在问一个问题之前先搜索一下。 See this answer了解如何编写if..elsenested if

if(
condition) 

if(condition) 

只允许NIT

if 
()