456
社区成员




int main()//主函数-程序入口-main函数有且只有一个
{
void menu()
{
printf("--------------------------------");
printf("--------1.pley 2.exit-------");
printf("--------------------------------");
}
void game()
{
int guess = 0;
int ret = rand() % 10 + 1;
printf("%d\n", ret);
while (1)
{
printf("猜数字:>");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
};
}
srand((unsigend int)time(NULL));
int input = 0;
do{
menu();
printf("请选择>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();//猜数字
break;
case 0:
printf("跳出循环");
break;
default:
printf("end");
break;
}
} while (input);
getcher();
return 0;
}
这段C语言代码中存在以下五个错误:
函数嵌套问题:在C语言中,不允许在一个函数内部定义另一个函数。在给定的代码中,menu() 和 game() 函数被嵌套在 main() 函数中,这是不合法的。
srand 和 rand 函数错误:srand 和 rand 函数用于生成随机数。然而,在给定的代码中,srand 函数的调用放在了函数外部,不属于任何函数,这是错误的。正确的做法是将 srand 函数放在 main 函数内部,并在使用 rand 函数生成随机数之前调用 srand 函数来初始化随机数种子。
unsigned int 类型拼写错误:在给定的代码中,(unsigend int) 是拼写错误,应该是 (unsigned int)。
缺少头文件:在给定的代码中,缺少了一些必要的头文件,如 stdio.h、stdlib.h 和 time.h。这些头文件中包含了在代码中使用的函数的声明。
getcher 函数错误:在给定的代码中,存在一个未定义的函数 getcher。可能是想要使用 getchar 函数来等待用户按下回车键。
以下是经过修正的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("--------------------------------\n");
printf("--------1.play 2.exit-------\n");
printf("--------------------------------\n");
}
void game()
{
int guess = 0;
int ret = rand() % 10 + 1;
printf("%d\n", ret);
while (1)
{
printf("猜数字:>");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("跳出循环\n");
break;
default:
printf("end\n");
break;
}
} while (input);
getchar(); // 等待用户按下回车键
return 0;
}
一些小的细节问题吧,如函数定义需要放到main()函数外面,一些关键字拼写错误,等。
修改如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 函数定义放到main函数外面
void menu() {
printf("--------------------------------\n");
printf("--------1.play 2.exit-------\n");
printf("--------------------------------\n");
}
void game() {
int guess = 0;
int ret = rand() % 10 + 1;
printf("%d\n", ret);
while (1) {
printf("猜数字:>");
scanf("%d", &guess);
if (guess > ret) {
printf("猜大了\n");
} else if (guess < ret) {
printf("猜小了\n");
} else {
printf("恭喜你猜对了\n");
break;
}
} // 这里那个分号去除
}
int main() { //主函数-程序入口-main函数有且只有一个
// 这里 unsigend 应为 unsigned
srand((unsigned int)time(NULL));
int input = 0;
do {
menu();
printf("请选择>:");
scanf("%d", &input);
switch (input) {
case 1:
game();//猜数字
break;
case 0:
printf("跳出循环");
break;
default:
printf("end");
break;
}
} while ((input==0)||(input==1)); // do-while条件改为 当input为0或为1
getchar();
return 0;
}