我的代码可以完美地编译和执行,但其中有一部分在执行过程中没有被读取
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
我是编程初学者,我知道一些 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