• 保研练习题(5)


    流程练习题,基本不涉及什么算法。

    要求:
    学生有(学号,姓名,性别,年龄),初始化三个学生的信息
    (10,wes,f,23)(20,ert,f,45)(30,str,t,89),然后对学生信息进行插入和删除处理
    例如
    I12,rt,f,67表示插入12,rt,f,67
    D10 表示删除学号为10的学生的信息
    每次操作完成以后输出所有学生的信息按学号从小到大排序


    输入:
    I12,rt,f,67
    输出
    (10,wes,f,23) (12,rt,f,67) (20,ert,f,45) (30,str,t,89)
    输入:
    D10 
    输出
    (12,rt,f,67) (20,ert,f,45) (30,str,t,89)

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 
     5 // 学生信息
     6 struct student
     7 {
     8     int num;
     9     char name[30];
    10     char sex;
    11     int age;
    12 };
    13 
    14 int main()
    15 {
    16     struct student t;
    17     struct student stu[50];
    18     char cmd,sex,name[30];
    19     int num,age,i,j,k;
    20 
    21     // 初始化
    22     stu[0].num = 10;
    23     strcpy(stu[0].name,"wes");
    24     stu[0].sex = 'f';
    25     stu[0].age = 23;
    26 
    27     stu[1].num = 20;
    28     strcpy(stu[1].name,"ert");
    29     stu[1].sex = 'f';
    30     stu[1].age = 45;
    31 
    32     stu[2].num = 30;
    33     strcpy(stu[2].name,"str");
    34     stu[2].sex = 't';
    35     stu[2].age = 89;
    36 
    37     // 输入
    38     for (i=2; ;){
    39         scanf("%c",&cmd);
    40         if (cmd == 'I'){    // 插入
    41             i += 1;
    42             scanf("%d,%[^,]%*c%c,%d",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age);
    43             // 排序 共i+1个
    44             for (j=0; j<i; j++){
    45                 for (k=0; k<i-j; k++){
    46                     if (stu[k].num > stu[k+1].num){
    47                         t = stu[k];
    48                         stu[k] = stu[k+1];
    49                         stu[k+1] = t;
    50                     }
    51                 }
    52             }
    53             // 输出结果
    54             for (j=0; j<=i; j++){
    55                 printf("(%d,%s,%c,%d) ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age);
    56             }
    57             printf("
    ");
    58         }
    59         else if (cmd == 'D'){    // 删除
    60             scanf("%d",&num);
    61             for (j=0; j<=i; j++){    // 定位到要删除的节点
    62                 if (stu[j].num == num){
    63                     break;
    64                 }
    65             }
    66             for (k=j; k<i; k++){    // 删除节点 把以后的都向前移一个
    67                 stu[k] = stu[k+1];
    68             }
    69             i -= 1;        // 删除后节点数减一
    70             // 输出结果
    71             for (j=0; j<=i; j++){
    72                 printf("(%d,%s,%c,%d) ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age);
    73             }
    74             printf("
    ");
    75         }
    76     }
    77     return 0;
    78 }

  • 相关阅读:
    JS数组常用方法参考---5、sort方法
    JS数组常用方法---1、课程介绍
    JS数组常用方法参考---4、unshift方法
    JS数组常用方法参考---3、队列对应的方法
    ES6课程---12、面向对象
    legend3---30、不同类型的网站打包方案
    数据库Sharding的基本思想和切分策略
    用sharding技术来扩展你的数据库(一)sharding 介绍
    什么是Scale Up和Scale Out?
    淘宝网采用什么技术架构来实现网站高负载的
  • 原文地址:https://www.cnblogs.com/raul-ac/p/3324557.html
Copyright © 2020-2023  润新知