鱼C论坛

 找回密码
 立即注册
查看: 673|回复: 1

[已解决]作业

[复制链接]
发表于 2023-12-22 18:25:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请简要解释这段代码,并说明用哪些函数实现的,函数的输入和输出是什么
void FixPlayer(Player players[], int num_players)
{
        char id[10], name[50];
        printf("请输入棋手编号、姓名:");
        scanf("%s%s", id, name);
                
        int i = 0, fix_choice, fix_index = -1;
        char fix_ch;
                for(i = 0; i < num_players; i++)
                {
                        if(strcmp(players[i].id, id) == 0 && strcmp(players[i].name, name) == 0)
                        {
                                fix_index = i;
                                break;
                        }
                }
                
                        if(fix_index == -1)
                        {
                        printf("查无此人\n");
                        return;
                        }
                
                printf("完整信息:%20s\t%21s\t%10s\t%12s\t%18s\n",
                                                 players[fix_index].id, players[fix_index].name, players[fix_index].identity, players[fix_index].rank, players[fix_index].score);
                printf("选择要修改的数据项(编号不能修改,1-姓名 2-身份 3-段位 4-等级分):");
                scanf("%d", &fix_choice);
                printf("是否修改该数据y/n?:");
                getchar();
                scanf("%c", &fix_ch);
                        if(fix_ch == 'y')
                        {
                                switch(fix_choice)
                                {
                                        case 1:
                                                printf("请输入修改后的姓名:");
                                                scanf("%s", players[fix_index].name);
                                                break;
                                        case 2:
                                                printf("输入修改后的身份:");
                                                scanf("%s", players[fix_index].identity);
                                                break;
                                        case 3:
                                                printf("输入修改后的段位:");
                                                scanf("%s", players[fix_index].rank);
                                                break;
                                        case 4:
                                                printf("输入修改后的等级分:");
                                                scanf("%s", players[fix_index].rank);
                                                break;
                                        default: 
                                                printf("输入错误,请按照规范重新输入!\n");
                                                break; 
                                }
                        printf("修改成功!\n");        
                        SavePlayer(players, num_players);
                        printf("本地文件更新成功\n");
                }
                
        }
        
最佳答案
2023-12-22 18:25:38
这段代码是一个函数,函数名为FixPlayer,没有返回值(void)。该函数用于修改棋手的信息。

函数的输入参数有两个,分别是一个结构体变量Player和一个整数num_players。Player结构体包含了棋手的编号、姓名、身份、段位和等级分等信息。

函数的具体流程如下:

1. 用户输入棋手的编号和姓名。
2. 遍历棋手数组players,查找与用户输入的编号和姓名匹配的棋手,如果找到了匹配的棋手,则记录匹配到的棋手的索引fix_index。
3. 如果没有匹配到任何棋手,则输出"查无此人"并返回。
4. 如果匹配到了棋手,则输出该棋手的完整信息(包括编号、姓名、身份、段位和等级分等)。
5. 用户选择要修改的数据项(1-姓名,2-身份,3-段位,4-等级分)。
6. 用户确认是否修改该数据项,如果确认修改,则根据用户选择的数据项进行相应的修改:
   - 如果选择的是1,即修改姓名,则用户输入修改后的姓名,将其赋值给players.name。
   - 如果选择的是2,即修改身份,则用户输入修改后的身份,将其赋值给players.identity。
   - 如果选择的是3,即修改段位,则用户输入修改后的段位,将其赋值给players.rank。
   - 如果选择的是4,即修改等级分,则用户输入修改后的等级分,将其赋值给players.score。
   - 如果选择的是其他数字,则输出"输入错误,请按照规范重新输入!"。
7. 修改成功后,调用SavePlayer函数保存更新后的棋手信息到本地文件,并输出"本地文件更新成功"。

该函数使用了以下函数:
- scanf:用于从用户输入流中读取数据。
- strcmp:用于比较两个字符串是否相同。
- printf:用于输出提示信息及修改后的棋手信息。
- getchar:用于读取用户输入的字符。
- switch-case语句:用于根据用户选择的数据项进行相应的操作。
- SavePlayer函数:用于将更新后的棋手信息保存到本地文件中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-22 18:25:38 | 显示全部楼层    本楼为最佳答案   
这段代码是一个函数,函数名为FixPlayer,没有返回值(void)。该函数用于修改棋手的信息。

函数的输入参数有两个,分别是一个结构体变量Player和一个整数num_players。Player结构体包含了棋手的编号、姓名、身份、段位和等级分等信息。

函数的具体流程如下:

1. 用户输入棋手的编号和姓名。
2. 遍历棋手数组players,查找与用户输入的编号和姓名匹配的棋手,如果找到了匹配的棋手,则记录匹配到的棋手的索引fix_index。
3. 如果没有匹配到任何棋手,则输出"查无此人"并返回。
4. 如果匹配到了棋手,则输出该棋手的完整信息(包括编号、姓名、身份、段位和等级分等)。
5. 用户选择要修改的数据项(1-姓名,2-身份,3-段位,4-等级分)。
6. 用户确认是否修改该数据项,如果确认修改,则根据用户选择的数据项进行相应的修改:
   - 如果选择的是1,即修改姓名,则用户输入修改后的姓名,将其赋值给players.name。
   - 如果选择的是2,即修改身份,则用户输入修改后的身份,将其赋值给players.identity。
   - 如果选择的是3,即修改段位,则用户输入修改后的段位,将其赋值给players.rank。
   - 如果选择的是4,即修改等级分,则用户输入修改后的等级分,将其赋值给players.score。
   - 如果选择的是其他数字,则输出"输入错误,请按照规范重新输入!"。
7. 修改成功后,调用SavePlayer函数保存更新后的棋手信息到本地文件,并输出"本地文件更新成功"。

该函数使用了以下函数:
- scanf:用于从用户输入流中读取数据。
- strcmp:用于比较两个字符串是否相同。
- printf:用于输出提示信息及修改后的棋手信息。
- getchar:用于读取用户输入的字符。
- switch-case语句:用于根据用户选择的数据项进行相应的操作。
- SavePlayer函数:用于将更新后的棋手信息保存到本地文件中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 04:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表