我的代码可以完美地编译和执行,但其中有一部分在执行过程中没有被读取

my code compiles and execute perfectly but there is a part of that is like not read during execution

我是编程初学者,我知道一些 Javascript、C#,现在正在学习 C。 我用 C 语言创建了一个名为 more or less 的简单迷你游戏(计算机选择一个随机数,你必须用最少的次数猜测这个数字)所以代码可以编译并完美运行,除了显示祝贺部分和 for 循环打印分数。就像他们根本没有读过一样。 我试图将 for 循环放在 while 循环中。但它只是废弃了代码。 我还删除了 int argc, char *argv[] 但它什么也没做。 我试图寻求帮助,但一无所获

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

int main (int argc, char *argv[])
{
    const int MAX = 100, MIN = 1;   
    int enteredNumber;
    int nombreMystere;
    int NombreDeCoups;
    //ask user for input (integer)
    printf("quel est le nombre? \n");
    scanf("%d", &enteredNumber);
    
    //generation of random number
    srand(time(NULL));//srand() must be used just once in any program
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;//rand() is a function to provide random number

//program loop. repeats until user finds number
while (enteredNumber != nombreMystere)
    {
        if (enteredNumber < nombreMystere)//if loop, that shows if it,s more or less to provide
        {
            printf("c'est plus! \n");
        }
        else if (enteredNumber > nombreMystere)
        {
            printf("c'est moins! \n");
        }
        else 
        {
            printf("Bravo! Vous avez trouve le bon nombre");
        }
        
        printf("quel est le nombre? \n"); //reprompts user until find the number
        scanf("%d", &enteredNumber);
        
    }
    for (NombreDeCoups = 0; enteredNumber =! nombreMystere; NombreDeCoups++) // loop to give score of how many tries user did
        {
            printf("en %d coups", &NombreDeCoups);
        }
    
}```

编译时出现警告:

warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
   41 |             printf("en %d coups", &NombreDeCoups);
      |                        ~^         ~~~~~~~~~~~~~~

并切换到

printf("en %d coups", NombreDeCoups);

这也很可疑:

demo.c:39:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   39 |     for (NombreDeCoups = 0; enteredNumber =! nombreMystere; NombreDeCoups++)

你的意思是 enteredNumber != nombreMystere,但你不需要另一个循环来获得用户尝试次数的分数,只需在每次迭代结束时增加计数器并在循环外打印结果:

int NombreDeCoups = 0;

while (enteredNumber != nombreMystere)
{
    ...
    NombreDeCoups++;
}
printf("en %d coups", NombreDeCoups);

对于初学者来说,这个 else 语句

    else 
    {
        printf("Bravo! Vous avez trouve le bon nombre");
    }

永远不会在 while 循环中获得控制权

while (enteredNumber != nombreMystere)

因为只有当enteredNumber不等于nombreMystere时才会执行循环体。

您需要将 else 语句的 sub-statement 移到 while 循环之外。

在这个for循环中,其目的不清楚

    for (NombreDeCoups = 0; enteredNumber =! nombreMystere; NombreDeCoups++) // loop to give score of how many tries user did

    {
        printf("en %d coups", &NombreDeCoups);
    }

您在 printf.

的调用中使用了不正确的参数表达式 &NombreDeCoups 而不是 NombreDeCoups