当前位置: 首页 > 知识库问答 >
问题:

程序重新启动功能

邢寒
2023-03-14

我是C编程的初学者,如果我能得到一些关于如何重新启动程序的提示,我将不胜感激?我目前正在开发一个猜测游戏,用户有10次尝试猜测随机提供的秘密号码。我希望该程序能够从一开始就为用户提供新一轮游戏(尝试次数1猜测次数:),这意味着重新运行该程序。

以下是节目:

#include <stdlib.h>
#include <time.h>

#define guessLimit 10

int main()
{

    int secret_number;
    int guess;
    int guessCount = 0;
    int outofGuesses = 0;
    int i;

    setbuf(stdout, NULL);

    srand(time(0));
    secret_number = rand() % 100;

    printf("\n---GUESS THE SECRET NUMBER---\n");


    for(i=1; i < 11; i++){
        printf("Attempt number %d Guess a number: ", i);
        scanf("%d", &guess);
        if(guess == secret_number){
            printf("Correct number!\n"); 
            break;   
        }   
    
        if(guess < secret_number){
            printf("sorry, number too small.\n");
        }
        else if(guess > secret_number){
            printf("Sorry, number too big.\n");
        }
        if(i==10){
            printf("Out of Attempts"); 
        }
        if(guess>99 || guess<0){
            printf("Out of Range.\n");
       }
    }    

    return 0;
}

共有2个答案

融唯
2023-03-14

最好的做法是将主例程包装在while循环中,并使用一个条件来确定是否要重复或退出循环。在本例中,do-while构造运行良好。只需在循环结束时询问用户是否愿意再次播放。如果没有,那么退出。否则,重复代码。注意不要在循环中调用srand(time(0)),或者重置随机序列。

#include <stdlib.h>
#include <time.h>

#define guessLimit 10

int main()
{

    int secret_number;
    int guess;
    int guessCount = 0;
    int outofGuesses = 0;
    int i;
    char play;

    srand(time(0));

    do {
        secret_number = rand() % 100;

        printf("\n---GUESS THE SECRET NUMBER---\n");


        for(i=1; i < 11; i++){
        printf("Attempt number %d Guess a number: ", i);
        scanf("%d", &guess);
        if(guess == secret_number){
            printf("Correct number!\n");
            break;
        }

        if(guess < secret_number){
            printf("sorry, number too small.\n");
        }
        else if(guess > secret_number){
            printf("Sorry, number too big.\n");
        }
        if(i==10){
            printf("Out of Attempts");
        }
        if(guess>99 || guess<0){
            printf("Out of Range.\n");
           }
        }
        printf("\nPlay again? (y/n): ");
        scanf(" %c", &play);
    } while (play == 'y');

    return 0;
}

作为附注-给用户10次机会来猜测1-100范围内的数字,如果您提供“更高/更低”的反馈,那就太慷慨了。如果我的计算是正确的,二分搜索将在最大限度地log2(100)=6.64...尝试中找到答案。换句话说,如果您知道自己在做什么,您应该能够在不超过7次尝试中找到答案。二分搜索当然是通过猜测边界之间的数字,然后根据您的反馈调整边界来工作的。

长孙瑞
2023-03-14

您可以将for循环封装在while循环中,并让条件成为控制台的输入以指示用户已完成播放。

 类似资料:
  • 问题内容: 我愿意在应用程序中添加一个按钮,单击该按钮将重新启动该应用程序。我搜索谷歌,但没有发现任何有用的,除了这一个。但是,此处遵循的过程违反了Java的WORA概念。 是否有其他以Java为中心的方法来实现此功能?是否可以只派生另一个副本然后退出? 提前致谢。我感谢您的帮助。 @deporter我已经尝试过您的解决方案,但是它不起作用:( @mKorbel我写的,采取的概念下面的代码,你曾在

  • 问题内容: 您如何使python程序自动重新启动?因此,假设有一个非常简单的程序,例如: 现在,在Python Shell中,您将必须按“运行”按钮,然后按“运行模块(F5)”,或者仅按键盘上的“ f5”按钮。那是您第一次运行它。程序结束后,您将返回到“ Cheese.py”文件,然后按“ f5”再次运行该程序。大家和我在一起吗?好的,所以我的问题是,如何使程序自动重新启动,而无需手动执行? 问题

  • 问题内容: 如何重新启动Java AWT应用程序?我有一个附加了事件处理程序的按钮。我应该使用什么代码来重新启动应用程序? 我想做与应用程序中相同的事情。 问题答案: 当然,可以重新启动Java应用程序。 以下方法显示了一种重新启动Java应用程序的方法: 基本上,它执行以下操作: 查找Java可执行文件(我在这里使用了Java二进制文件,但这取决于您的要求) 查找应用程序(在我的情况下是一个ja

  • 问题内容: 我试图编写一个文件监视器,它将检查文件是否添加了新行,该监视器实际上是一个线程,它将始终由randomaccessfile读取该行。 这是监视器的核心代码: 这是一些帮助类: 这是调用监视器的示例: 现在,我的问题是,如果我仅调用以下代码,代码就可以很好地工作: 这将监视文件的行追加,并通知侦听器。 但是,当我致电: 这意味着我想监视另一个文件而不是之前。 因此,在Monitor中,我

  • 我有一个docker撰写yml文件,定义了几个容器: 数据库 网络服务 我在“web服务”中定义了“依赖于”,在“数据库”之后开始。这两个容器都定义为“始终重新启动”。 我一直在谷歌上搜索,在系统重启时找不到关于容器启动顺序的清晰信息。docker守护进程是否读取docker compose yml文件并启动数据库,然后启动web服务?或者它是如何工作的?

  • 语境 我试图使用JDBC在集群模式下使用quartz调度器。 问题 在开始使用集群模式下的jdbc之前,我只是用RAM存储测试了调度器。这没有问题,我能够重新启动调度程序(主类)没有任何错误。我现在遇到的问题是,当我停止执行(CTRL+C)然后重新启动它时,我总是得到错误消息: 我不明白这是怎么回事。quartz不支持重新启动调度程序吗?我的意思是,如果出现崩溃,调度程序在恢复后重新启动会发生什么