我试图编写一个c程序,该程序使用一个向随机数添加2个整数的函数。我在下面已经完成了。我的问题是,我将一个变量设置为一个密码,当找到该号码时,我需要程序终止而不是。
int x,y,secretnumber;
secretnumber = 5;
do
{
printf("Please enter two integers to be added together to a random number from 0-99 \n"
"Keep entering numbers until you hit the secret number!\n");
scanf("%i%i", &x, &y);
if(sumintsrand(x,y) != secretnumber)
{
printf("The summation of integers %i and %i and a random number is %i \n\n",x,y,sumintsrand(x,y));
}
else
{
printf("You have found the secret number: %i! Goodbye!\n", secretnumber);
}
}
while(sumintsrand(x,y) != secretnumber);
return 0;
}
int sumintsrand(int x, int y)
{
int sumintsrand = x + y + rand()%5;
return sumintsrand;
}
如果有人知道我哪里出错了,我会非常感激
答案 0 :(得分:0)
你正在调用sumintsrand()函数三次。每次,函数的结果将根据rand()返回的内容而有所不同。
你在while循环中调用sumintsrand()可能找到了密码,但是没有保留。您需要存储它以检查while循环是否需要终止。
更新:
int sum = 0;
do {
scanf("%i%i", &x, &y);
sum = sumintsrand(x,y);
} while(sum != secretnumber);
答案 1 :(得分:0)
它不起作用,因为在第while(sumintsrand(x,y) != secretnumber);
行第sumintsrand
行 - 而且它给出了其他结果。
可能的解决方案:
sumintsrand
第一次通话的结果并检查它(保存的结果)是否与secretnumber
相同break
bool
变量,该变量将结束循环 - 一开始它将是true
,当您找到该数字时,只需将其设置为false
。答案 2 :(得分:0)
<强>更新强>
我用我早先建议的mod编译了你的程序,我没有得到愚蠢的大数字,所以传递那个 - 不同的问题?
继续更改随机数似乎有点奇怪 - 同样的猜测可能会失败一次,但下一次工作。还有一个关于范围是5还是99的混淆。
所以我简化了你的工作,让你猜到两个数字相加到这个秘密数字。如果那不是您的意图,也许您可以利用我的代码。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXVAL 5
int main(){
int x, y, secretnumber, testval;
srand ((unsigned)time(NULL));
secretnumber = rand() % (MAXVAL+1);
do
{
printf("Enter two integers to be added to equal a secret random number from 0-%d\n"
"Keep entering numbers until you hit the secret number!\n", MAXVAL);
if (scanf("%d%d", &x, &y) != 2)
return 0; // exit program
testval = x + y;
if(testval != secretnumber)
printf("Sorry - try again!\n\n");
else
printf("You have found the secret number: %d + %d = %d! Goodbye!\n",
x, y, secretnumber);
}
while(testval != secretnumber);
return 0;
}