joy.cxy 发表于 2020-11-13 12:31:35

求大佬教教萌新谢谢啦

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










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

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

                }
                if(a==2)
                {
                        for(j=0;j<e;j++)
                        printf("%s %d %d\n",student.name,&student.num,student.score);
                }
                if(a==3)
                       
                }
        }
        return 0;
}

xieglt 发表于 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;
                int num;
                int score;
               
        }student;
       
        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.name, &student.num, &student.score);
                        e++;
                       
                }
                if(a==2)
                {
                        for(j=0;j<e;j++)
                        {
                              //这里输出不要加取址符
                                printf("%s %d %d\n",student.name,student.num,student.score);
                        }
                }
                if(a==3)
                {
                        printf("请输入要删除的学号:\n");
                        scanf("%d",&a);
                        j = 0;
                        for(i=0 ; i<e ; i++)
                        {
                                if(a==student.num)
                                {
                                        if(i < 19)
                                        {
                                                memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
                                        }

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

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

        return 0;
}

joy.cxy 发表于 2020-11-14 10:43:41

xieglt 发表于 2020-11-13 21:49


谢谢
页: [1]
查看完整版本: 求大佬教教萌新谢谢啦