【问题标题】:Having trouble with if/elseif/else 遇到问题
【发布时间】:2018-06-14 09:29:39
【问题描述】:

我的部分代码有问题。如果我选择选项 A,它会运行并给我正确的答案,但是,如果我选择选项 S 或 M,它什么也没给我,只会去它应该去的地方。已经尝试将 if 更改为 else if,但它显示“预期语句”。

对不起,如果有些句子是葡萄牙语,但这里是:

if ((opcao2 == 'A') || (opcao2 == 'a'))
                {
                    if ((LinhaA != LinhaB) && (ColunaA != ColunaB))     //confirmar que se pode fazer a subtraçao entre as duas matrizes
                    {
                        printf("\nN%co %c poss%cvel somar as matrizes A + B!\nInsira novos valores\n", 198, 130, 161);
                        fprintf(ficheiro_out, "\n\nNão é possível somar as matrizes A + B!\nInsira novos valores\n");
                    }
                    printf("\n\n\n");
                    fprintf(ficheiro_out, "\n\n\n");

                    if ((LinhaA == LinhaB) && (ColunaA == ColunaB))
                    {
                        printf("\n%c poss%cvel somar as matrizes A + B!\n", 144, 161);
                        fprintf(ficheiro_out, "\nÉ possível somar as matrizes A + B!\n");
                    }
                    printf("\n\n\n");
                    fprintf(ficheiro_out, "\n\n\n");
                }
                break;

             if ((opcao2 == 'S') || (opcao2 == 's'))

                    {

                    if((LinhaA != LinhaB) && (ColunaA != ColunaB))      //confirmar que se pode fazer a subtraçao entre as duas matrizes

                    {
                        printf("\nN%co %c poss%cvel somar as subtrair A - B!\nInsira novos valores\n", 198, 130, 161);
                        fprintf(ficheiro_out, "\n\nNão é possível subtrair as matrizes A - B!\nInsira novos valores\n");
                    }

                    printf("\n\n\n");
                    fprintf(ficheiro_out, "\n\n\n");

                    else if ((LinhaA == LinhaB) && (ColunaA == ColunaB))
                    {
                        printf("\n%c poss%cvel subtrair as matrizes A - B!\n", 144, 161);
                        fprintf(ficheiro_out, "\nÉ possível subtrair as matrizes A - B!\n");
                    }

                    printf("\n\n\n");
                    fprintf(ficheiro_out, "\n\n\n");
                }
                break;

                if ((opcao2 == 'M') || (opcao2 == 'm'))

                {
                    if (ColunaA != LinhaB)      //confirmar que se pode fazer a multiplicação entre as duas matrizes
                    {
                        printf("\nN%co %c poss%cvel multiplicar as matrizes A * B!\nInsira novos valores\n", 198, 130, 161);
                        fprintf(ficheiro_out, "\n\nNão é possível multiplicar as matrizes A * B!\nInsira novos valores\n");
                    }
                    printf("\n\n\n");
                    fprintf(ficheiro_out, "\n\n\n");

                    if (ColunaA == LinhaB);

                    printf("\n%c poss%cvel multiplicar as matrizes A * B!\n", 144, 161);
                    fprintf(ficheiro_out, "\nÉ possível multiplicar as matrizes A * B!\n");

                    fprintf(ficheiro_out, "\n");
                    break;
                }
            }

【问题讨论】:

  • 如果if 语句在loop 中并且必须使用break,那么您最好将它们包含在大括号中。
  • 我认为您使用术语 break 而不是 else 将 switch 语句的语法与 else/if 语句混淆了

标签: c++ c visual-studio


【解决方案1】:

您的 break 语句显然将程序控制发送到最终的 if else 块之外。

改用} else if { 并完全删除break 语句。

【讨论】:

  • 现在也是学习如何使用逐行调试器的好时机。有这样的事情就很明显了。
  • 新开的编程课没多久,老师想赶这种东西,所以不教那种东西。猜猜是时候进行一些自学了。
  • @LuisCardo:确实如此。学习使用调试器比学习编码更重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2011-04-14
  • 2021-05-15
  • 2017-10-05
相关资源
最近更新 更多