鱼C论坛

 找回密码
 立即注册
查看: 981|回复: 2

[已解决]求大佬教教萌新谢谢啦

[复制链接]
发表于 2020-11-13 12:31:35 | 显示全部楼层 |阅读模式

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

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

x
求大佬帮忙看看这道题添加和总览已经弄出来了就最后的删除不会
题目如下
创建一个结构体数组储存学生信息,要求界面有提示用户操
作的语句。
程序功能:添加,总览,删除学生信息。用一个循环实现,根
据输入的键盘值来选择功能。
学生信息包括,学生姓名,学号,分数
下面是我写的代码










#include <stdio.h>
int main()
{
        int i,j,e=0;
        int a = 0;
        struct student
        {
                char name[20];
                int num;
                int score;

        }student[20];
        for (i = 0; i <= 20; i++)
        {
                scanf_s("%d", &a);
                if(a==1)
                {
                        printf("请输入学生姓名,学号,成绩\n");
                        scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
                        e++;

                }
                if(a==2)
                {
                        for(j=0;j<e;j++)
                        printf("%s %d %d\n",student[j].name,&student[j].num,student[j].score);
                }
                if(a==3)
                       
                }
        }
        return 0;
}
最佳答案
2020-11-13 21:49:18
本帖最后由 xieglt 于 2020-11-13 21:50 编辑
#include <stdio.h>
#include<string.h>

int main()
{
        int i,j,e=0;
        int a = 0;
        //结构体名字不要和变量名形同
        struct students
        {
                char name[20];
                int num;
                int score;
                
        }student[20];
        
        printf("请选择功能:\n");
        
        while(1)
        {
                printf("0:退出\t1:添加\t2:总览\t3:删除\n");
                scanf("%d", &a);
                if(a == 0)
                {
                        break;
                }
                if(a == 1 && e<20)
                {
                        printf("请输入学生姓名,学号,成绩:\n");
                        scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
                        e++;
                        
                }
                if(a==2)
                {
                        for(j=0;j<e;j++)
                        {
                                //这里输出不要加取址符
                                printf("%s %d %d\n",student[j].name,student[j].num,student[j].score);
                        }
                }
                if(a==3)
                {
                        printf("请输入要删除的学号:\n");
                        scanf("%d",&a);
                        j = 0;
                        for(i=0 ; i<e ; i++)
                        {
                                if(a==student[i].num)
                                {
                                        if(i < 19)
                                        {
                                                memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
                                        }

                                        student[e-1].name[0] = '\0';
                                        student[e-1].num = 0;
                                        student[e-1].score = 0;
                                        
                                        j = 1;
                                        e--;
                                        break;
                                }
                        }

                        if(j == 0)
                        {
                                printf("找不到该学号\n");
                        }
                }
                        
        }

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 21:49:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xieglt 于 2020-11-13 21:50 编辑
#include <stdio.h>
#include<string.h>

int main()
{
        int i,j,e=0;
        int a = 0;
        //结构体名字不要和变量名形同
        struct students
        {
                char name[20];
                int num;
                int score;
                
        }student[20];
        
        printf("请选择功能:\n");
        
        while(1)
        {
                printf("0:退出\t1:添加\t2:总览\t3:删除\n");
                scanf("%d", &a);
                if(a == 0)
                {
                        break;
                }
                if(a == 1 && e<20)
                {
                        printf("请输入学生姓名,学号,成绩:\n");
                        scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
                        e++;
                        
                }
                if(a==2)
                {
                        for(j=0;j<e;j++)
                        {
                                //这里输出不要加取址符
                                printf("%s %d %d\n",student[j].name,student[j].num,student[j].score);
                        }
                }
                if(a==3)
                {
                        printf("请输入要删除的学号:\n");
                        scanf("%d",&a);
                        j = 0;
                        for(i=0 ; i<e ; i++)
                        {
                                if(a==student[i].num)
                                {
                                        if(i < 19)
                                        {
                                                memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
                                        }

                                        student[e-1].name[0] = '\0';
                                        student[e-1].num = 0;
                                        student[e-1].score = 0;
                                        
                                        j = 1;
                                        e--;
                                        break;
                                }
                        }

                        if(j == 0)
                        {
                                printf("找不到该学号\n");
                        }
                }
                        
        }

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-14 10:43:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 12:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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