zoukankan      html  css  js  c++  java
  • 关于C++结构体

    例如:
    输入 100 个学生的学号,姓名和考试成绩,编写程序找出高分数和低分数者并输出
    用变量和数组做数据结构课编写程序如下:

    #include<cstdio>
    #include<cstring>
    
    int main(){
        int i , num , maxnum , minnum ;
        char name[20] , maxname[20]  , minname[20];
        int score , maxscore ,minscore ;
        maxscore = -1 ;
        minscore = 101 ;
        for(i=1;i<=100;i++){
            scanf("%d%s%d",&num,&name,&score);
            if(score>maxscore){
                maxscore = score ;
                maxnum = num ;
                strcpy(maxname,name);
            }
            if(score<minscore){
                minscore = score;
                minnum = num ;
                strcpy(minname,name);
            }
        }
    
    printf("%d %s %d
    ",minnum,minname,minscore);
    printf("%d %s %d
    ",maxname,maxname,maxscore);
        
    return 0 ;
    }

    在实际应用中,有不少应用问题如果只采用已学的变量和数组作为数据结构显得很不方便。
      1)变量过多,同一学生的各个数据无联系,没有整体概念,不便管理
      2)操作不便(如更新过程)
    显然,选用一种能把一个学生的数据构造成一个整体的构造型数据结构很合适,但不能用数组

      对于这种情况,可以将一个学生的数据定义为一个结构体类型:

        struct student  //类型名
        {
            // 成员表
            int num ;
            char name[20] ;
            int score ;
        }; // 定义了一个结构体类型,它包含三个成员

    # 定义结构体类型变量
    前面定义的结构体类型只是一种 "模型" ,还必须定义结构体变量后才能存放数据
    # 定义结构体变量有三种方法:
    1.先定义结构体类型,再定义结构体变量,定义结构体类型后
    struct student st,stmax ,stmin ;
    类型符 变量名
    定义了三个结构体变量,每个变量包含三个成员,每个成员可存放一个学生的数据

    2.在定义结构体类型的同时定义结构变量
    struct student //类型名
    {
    // 成员表
    int num ;
    char name[20] ;
    int score ;
    }st,stmax,stmin;

    3.直接定义结构体类型变量,不出现类型名
    struct {
    // 成员表
    int num ;
    char name[20] ;
    int score ;
    }st,stmax,stmin;

    说明:
    1 类型与变量不同,只对变量分配空间与操作
    2 对成员可以单独使用,相当于普通变量
    3 成员也可以是一个结构体变量
    str date{
    int month ;
    int day ;
    int year ;
    };
    struct student{
    int num ;
    char name[20] ;
    struct date birthday ; // 函数调用
    }st1,st2;

    4 成员名可以与程序中的变量名相同,两者代表不同的对象

    # 结构体变量的引用
    可以对成员单独使用,形式为
    结构体变量名.成员们 (. 成员运算符)

    结构体算法实现

    #include<cstring>
    #include<stdio>
    struct student{
        int num ;
        char name[20] ;
        int score ;
    };
    
    int main(){
        int i ;
        struct student st ,stmax , stmin ;
        stmax.score = 0 ;
        stmin.score = 100 ;
        for (i=1;i<=100;i++){
            scanf("%d%s%d",&st.num,&st.namespace,&st.score);  // 初始化过程 
            if(st.score > stmax.score){   //最大值
                stmax = st ;
            }
            if(st.score < stmin.score){   //最小值
                stmin = st ;
            }
        }
    
        printf("
     %5d%15s%5d",stmax.num,stmax.namespace.stmax.score);
        printf("
     %5d%15s%5d",stmin.num,stmin.namespace.stmin.score);
    
        return 0 ;
    }

    结构体数组
    可以定义结构体数组来存放批量数据
    结构体数组的定义
    struct student{
    int num ;
    char name[20] ;
    int score ;
    };
    struct student a[100];
    定义 a 数组 , 可以存储 100 个学生数据
    a 数组的每个元素又是一个结构体变量

    练习
    输入100 个学生的学号,姓名,性别(0男1女),数学成绩,语文成绩
    英语成绩,然后计算语数外平均分 按从高分到低分的顺序排序后输出
    输出格式:姓名,性别,数学,语文,英语,平均成绩
    要求:
    写两个程序,一个不用结构体,一个用结构体

  • 相关阅读:
    你认为做好测试计划工作的关键是什么?
    一套完整的测试应该由哪些阶段组成?
    你对测试最大的兴趣在哪里?为什么?
    如何测试一个纸杯?
    黑盒测试和白盒测试各自的优缺点
    在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    测试人员在软件开发过程中的任务
    软件测试分为几个阶段? 各阶段的测试策略和要求是什么?
    软件测试的策略
    软件产品质量特性
  • 原文地址:https://www.cnblogs.com/Skypeduty1225/p/15003699.html
Copyright © 2011-2022 走看看