例题1
#include<iostream>
using namespace std;
struct date
{
int month;
int day;
int year;
};
struct student
{
int num;
char name[20];
struct date birthday;
char addr[30];
};
int main()
{
student stul;
stul.num=1001;
stul.birthday .month=8;
stul.birthday .day=20;
stul.birthday .year =1980;
cout<<stul.num <<" ";
cout<<stul.birthday .month <<" ";
cout<<stul.birthday .day <<" ";
cout<<stul.birthday .year <<endl;
return 0;
}
例题2
#include<iostream>
using namespace std;
int main()
{
struct
{
int num;
int age;
}stu1,stu2;
stu1.num=1001;
stu1.age=20;
stu2=stu1;
cout<<stu2.num<<endl;
cout<<stu2.age<<endl;
return 0;
}
例题3
#include<iostream>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
int main()
{
student stu[3]={{1001,"Liu Jin",75},{1002,"Li Lan ",82},{1003,"Ma Kai",80}};
student temp;
for(int i=1;i<3;i++)
for(int j=0;j<=2-i;j++)
if (stu[j].score<stu[j+1].score)
{
temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;
}
cout<<"Num"<<" Name"<<" Score"<<endl;
for(int k=0;k<3;k++)
cout<<stu[k].num<<" "<<stu[k].name<<" "<<stu[k].score<<endl;
return 0;
}
例题4
#include<iostream>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
int main()
{
student stu[3]={{1001,"Liu Jin",75},{1002,"Li Lan",82},{1003,"Ma Kai",80}};
student * s=stu;
cout<<"Num"<<"\tName"<<"\t\tScore"<<endl;
for(;s<stu+3;s++)
cout<<s->num <<"\t"<<s->name <<"\t\t"<<s->score <<endl;
return 0;
}
例题5
#include<iostream>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
void print(student * ps)
{
cout<<ps->num <<" "<<ps->name <<" "<<ps->score <<endl;
}
int main()
{
student stu[3]={{1001,"Liu Jin",75},{1002,"Li Lan",82},{1003,"Ma Kai",80}};
for (int i=0;i<3;i++)
{
print(&stu[i]);
}
return 0;
}
例题
#include <iostream>
using namespace std;
union pw
{
int i;
char ch[2];
};
int main()
{
cout<<"请输入一个整数,若大于127则退出"<<endl;
pw password;
while(1)
{
cin>>password.i;
if(password.i>127)
break;
cout<<password.i<<"对应的字符为:"<<password.ch<<endl;
}
return 0;
}
例题
#include<iostream>
using namespace std;
int main()
{
enum en{plus,minus,times}op1;
int x,y;
cout<<"请输入俩个数:";
cin>>x>>y;
op1=plus;
while (op1<=times)
{
switch (op1)
{
case plus:cout<<x<<"+"<<y<<"="<<x+y<<endl;break;
case minus:cout<<x<<"-"<<y<<"="<<x-y<<endl;break;
case times:cout<<x<<"*"<<y<<"="<<x*y<<endl;break;
}
int i=(int)op1;
op1=en(++i);
}
return 0;
}
课后习题1
/************有一个结构体变量,内含学生号码、姓名和
三门课程成绩。要求在MAIN函数中给数据赋值,在另一个
函数print中将它们打印出来*********************/
#include <iostream>
using namespace std;
struct student
{
char name[40];
long int num;
int mark[3];
}stu1;
void print(student stu);
int main()
{
cout<<"请输入学生姓名:";
cin>>stu1.name;
cout<<"请输入学生学号:";
cin>>stu1.num;
cout<<"请输入学生的三门成绩:";
cin>>stu1.mark [0]>>stu1.mark [1]>>stu1.mark [2];
print(stu1);
return 0;
}
void print(student stu)
{
cout<<"学生姓名:"<<stu.name<<endl;
cout<<"学生学号:"<<stu.num <<endl;
cout<<"学生三门成绩分别为:"<<stu.mark [0]<<'\t'<<stu.mark [1]
<<" "<<stu.mark [2]<<'\t'<<endl;
}
课后习题2
/**********将上题改成指向结构变量的指针作为实参来实现***********/
#include <iostream>
using namespace std;
struct student
{
char name[40];
long int num;
int mark[3];
};
void print(student *stu);
int main()
{
student stu,*p=&stu;
cout<<"请输入学生姓名:";
cin>>p->name;
cout<<"请输入学生学号:";
cin>>p->num;
cout<<"请输入学生的三门成绩:";
cin>>p->mark[0]>>p->mark [1]>>p->mark [2];
print(p);
return 0;
}
void print(student *stu)
{
cout<<"学生姓名:"<<stu->name <<endl;
cout<<"学生学号:"<<stu->num <<endl;
cout<<"学生三门成绩分别为:"<<stu->mark [0]<<'\t'<<stu->mark [1]<<" "<<stu->mark [2]
<<'\t'<<endl;
}
课后习题3
/************使用共同体的方式将一个整数转换为ASCII码字符*****************/
#include <iostream>
using namespace std;
union change
{
int i;
char ch[2];
}a;
int main()
{
cout<<"请输入一个小于128的整数"<<endl;
while (1)
{
cin>>a.i;
if(a.i>127)
break;
cout<<a.i<<"对应的ASCII值为:"<<a.ch<<endl;
}
return 0;
}
课后习题4
/***********定义一个结构体变量(年月日),计算该日在本年中是第几天(注意闰年)*************/
#include<iostream>
using namespace std;
struct date
{
int year;
int month;
int day;
};
int main()
{
date change;
int sum=0;
cout<<"请输入年份;"<<endl;
cin>>change.year ;
cout<<"请输入月份:"<<endl;
cin>>change.month ;
while (change.month >12)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>change.month ;
}
cout<<"请输入日期:"<<endl;
cin>>change.day;
while(change.day >31)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>change.day ;
}
if (change.year%4==0 && change.month >2 )
sum++;
change.month --;
while(change.month !=0)
{
switch(change.month )
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: sum+=31;break;
case 4:
case 6:
case 9:
case 11: sum+=30;break;
case 2: sum+=28;break;
}
change.month --;
}
sum+=change.day;
cout<<"该日在本年中是第"<<sum<<"天"<<endl;
return 0;
}
建立一个链表,每一个学号包括学号、姓名、性别、成绩,输入一个成绩,如果在链表中节点成绩等入输入的成绩,则将其删除。
#include<iostream>
using namespace std;
struct student
{
int num;
char name[20];
char sex;
float mark;
student *next;
};
int n=0;
student *creat()
{
student *head,*p1,*p2;
head=NULL;
p1=new(student);
p2=p1;
cout<<"请输入学生学号,当学号为0时,停止输入:";
cin>>p1->num;
while(p1->num!=0)
{
n++;
if(n==1)
head=p1;
else
p2->next=p1;
cout<<"请输入学生姓名:";
cin>>p1->name;
cout<<"请输入学生性别:";
cin>>p1->sex;
cout<<"请输入学生成绩:";
cin>>p1->mark;
p2=p1;
cout<<"请输入学生学号,当学号为0时,停止输入:";
p1=new(student);
cin>>p1->num;
}
delete p1;
p2->next=NULL;
return head;
}
void print (student *head)
{
cout<<"学号 姓名 性别 成绩"<<endl;
student *p1;
p1=head;
if(p1==NULL)
return ;
do
{
cout<<p1->num<<'\t'<<p1->name<<'\t'
<<p1->sex<<'\t'<<p1->mark<<endl;
p1=p1->next;
}
while (p1!=NULL);
}
student *del(student *head,int mark)
{
student *p1,*p2;
if(head==NULL)
{
cout<<"list NULL"<<endl;
return head;
}
p1=head;
while(mark!=p1->mark && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(mark==p1->mark)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
n--;
}
else
cout<<mark<<"没有这个分数的学生"<<endl;
return head;
}
int main()
{
student *head=creat();
print(head);
int mark;
cout<<"请输入要删除的成绩:";
cin>>mark;
head=del(head,mark);
cout<<"目前的链表为:"<<endl;
print (head);
return 0;
}