2013-03-04 131 views
1

这是一个家庭作业问题,但我只是要求调试帮助。我不确定是什么导致了这些错误。在C编程中循环练习

int CalculateResult(int High, int Low) 
{ 
    int Result; 
    int count = 0; 
    int check; 
do 
    { 
    printf("Enter the value to check within the range: "); 
    scanf("%d",&Result); 

    if (Result == 0) 
    { 
    printf("Error! Positive value only!\n"); 
    } 

    else if (Result < -1) 
    { 
    printf("Error! Positive value only!\n"); 
    } 

    else if (Result>= 1); 
    { 
    for (check = Low ; check <= High;check++) 
     { 
     if (check%Result==0) 
      { 
      (count++); 
      } 
     } 
    } 
    while (Result != -1); 
    return (count); 
    } 
} 

我有两个错误:174:1 ---而在此之前}令牌 预计再有就是174:1点---预计在声明输入结束

任何人看到什么是错的?对不起,它很混乱,我是一个小菜。

+6

这不是一个调试问题。这是一个语法错误的问题。 – 2013-03-04 22:29:31

+2

匹配你的'{'和'}'。你会很容易看到错误。提示:有一个'do {statements} while(contition)'语句和一个不同的'while(condition){语句}'stamement。 – pmg 2013-03-04 22:31:40

+0

你的代码片段的哪一行对应于第174行? – SirPentor 2013-03-04 22:32:01

回答

1

如果你正确地缩进代码,你可以很容易地看到那里的错误是:

int CalculateResult(int High, int Low) 
{ 
    int Result; 
    int count = 0; 
    int check; 
    do 
    { 
    printf("Enter the value to check within the range: "); 
    scanf("%d",&Result); 

    if (Result == 0) 
    { 
     printf("Error! Positive value only!\n"); 
    } 

    else if (Result < -1) 
    { 
     printf("Error! Positive value only!\n"); 
    } 

    else if (Result >= 1); 
    { 
     for (check = Low ; check <= High; check++) 
     { 
      if (check%Result == 0) 
      { 
       (count++); <-------- The() are OK, but not necessary. 
      } 
     } 
    } 
    } <--------------------------- Moved this brace up from below. 
    while (Result != -1); 

    return (count); 
} 
+0

我不会说在if-block中没有额外的缩进是“正确的”,但是..一个品味的问题 – 2013-03-04 22:41:14

+0

我认为他期待在do-while循环结束后返回(计数)。根据你的答案,它不会工作。 – 2013-03-04 22:45:24

+0

@Nicklas这是Allman风格。它的优点是可以让你排列你的开启和关闭括号以进行比较。 OP似乎使用Whitesmiths风格(或多或少)。 – 2013-03-04 22:48:58

1

在指令前添加“}”。你丢失了一个括号:)现在,“while”是最后一个“else if”指令。正确的模式: do {
//Some code here
} while (clause);

+0

这么多的COMMOLLOL谢谢大家。我根据您的所有说明修复了代码,我很感激。 – Liquidmetal 2013-03-04 23:09:50

1

变化

 } 
    while (Result != -1); 
    return (count); 
    } 
} 

 } 
    } 
    while (Result != -1); 
    return (count); 
} 
0

只有要说两件事:
1.检查是否有所有需要的括号
2.检查是否缺少“;”或者如果有“;”它不应该
这是一个家庭作业的问题,所以我不会给你答案直接
好了:),再提一些建议:
1.总是缩进代码
2. ifelse if不一个块做任何事情可能是没用的ifelse if;)