C++基础实例-结构类型(3)

struct

#if 0
#include
using namespace std;
main()
{
    //定义结构类型
    struct    books
    {
    char   title[20];
    char   author[15];
    int    pages;
    float  price;
    } ;
    
    //声明结构变量
    struct books Zbk={"VC++ ","Xc",295,35.5}; 
    books Wbk;  

    //对结构变量的输出
    cout<<"Zbk:"<

struct数组

#if 0
#include
using namespace std;
main()
{
    int i;
    //定义结构类型 
    struct student {
           int  num;
           char  name[10];
           float maths;
           float physics;
           float chemistry;
           double  total;
    };

     //声明结构数组st
     student st[3];

     //从键盘上为结构数组输入值 
     cout<<"    num  name     maths physics chemistry "<>st[i].num;
        cin>>st[i].name;
        cin>>st[i].maths;
        cin>>st[i].physics;
        cin>>st[i].chemistry;
     }

    //计算每个学生的总成绩
    for (i=0;i<3;i++)
         st[i].total=st[i].maths+st[i].physics+st[i].chemistry;

    //输出结构数组各元素的值 
    for (i=0;i<3;i++)
    {
        cout<<"st["<

struct指针

#if 0
/*结构体指针*/
#include
using namespace std;
main()
{
    //定义结构类型
    struct human {
       char name[10];
       int sex;
       int age;
    };

    //声明结构变量和结构指针变量,并初始化
    struct human x={"XieCh",1,21},*p=NULL;

    //结构指针变量指向对象
    p=&x;

    //显示结构变量的值
    cout<<"x.name="<name="<name<sex="<sex<age="<age<>(*p).name;
    cout<<"sex:";
    cin>>(*p).sex;
    cout<<"age:";
    cin>>(*p).age;

    //显示结构变量的值
    cout<<"x.name="<#if 0
#include
using namespace std;
main()
{
    //定义结构类型
    struct human {
       char name[10];
       int sex;
       int age;
       };

    //声明结构变量和结构指针,并初始化
    struct human x={"XieCh",1,21},*p=&x;
 
    //利用结构指针显示结构中的数据
    cout<<"(*p).name="<<(*p).name<name=";
    cin>>p->name;
    cout<<"p->sex=";
    cin>>p->sex;
    cout<<"p->age=";
    cin>>p->age;
    cout<<"-------------------------"<name="<name<sex="<sex<age="<age<#if 0
#include
using namespace std;
main()
{
    //定义结构类型
    struct human {
       char name[10];
       int sex;
       int age;
    };

    //声明结构数组和结构指针变量,并初始化
    human x[]={{"WeiPing",1,30},{"LiHua",1,25},{"LiuMin",0,23}},*p=NULL;

    //用下标变量的输出结构数组的元素
    for (int i=0;i<3;i++)
    {
        cout<name<<'\t';
        cout<sex<<'\t';
        cout<age<

结构体指针

#if 0
/*结构体指针*/
#include
using namespace std;
main()
{
    //定义一个包含指针成员的结构类型
    struct test {
       char *str;
       int  *ip;
    }x;

    //使用结构变量x中的整型指针ip
    x.ip=new int;    //分配1个单元
    *(x.ip)=100;
    cout<<"x.ip:"<

结构体嵌入

#if 0
/*结构体嵌入*/
#include
using namespace std;
main()
{
    //定义date结构
    struct date
    {
       int year;
       int month;
       int day;
    };

    //定义baby结构
    struct baby {
        int    num;
        float   weight;
        date   birthday;   // date为结构类型 
    }; 
	
    //声明baby结构变量并初始化
    baby b1={10001,10,{2011,06,16}};

    //下列是baby结构变量b1的引用。
    cout<<"b1.num="<#if 0
/*递归*/
#include
using namespace std;
main()
{
    //定义名为list的递归结构  
    struct list {
          char         name[10];
          int          sex;
          int          age;
          list         *next;   //成员next为指向其自身结构的指针
    };

    //使用递归结构变量
    list L1={"XieCh",1,35.5,NULL};
    cout<<"L1:"<

链表与结构体

#if 0
/*链表与结构体*/
#include
using namespace std;
main()
{
    int i;
    //定义名为student的递归结构 
    struct  student {
           char name[10];
           int  math;
           int  computer;
           float sum;
           student *next;    //next成员是指向自身的结构指针 
    };

    //用student声明3个结构指针变量
    struct student *head,*tail,*temp;  	

    //申请第1块数据,并设置各结构指针的初值
    temp=new struct student;    //申请内存 
    head=temp;   // 头指针 
    tail=head;    // 尾指针 

    //循环为链表输入数据
    cout<<"\tname    Math   Computer"<>temp->name;
        if (temp->name[0]!='*')
        {
            cin>>temp->math>>temp->computer;
            temp->sum=temp->math+temp->computer;
            temp->next=NULL;
            tail=temp;      //设置链表尾指针 
         }
         else
         {
          // 以下是输入结束处理 
            delete temp;
            tail->next=NULL;
            break;
         }
        //为下一个学生申请内存
        temp->next=new struct student; 
        temp=temp->next;    // 使处理指针temp指向新内存块
    }

    //将链表数据从头到尾打印出来
    cout<<"--------------------"<name<<","<math<<",";
           cout<computer<<","<sum<next;
     }
}
#endif

结构体递归

#if 0
/*结构体递归*/
#include
using namespace std;
main()
{
    int i;
    //定义名为student的递归结构 
    struct  student {
           char name[10];
           int  math;
           int  computer;
           float sum;
           student *forw;    //forw成员是前指针 
           student *next;    //next成员是后指针
    };

    //用student声明3个结构指针变量
    struct student *head,*tail,*temp;

    //申请第1块数据,并设置各结构指针的初值
    temp=new struct student;    //申请内存 
    head=temp;      // 头指针 
    tail=head;      // 尾指针 
    head->forw=NULL;

    //循环为链表记录输入数据
    cout<<"\tname    Math   Computer"<>temp->name;
        if (temp->name[0]!='*')
        {
            cin>>temp->math>>temp->computer;
            temp->sum=temp->math+temp->computer;
            temp->next=NULL;
            tail=temp;      //设置链表尾指针 
         }
         else
         {
          // 以下是输入结束处理 
            delete temp;
            tail->next=NULL;
            break;
         }
        //为下一个学生申请内存
        temp->next=new struct student; 
        temp->next->forw=temp;   //设置前指针
        temp=temp->next;         //使处理指针temp指向新内存块
    }

    // 将链表数据从头到尾打印出来
    cout<<"head------>tail:"<name<<","<math<<",";
           cout<computer<<","<sum<next;
     }

    // 将链表数据从尾到头打印出来
    cout<<"tail------>head:"<name<<","<math<<",";
           cout<computer<<","<sum<forw;
     }
}
#endif

union

#if 0
/*联合体-共用体*/
#include
using namespace std;
main()
{
    int i;
    //定义联合类型
    union utag  {
          char    c;
          int     k;
          float   x;
    };

    //声明联合变量
    union utag u;

    // 使用联合变量中的字符型成员 
    u.c='*';
    cout<<"u.c="<#if 0
/*结构体sizeof*/
#include
using namespace std;
main()  
{
    //定义结构类型,并为声明的结构变量赋初值
    struct s_tag {
           short    i;
           float x;
    } sx={100,3.1416};

    //定义联合类型,并为声明的联合变量赋初值
    union   u_tag  {
            short    i;
            float x;
    } ux={1000};

    //输出结构类型和结构变量的有关信息
    cout<<"sizeof(struct s_tag)="<#if 0
/*typedef*/
#include
using namespace std;
main()
{
    //自定义类型 
    typedef  int  ARRAY_INT[50];
    int i;
    ARRAY_INT a;    //用自定义类型声明数组变量a 

    //以下为数组a赋值,并打印  
    for (i=0;i<50;i++) {
       if (i%5==0)       //每10个数换一次行 
         cout<

综合

#if 0
/*sizeof综合*/
#include
using namespace std;
//定义结构类型
struct student
{
    int   num;
    char  name[20];
    float grade;
};
void main(void)
{
    //声明数组
    int i,size;
    char str[]="This is a string.";
    int int_values[] = {51, 23, 2, 44, 45,0,11}; 
    float float_values[] = {15.1, 13.3, 22.2, 10.4, 1.5};  
    student st_arr[]={101,"WangLin",92,102,"LiPing",85,103,"ZhaoMin",88};
		
    //显示char类型数组元素及其大小
    size=sizeof(str) / sizeof(char);
    cout<<"Number of elements in str: ";
    cout<

你可能感兴趣的:(The,C++,Programming,Language,C,And,C++-QT)