这套代码里面为什么会有五个个报错啊

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;
}

...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-07-09
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7975867, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
pxxaish9527 2023-07-10
  • 打赏
  • 举报
回复 1

这段C语言代码中存在以下五个错误:

  1. 函数嵌套问题:在C语言中,不允许在一个函数内部定义另一个函数。在给定的代码中,menu() 和 game() 函数被嵌套在 main() 函数中,这是不合法的。

  2. srand 和 rand 函数错误:srand 和 rand 函数用于生成随机数。然而,在给定的代码中,srand 函数的调用放在了函数外部,不属于任何函数,这是错误的。正确的做法是将 srand 函数放在 main 函数内部,并在使用 rand 函数生成随机数之前调用 srand 函数来初始化随机数种子。

  3. unsigned int 类型拼写错误:在给定的代码中,(unsigend int) 是拼写错误,应该是 (unsigned int)。

  4. 缺少头文件:在给定的代码中,缺少了一些必要的头文件,如 stdio.h、stdlib.h 和 time.h。这些头文件中包含了在代码中使用的函数的声明。

  5. 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;
}
  • 举报
回复
@pxxaish9527 谢谢大佬,讲的真的很全面而且非常有用精准的指出了问题所在。
a5156520 2023-07-09
  • 打赏
  • 举报
回复

一些小的细节问题吧,如函数定义需要放到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;
}

img

456

社区成员

发帖
与我相关
我的任务
社区描述
一个有态度的互联网技术分享社区,主要方向:数据库、后端Java/C#、前端、运维、操作系统、硬件知识、架构基础技术文章分享、技术交流。也会定期分享各种学习资源、福利红包等。希望大家可以互相进步!
数据库后端运维 个人社区 江苏省·苏州市
社区管理员
  • IT技术分享社区
  • 80后大叔爱学习
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

这是一个有态度的互联网技术交流社区,主要方向:数据库、后端、前端、开发工具、操作系统、运维、架构知识内容分享。

大家也可以把日常工作的问题也可以发帖子,大家共同解决、互帮互助。

互联网是一个开放共享的平台,一个人的力量远远不够,需要大家一起努力,产生的力量才会坚不可摧!

在这里小编期待大家的加入,如有问题可以随时沟通,相信大家都会越来越好!

 

试试用AI创作助手写篇文章吧