本文目录一览:
p.a在c语言中是什么意思啊
p 是struct S 类型的结构体,p.a就是p这个结构的成员a,
data[1]也是struct S 类型的结构体, p=data[1];
data[1]={20,200} 所以 p.a=20;执行",++(p.a));结果21
c语言——学生成绩管理系统
#includeiostream
#includeiomanip
#includefstream
#includestring
using namespace std;
#define max 100;
class student
{
public:
student *next;
public:
string name;//姓名
long num;//学号
int x,y,z;//数学,语文,英语
int AA;//总分
void play(){coutname"学生的学号是"num",数学:"x",语文:"y",英语:"z",总分:"AAendl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};
class cla
{
public:
cla()//构造函数
{
stu=0;
sload();
}
~cla()//析构函数
{
student *p;
p=stu;
while(p)
{
p=p-next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //删除
void samend(); //修改
void ssearch(); //查询
void staxis(); //排序
void ssave(); //保存
void sload(); //读取
//排序函数
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //头接点
};
void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;
system("cls");
cout"\n **增加的学生** \n"endl;
cout"请输入学生的(中间用空格间隔) "endl;
cout"姓名 学号 数学成绩 语文成绩 英语成绩:"endl;
cinname1num1x1y1z1;
q=new student(name1,num1,x1,y1,z1);
q-next=0;
q-AA=x1+y1+z1;
if(stu)
{
student *t;
t=stu;
if(t-num==num1)
{
cout"学号已存在,请重新输入"endl;
return;
}
while(t-next)
{
if(t-num==num1)
{
cout"学号已存在,请重新输入"endl;
return;
}
t=t-next;
}
t-next=q;
}
else
{
stu=q;
}
cout"输入完毕"endl;
}
void cla::sremove()//删除
{
system("cls");
int num1;
cout"\n** 删除学生信息 **\n";
cout"请输入想要删除学生的学号:";
cinnum1;
//查找要删除的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
//删除结点
if(p1!=NULL)//若找到结点,则删除
{
p1-play();
cout"确定删除吗?[Y/N]"endl;
char c;cinc;
if(toupper(c)!='Y') return;
if(p1==stu) //若要删除的结点是第一个结点
{
stu=p1-next;
delete p1;
}
else //若要删除的结点是后续结点
{
p2-next=p1-next;
delete p1;
}
cout"找到学号为"num1"的学生,并删除\n";
}
else //未找到结点
cout"未找到想要删除的学生!\n";
}
void cla::samend()//修改
{
system("cls");
long num1;
cout"\n** 修改学生信息 **\n";
cout"输入要修改学生的学号";
cinnum1;
//查找要修改的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
cout"学号是"num1"的学生的信息"endl;
cout"姓名 "p1-name"数学"p1-x"语文"p1-y"英语"p1-zendl;
cout"请输入修改后的信息:姓名 数学成绩 语文成绩 英语成绩"endl;
cinp1-namep1-xp1-yp1-z;
p1-AA=p1-x+p1-y+p1-z;
cout"修改成功"endl;
}
else //未找到接点
cout"未找到!\n";
}
void cla::ssearch()//查询
{
system("cls");
cout"\n** 查询学生信息 **\n"endl;
cout"请输入查询方式:"endl;
cout"1.按学号查询"endl;
cout"2.按姓名查询"endl;
cout"3.返回"endl;
char c; cinc;
switch (c)
{
case '1':
{
long num1;
cout"要查询的学号"endl;
cinnum1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-num==num1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
cout"学号是"num1"的学生的信息"endl;
cout"姓名:"p1-name" 数学:"p1-x" 语文:"p1-y" 英语:"p1-zendl;
cout"查询完毕...";
}
else //未找到接点
cout"未找到!\n";
break;
}
case '2':
{
string name1;
cout"要查询的学生姓名"endl;
cinname1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1-name==name1)
break;
else
{
p2=p1;
p1=p1-next;
}
}
if(p1!=NULL)
{
coutname1"的学生的信息"endl;
cout"学号:"p1-num" 数学:"p1-x" 语文:"p1-y" 英语:"p1-zendl;
cout"查询完毕...";
}
else //未找到接点
cout"未找到!\n";
break;
}
case '3': return;
}
}
void cla::pxh() //按学号排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout"共有"n"条信息..."endl;
int i;
p1=stu;
for(i=1;in;i++)
{
p1=stu;
if (p1-nump1-next-num) // 如果头结点大于第二个的
{
p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1-next-next) //中间的交换
{
p2=p1;
p1=p1-next;
if(p1-nump1-next-num)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交换
}
}
}
p1=stu;
do
{
p1-play();
p1=p1-next;
}while(p1);
}
void cla::psx()//按数学成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout"共有"n"条信息..."endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-xp1-next-x) // 如果头结点大于第二个的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1-next-next) //中间的交换
{ p2=p1;
p1=p1-next;
if(p1-xp1-next-x)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交换
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pyw()//按语文成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout"共有"n"条信息..."endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-yp1-next-y) // 如果头结点大于第二个的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1-next-next) //中间的交换
{ p2=p1;
p1=p1-next;
if(p1-yp1-next-y)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交换
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pyy()//按英语成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout"共有"n"条信息..."endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-zp1-next-z) // 如果头结点大于第二个的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1-next-next) //中间的交换
{ p2=p1;
p1=p1-next;
if(p1-zp1-next-z)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交换
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::pAA()//按总分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1-next)
{ n++; p1=p1-next; }
cout"共有"n"条信息..."endl;
int i;
p1=stu;
for(i=1;in;i++)
{ p1=stu;
if (p1-AAp1-next-AA) // 如果头结点大于第二个的
{ p2=p1-next;
p1-next=p1-next-next;
p2-next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1-next-next) //中间的交换
{ p2=p1;
p1=p1-next;
if(p1-AAp1-next-AA)
{
p2-next=p1-next;
p1-next=p1-next-next;
p2-next-next=p1;
p1=p2-next; //交换
}
}
}
p1=stu;
do
{ p1-play();
p1=p1-next;
}while(p1);
}
void cla::staxis()//排序
{
system("cls");
char c;
cout"请选择以何种方式排序:"endl;
cout"1……以学号排序"endl;
cout"2……以数学成绩排序"endl;
cout"3……以语文成绩排序"endl;
cout"4……以英语成绩排序"endl;
cout"5……以总分排序"endl;
cout"6……返回"endl;
cout"请选择(1-6)"endl;
cinc;
switch (c)
{
case '1':pxh(); break;
case '2':psx(); break;
case '3':pyw(); break;
case '4':pyy(); break;
case '5':pAA(); break;
case '6':return;
}
}
void cla::ssave() //保存到文件
{
system("cls");
char c;
cout"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cinc;
if(toupper(c)!='Y') return;
ofstream tfile("date.txt",ios_base::binary);
student *p=stu;
while(p)// 写入文件
{
tfilep-name"\t"p-num"\t"p-x"\t"p-y"\t"p-z;
tfileendl;
p=p-next;
}
tfile.close();
cout"保存完毕..."endl;
}
void cla::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p-next;
delete p;
p=stu;
}
ifstream tfile("date.txt",ios_base::binary);
string name1;
long num1;
int x1,y1,z1;
tfilename1num1x1y1z1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s-next=0;
s-AA=x1+y1+z1;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2-next) //查找尾结点
{
p2=p2-next;
}
p2-next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfilename1num1x1y1z1;
}
tfile.close();
cout"\n学生信息已经装入...\n";
}
void main()
{
char c;
cla a;
do
{
cout"\n 学 生 成 绩 管 理 系 统 \n";
cout"**************************************\n";
cout" 作者:软件工程06110119:zgjxwl \n";
cout" 1……增加学生 \n";
cout" 2……删除学生 \n";
cout" 3……修改学生 \n";
cout" 4……查询学生信息 \n";
cout" 5……排序 \n";
cout" 6……保存信息 \n";
cout" 7……读取信息 \n";
cout" 8……退出 \n";
cout"**************************************\n";
cout"请选择(1-8):";
cinc;
switch(c)
{
case '1': a.sadd();break;
case '2': a.sremove();break;
case '3': a.samend();break;
case '4': a.ssearch();break;
case '5': a.staxis();break;
case '6': a.ssave();break;
case '7': a.sload();break;
}
}while(c!='8');
}
c语言中,假设pa是一个指针,那么*pa++的作用是什么
*pa++包含两个语句,一*pa=*pa+1, 即pa指向的地址的值加1, 二pa=pa+1,即指针后移一个单位。
C语言里声明是什么意思?
什么是声明:有两重含义,如下:
第一重含义:告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何
从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的.声明可以出
现多次.
第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量
名或对象名.比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预
订,别人再也不允许使用这个座位.其实这个时候你本人并没有坐在这个座位上.这种声
明最典型的例子就是函数参数的声明,例如:
void fun(int i, char c);好,这样一解释,我们可以很清楚的判断:a)是定义;b)是声明.