C++编程学习笔记 week 4

本文详细介绍了C++中结构体的应用,包括基础定义、数组操作、查询、插入、删除和找最短字符串的方法,提供了丰富的示例进行说明。
摘要由CSDN通过智能技术生成

week 4 C++ 结构体

4.1结构体基础

定义结构体Student,包含三个成员:姓名,学号(字符串),民族。然后定义一个结构体变量Stu,键盘输入Stu的三个成员值并打印输出。

#include<iostream>   
  
using namespace std;   
  
  struct Student   
    {   
  
        char name[5];   
        char I[11];   
            char nation[2];   
    };   //注意“;”
int main()   
{   
    struct Student Stu;   
    cin>>Stu.name;   
    cout<<Stu.name<<endl;   
    cin>>Stu.I;   
    cout<<Stu.I<<endl;   
       
       
    cin>>Stu.nation;   
    cout<<Stu.nation<<endl;   
    return 0;   
  
}

4.2 结构体数组

先定义结构体Student(参见结构体基础内定义),再定义结构体数组变量Stus,Stus有三个元素,分别代表三个学生。按学号大小顺序输出者三个学生。
提示:学号是字符串类型,字符串比较大小可用strcmp函数

#include<iostream>    
#include<string.h>    
#include<stdlib.h>      
using namespace std;      
     
  
int main()      
{      
    struct Student      
{      
          
    char name[20];      
    char I[11];      
    char nation[10];      
};      
    struct Student stu[3],temp;      
         
        
    for(int i=0;i<3;i++)      
    {      
        cin>>stu[i].name>>stu[i].I>>stu[i].nation;   
    }   
    for(int i=0;i<3;i++)    
    {   
        for(int j=i+1;j<4;j++)   
        {   
          
        if(strcmp(stu[i].I,stu[j].I)==1)      //前者大于后者,函数结果大于0
        {      
              
            temp=stu[i];   
            stu[i]=stu[j];   
            stu[j]=temp;   
               
                 
        }    
           
        }   
    }    
    for(int i=0;i<3;i++)    
    {   
        cout<<stu[i].name<<" "<<stu[i].I<<" "<<stu[i].nation<<endl;   
    }      
       
          
          
    return 0;      
          
    }  

4.3 结构体查询

给定具有三个元素的结构体(Student)数组,键盘输入姓名,如果存在该学生,则输出该生学号,否则输出“不存在该姓名学生”.

三个学生信息:
张凌 1305030401 汉
李明 1305030411 汉
王立刚 1305030409 汉

#include<iostream>    
#include<string.h>    
#include<stdlib.h>      
using namespace std;      
     
  
int main()      
{      
    struct Student      
{      
    char name[15];      
    char I[11];      
    char nation[10];      
};      
    struct Student stu[3];     
    strcpy(stu[0].name,"张凌");   
    strcpy(stu[1].name,"李明");   
    strcpy(stu[2].name,"王立刚");   
    strcpy(stu[0].I,"1305030401");   
    strcpy(stu[1].I,"1305030411");   
    strcpy(stu[2].I,"1305030409");   
    strcpy(stu[0].nation,"汉");   
    strcpy(stu[1].nation,"汉");   
    strcpy(stu[2].nation,"汉");   
       
          
    int flag=0;      
    char n[30];    
    cin>>n;   
    for(int i=0;i<3;i++)      
    {      
             
              
              
        if(strcmp(stu[i].name,n)==0)      
        {      
                 
            flag=1;   
            cout<<stu[i].I<<endl;       
        }      
              
    }      
    if(flag==0)      
    {      
        cout<<"不存在该姓名学生"<<endl;      
              
    }      
          
          
    return 0;      
          
    }  



4.4 结构体插入

给定三个元素的结构体(Student)数组,在定义一个结构体(Student)变量,键盘输入该变量信息,并把该变量插入到结构体数组的第二个位置。
给定的三个元素:
张凌 1305030401 汉
李明 1305030411 汉
王立刚 1305030409 汉

#include<iostream>   
using namespace std;   
int main()   
{   
    struct student   
    {   
        char Name[20];   
        char No[11];   
        char Nation[10];   
    };   
    struct student Stus[4];   
    strcpy(Stus[0].Name,"张凌");   
    strcpy(Stus[2].Name,"李明");   
    strcpy(Stus[3].Name,"王立刚");   
    strcpy(Stus[0].No,"1305030401");   
    strcpy(Stus[2].No,"1305030411");   
    strcpy(Stus[3].No,"1305030409");   
    strcpy(Stus[0].Nation,"汉");   
    strcpy(Stus[2].Nation,"汉");   
    strcpy(Stus[3].Nation,"汉");   
    int i;   
    cin>>Stus[1].Name>>Stus[1].No>>Stus[1].Nation; 
    for(i=0;i<4;i++)   
  {   
     printf("%s %s %s\n"  
        ,Stus[i].Name,Stus[i].No,Stus[i].Nation);   
  }   
  return 1;   
}   

4.5结构体删除

定义一个结构体People(两个成员:编号和年龄),给定具有五个元素的结构体数组,键盘输入一个数字1~5,删除相应的元素并输出剩余的四个元素。
五个给定的元素为:
1 34
2 23
3 25
4 28
5 31

#include<iostream>   
using namespace std;   
int main()   
{   
    struct people   
    {   
        int No;   
        int age;   
    };   
    struct people Stus[5];   
    Stus[0].No=1;   
    Stus[1].No=2;   
    Stus[2].No=3;   
    Stus[3].No=4;   
    Stus[4].No=5;   
    Stus[0].age=34;   
    Stus[1].age=23;   
    Stus[2].age=25;   
    Stus[3].age=28;   
    Stus[4].age=31;   
       
    int i,j,m;   
    cin>>m;   
       
    for(i=0;i<5;i++)   
    {   
        if(m==i+1)   
        {   
            for(j=i;j<4;j++)   
            {   
                Stus[j]=Stus[j+1];   
            }   
        }   
    }  

4.6 长度最小字符串 结构体****

从5个字符串中找出长度最小的字符串。

#include "stdio.h"  
#include "string.h"   
int main()   
{   
    char s[5][100];   
    char * p;  
    int c[5];   
    int i,m,a=0;   
    for(i=0;i<5;i++)   
    {   
       scanf("%s",s[i]);   
        c[i]=strlen(s[i]);   
    }   
    m=c[0];   
    for(i=0;i<5;i++)   
    {   
        if(c[i]<m)   
        {   
            m=c[i];   
            a=i;   
        }   
    }   
    p=s[a]; 
    printf("%s\n",p);   
    return 1;   
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值