我怎样才能做到这一点? (C)

时间:2014-09-13 06:03:47

标签: c

我试图让这段代码像一组选项一样工作。我已经对它进行了测试,无论我为moduleChoice投入了什么,我都会直接进入gradeTestMain。有人可以解释我做错了吗?

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."));

2 个答案:

答案 0 :(得分:3)

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

应改为

if (moduleChoice == 1) 
    gradeTestMain();

同样适用于其他if s。

你需要关闭括号 - 否则就意味着

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

表示

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

这意味着。

评估moduleChoice == 1,丢弃结果,然后重新评估gradeTestMain()。 然后检查gradeTestMain()的返回值是true还是false。但同样,因为if内部没有任何内容,无论gradeTestMain是返回true还是false,结果都是相同的。

另一件事是

if (moduleChoice /= 1,0,

没有做你认为的事情。将其更改为else。将之前的if更改为else 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.");

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

答案 1 :(得分: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