2014-09-13 69 views
-6

我想让这段代码像一组选项一样工作。我已经测试过了,无论我为moduleChoice添加了什么内容,都需要我直接进入GradeTestMain。有人能解释我做错了什么吗?我该如何做这项工作? (C)

int main (void) 
{ 
    int moduleChoice=5; 

    printf ("Please choose which module you would like to use.\n"); 
    printf ("press 1 for GradeTest version 1.1\n"); 
    printf ("press 0 to exit\n"); 
    scanf_s ("%d", &moduleChoice); 

    if (moduleChoice == 1, 
     gradeTestMain()); 
    if (moduleChoice == 0, 
     printf ("Thank you for using GradeTest version 1.1! Have a great day!")); 
    if (moduleChoice /= 1,0, 
     printf ("That is not a valid choice. Please try again.")); 
+0

记得要测试'scanf_s()'是否成功!但是,正如我看到的答案所诊断的那样,代码中存在的问题更多。 – 2014-09-13 06:10:24

+3

这些是你在那里有创意的一些陈述!它们在语法上不是非法的,但它们确实在语义上不正确。你真的认为'moduleChoice/= 1,0'意味着moduleChoice不是1而不是0?我建议你阅读一本C编程书或教程,不要只是猜测语法,或者随时去修改。 – 2014-09-13 06:25:19

回答

3
if (moduleChoice == 1, 
    gradeTestMain()); 

应改为

if (moduleChoice == 1) 
    gradeTestMain(); 

同样,对于其他if秒。

您需要关闭托架 - 否则就意味着

if (moduleChoice == 1, gradeTestMain()); 

这意味着

if (moduleChoice == 1, gradeTestMain()) 
{ 
    ; 
} 

意思。

评估moduleChoice == 1,扔掉结果,然后评估gradeTestMain()。 然后检查返回值gradeTestMain()是否为真或假。但同样,因为if内部没有任何内容,无论gradeTestMain是否返回true或false,结果都是一样的。

另一件事是,

if (moduleChoice /= 1,0, 

没有做什么,你认为它。将其更改为else。改变以往ifelse if 所以你需要

if (moduleChoice == 1) 
    gradeTestMain(); 
else if (moduleChoice == 0) 
    printf ("Thank you for using GradeTest version 1.1! Have a great day!"); 
else 
    printf ("That is not a valid choice. Please try again."); 

这可能是投资于一本书是个好主意。

+0

大声笑。每个'printf'之后你都有两个'))'就像OP一样! – 2014-09-13 09:42:49

2
int main (void) 
{ 
    int moduleChoice=5; 

    printf ("Please choose which module you would like to use.\n"); 
    printf ("press 1 for GradeTest version 1.1\n"); 
    printf ("press 0 to exit\n"); 
    scanf ("%d", &moduleChoice); 

    if (moduleChoice == 1) 
     gradeTestMain(); 
    else if (moduleChoice == 0) 
     printf ("Thank you for using GradeTest version 1.1! Have a great day!"); 
    else 
     printf ("That is not a valid choice. Please try again."); 

这项工作用C