程序重新启动功能

Posted

技术标签:

【中文标题】程序重新启动功能【英文标题】:Program start-over function 【发布时间】:2020-10-13 12:27:11 【问题描述】:

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

这是程序:

#include 
#include 

#defineguessLimit 10

主函数()


    int secret_number;
    整数猜测;
    intguessCount = 0;
    int outofGuesses = 0;
    诠释我;

    setbuf(标准输出,NULL);

    srand(时间(0));
    secret_number = rand() % 100;

    printf("\n---猜猜密码---\n");


    for(i=1;i 秘密号码)
            printf("对不起,数字太大了。\n");
        
        如果(我==10)
            printf("尝试失败");
        
        如果(猜测>99 || 猜测
    

【问题讨论】:

您想了解什么是“循环”。它们是您在程序中重复内容的方式:learn-c.org/en/For_loops 他们已经有一个for 循环——所以大概他们了解这些是如何工作的。我建议使用while 循环。 将整个游戏的代码放在另一个函数中,并从main() 循环调用。除了应该只调用一次的srand(time(0)); 附带说明 - 如果您提供“更高/更低”的反馈,则给用户 10 次猜测 1-100 范围内的数字的机会过于慷慨。如果我的计算是正确的,那么二进制搜索最多会在log2(100)=6.64... 次尝试中找到答案。换句话说,如果你知道自己在做什么,你应该能够在不超过 7 次尝试中找到答案。二进制搜索当然是通过猜测边界之间的数字然后根据您的反馈调整边界来工作的。 【参考方案1】:

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

【讨论】:

【参考方案2】:

最好的做法是将主要例程包装在while loop 中,并使用条件来确定您是要重复还是退出循环。在这种情况下,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 次尝试中找到答案。二进制搜索当然是通过猜测边界之间的数字,然后根据您的反馈调整边界。

【讨论】:

以上是关于程序重新启动功能的主要内容,如果未能解决你的问题,请参考以下文章

windows的切换用户、注销和重新启动有啥区别?

可以运行一个应用程序然后重新启动 iPhone 吗?

应用程序在后台模式下执行 180 秒后重新启动。通过在功能中启用后台模式

应用程序重新启动时照片丢失并取消固定

Windows——打印机错误(操作无法完成(错误 0x000006ba)。本地打印机后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。)解决方案

如何以编程方式“重新启动”android应用程序[重复]