【问题标题】:Program is not returning to main function程序未返回主功能
【发布时间】:2021-12-23 06:35:02
【问题描述】:
#include <stdio.h>
#include<math.h>

int taskchoice, a;

void Menu() {
    printf("What would you like to do: \n Fish = 1\n Hunt = 2 \n Cook = 3\n Boss = 4\n");
    scanf("%d", &a);
    
    if (a == 1) {
        Fishing();
    }
        
    if (a == 2) {
        printf("Hunting\n");
    }
        
    if (a == 3) {
        printf("Cooking\n");
    }

    if (a == 4) {
        printf("Bossing\n");
    }
    else {
       abort();
    }
}

void Fishing() {
    printf("Time to fish me lord?\n");
    return;
}
    
int main() {
    Menu();
    
    printf("Would you like to go back to the menu?");

    //my fishing function is working as intended but the question is, why does it not display
    //anything that is posted after the menu(); in the main function
    //I am new to C and thank you for taking the time to look at my question. 
}

【问题讨论】:

  • 如果您输入除4 之外的任何值,则将调用abort()。程序是否缺少一些elses?
  • 是的,如果你没有选择正确的答案,它应该结束。我一直按1开始钓鱼功能。钓鱼功能有效,但程序没有返回主程序,因此我无法继续编程。
  • 正如我写的,如果你输入1那么Fishing()会被调用,然后因为你没有输入4,程序会abort()而不是返回main .
  • else 仅与最后一个 if 相关,而不是全部。
  • 所以我遇到的问题是多个 if 语句而不是 else-if 语句?

标签: c function return


【解决方案1】:

问题是,if 语句多次出现,最后一个if-else 语句决定了返回路径。

所以不要使用多个if,而是使用if else-if,因为可以肯定用户将输入单个int 值。

使用以下代码代替 Menu() 函数:

void Menu() {
    printf("What would you like to do: \n Fish = 1\n Hunt = 2 \n Cook = 3\n Boss = 4\n");
    scanf("%d", &a);
    
    if (a == 1) {
        Fishing();
    }
        
    else if (a == 2) {
        printf("Hunting\n");
    }
        
    else if (a == 3) {
        printf("Cooking\n");
    }

    else if (a == 4) {
        printf("Bossing\n");
    }
    else {
       abort();
    }
}

【讨论】:

    【解决方案2】:

    在 main 上添加返回值,因为您的 main 函数有一个数据类型。

    int main(){
      return 0;
    }
    

    如果不将 int main 更改为 void main。

    最后删除您的完成功能上的 void。由于该函数不返回任何内容。它返回到 main 并结束 main 函数。

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2021-01-17
      • 1970-01-01
      相关资源
      最近更新 更多