鱼C论坛

 找回密码
 立即注册
查看: 1155|回复: 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 编辑
  1. #include <stdio.h>
  2. #include<string.h>

  3. int main()
  4. {
  5.         int i,j,e=0;
  6.         int a = 0;
  7.         //结构体名字不要和变量名形同
  8.         struct students
  9.         {
  10.                 char name[20];
  11.                 int num;
  12.                 int score;
  13.                
  14.         }student[20];
  15.        
  16.         printf("请选择功能:\n");
  17.        
  18.         while(1)
  19.         {
  20.                 printf("0:退出\t1:添加\t2:总览\t3:删除\n");
  21.                 scanf("%d", &a);
  22.                 if(a == 0)
  23.                 {
  24.                         break;
  25.                 }
  26.                 if(a == 1 && e<20)
  27.                 {
  28.                         printf("请输入学生姓名,学号,成绩:\n");
  29.                         scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
  30.                         e++;
  31.                        
  32.                 }
  33.                 if(a==2)
  34.                 {
  35.                         for(j=0;j<e;j++)
  36.                         {
  37.                                 //这里输出不要加取址符
  38.                                 printf("%s %d %d\n",student[j].name,student[j].num,student[j].score);
  39.                         }
  40.                 }
  41.                 if(a==3)
  42.                 {
  43.                         printf("请输入要删除的学号:\n");
  44.                         scanf("%d",&a);
  45.                         j = 0;
  46.                         for(i=0 ; i<e ; i++)
  47.                         {
  48.                                 if(a==student[i].num)
  49.                                 {
  50.                                         if(i < 19)
  51.                                         {
  52.                                                 memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
  53.                                         }

  54.                                         student[e-1].name[0] = '\0';
  55.                                         student[e-1].num = 0;
  56.                                         student[e-1].score = 0;
  57.                                        
  58.                                         j = 1;
  59.                                         e--;
  60.                                         break;
  61.                                 }
  62.                         }

  63.                         if(j == 0)
  64.                         {
  65.                                 printf("找不到该学号\n");
  66.                         }
  67.                 }
  68.                        
  69.         }

  70.         return 0;
  71. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  3. int main()
  4. {
  5.         int i,j,e=0;
  6.         int a = 0;
  7.         //结构体名字不要和变量名形同
  8.         struct students
  9.         {
  10.                 char name[20];
  11.                 int num;
  12.                 int score;
  13.                
  14.         }student[20];
  15.        
  16.         printf("请选择功能:\n");
  17.        
  18.         while(1)
  19.         {
  20.                 printf("0:退出\t1:添加\t2:总览\t3:删除\n");
  21.                 scanf("%d", &a);
  22.                 if(a == 0)
  23.                 {
  24.                         break;
  25.                 }
  26.                 if(a == 1 && e<20)
  27.                 {
  28.                         printf("请输入学生姓名,学号,成绩:\n");
  29.                         scanf("%s%d%d", student[e].name, &student[e].num, &student[e].score);
  30.                         e++;
  31.                        
  32.                 }
  33.                 if(a==2)
  34.                 {
  35.                         for(j=0;j<e;j++)
  36.                         {
  37.                                 //这里输出不要加取址符
  38.                                 printf("%s %d %d\n",student[j].name,student[j].num,student[j].score);
  39.                         }
  40.                 }
  41.                 if(a==3)
  42.                 {
  43.                         printf("请输入要删除的学号:\n");
  44.                         scanf("%d",&a);
  45.                         j = 0;
  46.                         for(i=0 ; i<e ; i++)
  47.                         {
  48.                                 if(a==student[i].num)
  49.                                 {
  50.                                         if(i < 19)
  51.                                         {
  52.                                                 memcpy(student+i,student+i+1,sizeof(students)*(e-i-1));
  53.                                         }

  54.                                         student[e-1].name[0] = '\0';
  55.                                         student[e-1].num = 0;
  56.                                         student[e-1].score = 0;
  57.                                        
  58.                                         j = 1;
  59.                                         e--;
  60.                                         break;
  61.                                 }
  62.                         }

  63.                         if(j == 0)
  64.                         {
  65.                                 printf("找不到该学号\n");
  66.                         }
  67.                 }
  68.                        
  69.         }

  70.         return 0;
  71. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-14 10:43:41 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 03:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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