我是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; }
最好的做法是将主例程包装在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次尝试中找到答案。二分搜索当然是通过猜测边界之间的数字,然后根据您的反馈调整边界来工作的。
您可以将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不支持重新启动调度程序吗?我的意思是,如果出现崩溃,调度程序在恢复后重新启动会发生什么