找到密码后需要帮助终止程序

时间:2015-03-18 15:53:32

标签: c

我试图编写一个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;
}

如果有人知道我哪里出错了,我会非常感激

3 个答案:

答案 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行 - 而且它给出了其他结果。

可能的解决方案:

  1. 保存sumintsrand第一次通话的结果并检查它(保存的结果)是否与secretnumber相同
  2. 使用break
  3. 制作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;
}